MariaDB- program do pracy z bazami danych. Jest to darmowa aplikacja, która została stworzona jako alternatywa dla licencjonowanego MySQL. Zgodnie z zasadą jego działania jest bardzo podobny do identycznego produktu firmy Oracle. DBMS obsługuje standardowe funkcje i formaty: myisam, blackhole, csv. Obsługuje te same klienckie interfejsy API, protokoły i struktury co MySQL. Wszystkie konektory (PHP, Perl, Python, Java, .NET, MyODBC, Ruby) doskonale współpracują z systemem zarządzania bazą danych. Czas realizacji żądania jest znacznie krótszy niż w przypadku licencjonowanego odpowiednika. Replikacje są szybsze i bezpieczniejsze. Wzmocniony asynchroniczne we/wy dla tabel InnoDB. Obsługuje fragmentowanie pamięci podręcznej dla MyISAM. Pozwala to czterokrotnie przyspieszyć pracę z tabelami MyISAM.



- Umożliwia pracę z różnymi bazami danych.
- Jest to system zarządzania bazą danych do przechowywania danych.
- Obsługuje wiele aplikacji klienckich i interfejsów API.
- Idealnie łączy się z większością złączy.
- Umożliwia tworzenie różnych baz danych do przechowywania informacji.
- Silnik pamięci masowej Aria umożliwia szybsze przetwarzanie złożonych zapytań.
- Obsługuje funkcję "Zabij wszystkie żądania użytkownika".
- Posiada bogaty zestaw ulepszonych funkcji.
— Poprawiono asynchroniczne operacje we/wy dla tabel MyISAM.
- Obsługuje replikację równoległą.
- Posiada wiele zoptymalizowanych parametrów.
- Doskonałe rozwiązanie dla twórców stron internetowych, którzy preferują darmowe oprogramowanie.
- Istnieje wsparcie dla języka rosyjskiego.


- Procesor o częstotliwości taktowania 1200 MHz lub wyższej.
- RAM 256 MB lub więcej.
- Wolne miejsce na dysku twardym od 636 MB.
- Architektura 32-bitowa lub 64-bitowa (x86 lub x64).
- System operacyjny Windows XP, Windows Vista, Windows 7, Windows 8, Windows 10

DBMS: Tabele porównawcze

Nazwa programu Po rosyjsku dystrybucje Instalator Popularność Rozmiar Indeks
★ ★ ★ ★ ★ 286,7 MB 100
★ ★ ★ ★ ★ 0,5 Mb 97

Po półtora roku rozwoju i pięciu wersjach wstępnych powstało pierwsze stabilne wydanie nowej gałęzi MariaDB 10.2 DBMS, w ramach której rozwijana jest gałąź MySQL zachowująca wstecznie kompatybilny i charakteryzuje się integracją dodatkowych silników pamięci masowej i zaawansowanych funkcji. Rozwój MariaDB jest nadzorowany przez niezależną Fundację MariaDB, zgodnie z całkowicie otwartym i przejrzystym procesem rozwoju niezależnym od poszczególnych dostawców. MariaDB jest dostarczana zamiast MySQL w wielu dystrybucjach Linuksa (RHEL 7, SUSE 12, Fedora, openSUSE, Slackware, OpenMandriva, ROSA, Arch Linux, Debian 9) i została przyjęta przez duże projekty, takie jak Wikipedia, Google Cloud SQL i Nimbuzz.

Kluczowe ulepszenia w MariaDB 10.2:

  • Dodano eksperymentalne wsparcie dla silnika pamięci masowej MyRocks, opracowanego przez Facebooka w oparciu o silnik pamięci masowej RocksDB zoptymalizowany pod kątem Flasha. Magazyn MyRocks wykorzystuje strony danych o zmiennych rozmiarach, aby uniknąć wyrównania na ustalonych granicach bloku, oraz model przechowywania danych Log Structured Merge Trees, który umożliwia tylko wypełnianie (czyszczenie odbywa się przez garbage collector). W procesie wykonywania zapytania ilość sekwencyjnych operacji odczytu/zapisu została kilkukrotnie zmniejszona, co doprowadziło do wzrostu wydajności w porównaniu do InnoDB o 20-30% na SDD i do 6 razy na HDD pod obciążeniem dużą liczbą losowych operacji zapisu. Ponadto MyRocks pozwala zmniejszyć rozmiar bazy danych o 50% w porównaniu do skompresowanej pamięci masowej InnoDB i 3,5 razy w porównaniu z InnoDB bez kompresji. Wśród mankamentów MyRocks można zauważyć brak obsługi kluczy obcych i indeksów pełnotekstowych;
  • Dodano wsparcie dla funkcji okien zdefiniowanych przez słowo kluczowe OVER i umożliwiają wykonanie obliczeń na zbiorze wierszy skojarzonych z bieżącym wierszem. Podobnie jak funkcje agregujące, funkcje okna umożliwiają dostęp do innych wierszy podczas przetwarzania wyniku zapytania, ale w przeciwieństwie do funkcji agregujących nie grupują wyniku w pojedynczy wiersz;
  • Obsługa wspólnych wyrażeń tabelowych (wyrażenie "Z") i rekurencyjnych wspólnych wyrażeń tabel ("Z REKURSYWNYMI"). Klauzula WITH może służyć do definiowania podzapytań jako lokalnych tabel tymczasowych, do których można wielokrotnie odwoływać się w zapytaniu. "Z REKURSYWNYM" umożliwia dostęp do własnego wyniku, na przykład możesz zorganizować przechodzenie po drzewie w trakcie wykonywania zapytania;
  • Dodano instrukcję "CONSTRAINT... CHECK" w bloku "CREATE TABLE" w celu ustawienia ograniczeń kolumn;
  • Zaimplementowano możliwość określania wyrażeń w bloku DEFAULT, na przykład „b int DEFAULT (a+1)”. Zapewniono obsługę określania wartości DEFAULT dla pól BLOB i TEXT;
  • Magazyn InnoDB został zaktualizowany do wydania z MySQL 5.7.18 i jest domyślnie włączony (wcześniej domyślnie oferowany był fork od InnoDB - XtraDB, którego znaczenie zaginęło po zaimplementowaniu przez InnoDB większości głównych funkcji XtraDB). InnoDB dodał wsparcie dla indeksów przestrzennych (indeks przestrzenny);
  • Dodano instrukcję "SHOW CREATE USER" pokazującą pełną instrukcję "CREATE USER" użytą do utworzenia określonego użytkownika;
  • W przypadku wyrażenia „CREATE USER” zaimplementowano opcje ograniczające zużycie zasobów i konfigurowanie tls/ssl. Na przykład możesz teraz ograniczyć maksymalną liczbę żądań lub połączeń na godzinę;
  • Wprowadzono nowe oświadczenie „ALTER USER”, aby umożliwić wprowadzanie zmian w: rachunek istniejący użytkownik;
  • Usunięto wiele ograniczeń dotyczących wirtualnych kolumn obliczeniowych;
  • Dodano obsługę instrukcji „EXECUTE IMMEDIATE” w celu uruchomienia dynamicznej instrukcji SQL tworzonej w locie;
  • Dodano możliwość używania większości wyrażeń do instrukcji PREPARE;
  • Dodano funkcje do pracy z danymi w formacie JSON;
  • Dodano wtyczkę uwierzytelniającą, która używa algorytmu ed25519 do przechowywania haseł;
  • Wtyczka do odszyfrowywania kluczy używanych w usłudze zarządzania kluczami Amazon Web Services (AWS) (KMS) została dodana do kompilacji dla systemów Windows, CentOS, RHEL i Fedora w celu ich późniejszego wykorzystania do szyfrowania danych w bazie danych;
  • Teraz możesz powiązać kilka różnych wyzwalaczy z jednym zdarzeniem;
  • Dodano obsługę opóźnionej replikacji, w której stan serwera podrzędnego pozostaje w tyle za serwerem głównym przez określony czas;
  • Implementacja wyrażenia ANALYZE TABLE została przeprojektowana, która teraz nie blokuje tabeli podczas zbierania statystyk;
  • Biblioteka wsrep służąca do organizowania synchronicznej replikacji Galera z wieloma wzorcami (aktywny-aktywny) została zaktualizowana do wersji 25.3.20;
  • Dostarczone opakowanie dla Ubuntu 17.04;
  • Dodano opcję "--add-drop-trigger" do mysqldump, odtwarzającą funkcjonalność MySQL 5.6 w celu dodania wyrażenia do zrzutu SQL w celu upuszczenia wyzwalacza przed jego utworzeniem;
  • Dodano skrypt mysqlbinlog do organizowania ciągłej kopii zapasowej dziennika binarnego;
  • Dodano wsparcie dla OpenSSL 1.1 i LibreSSL;
  • Dodano zmienne innodb_deadlock_detect i innodb_stats_include_delete_marked, aby wyłączyć system wykrywania zakleszczeń i wziąć pod uwagę rekordy oznaczone jako usunięte podczas obliczania statystyk;
  • Dodano zmienną read_binlog_speed_limit, która określa limit prędkości, z jaką serwer slave odczytuje log binarny serwera master;
  • Stara biblioteka klienta na licencji GPL została usunięta i zastąpiona nową na licencji LGPL.

Od autora: system zarządzania bazą danych stał się integralną częścią rozwoju dynamicznego produktu internetowego. Z jego pomocą możesz usystematyzować całą gamę potrzebnych plików. Wszystko to jest potrzebne, aby szybki dostęp oraz optymalizacji aplikacji lub strony internetowej. Ale pełne opanowanie wszystkiego, nawet tych najbardziej popularnych, zajmie dekady. Należy określić, którego będziesz używać, studiować i pompować swoje umiejętności. Najpopularniejszym porównaniem jest MariaDB vs MySQL. Skupimy się na nich dzisiaj. Nie zapominajmy o produktach, które dopiero zyskują na popularności, ale już mają znaczną przewagę konkurencyjną.

System relacyjny

Zanim wynaleziono takie rozwiązania, nie było mowy o tworzeniu produktów masowych. Nawet te maszyny, które miały dużą ilość fizycznego i pamięć o dostępie swobodnym, nie można przetworzyć duże zbiory danych, jeśli była przechowywana w sposób stosunkowo chaotyczny – w postaci plików. Na początku lat osiemdziesiątych wydano pierwszy RDBMS, którego twórcami byli IBM.

Na pierwszy rzut oka tworzenie bazy danych wydaje się bardzo trywialnym zadaniem. Zewnętrznie wszystko wygląda prosto, jak duża tabela, w której różne rodzaje informacji są umieszczone w swoich kolumnach. W rzeczywistości wynalazek ten został poprzedzony licznymi dyskusjami matematycznymi i próbami rozwoju. Nie chodziło o stworzenie prostej bazy danych, ale taką, w której zmienne będą od siebie zależeć. Najdokładniejszy opis przyszłej bazy danych podał dr Codd, który stworzył 12 reguł relacyjnej bazy danych. Nawiasem mówiąc, jest ich 13. Są one nadal używane do tworzenia relacyjnej bazy danych.

System zarządzania relacyjnymi bazami danych nie powinien wykorzystywać innych metod zarządzania niż relacyjne. Wszystko to może wydawać się proste tylko tym, którzy rozumieją pojęcia matematyczne, przynajmniej na poziomie ideologicznym. Musi istnieć relacja relacyjna między każdą atomową jednostką danych, która jest znacznie lepsza niż tylko pliki rozproszone w fizycznej pamięci masowej.

JavaScript. Szybki start

Jak powiedzieliśmy, DBMS jest tabelą, a system nie może mieć innej struktury. Ale dane w tabeli mogą być bardzo inny rodzaj. Niektóre DBMS obsługują nie tak wiele typów, niektóre nawet wprowadzają nowe, ponieważ Technologie informacyjne. Są to wartości logiczne, łańcuchy, dane zmiennoprzecinkowe i wiele innych. Wszystkie te dane są ze sobą powiązane zgodnie z modelem relacyjnym.

Jednak w celu zapisania danych w łańcuchu należy nadać mu typ danych. Wykonujesz bardzo podobną procedurę z komórkami w programie Excel i podobnych programach. Są oczywiście wyjątki od tych reguł, ale to temat na całą książkę, a nie nasze porównanie baz danych.

Jeśli chodzi o strony internetowe i aplikacje, komórki zawierają dane o użytkownikach zasobu, samej treści, produktach i wszystkim innym. Celem bazy danych jest tu niezwłoczne dostarczenie tych informacji na żądanie użytkownika: skryptu serwera, w zamian za skrypt klienta.

Zalety i wady DBMS

Zgadzam się, gdyby DBMS miał więcej wad niż zalet, nikt nie używałby ich tak aktywnie. Jeśli dokonamy porównania system plików a zbudowana na nim witryna, przekonasz się, o ile sprawniej i wydajniej działa system zarządzania bazą danych. Dlatego zaczniemy od tych punktów, nad którymi wszystkie systemy bez wyjątku będą musiały pracować, niech to będzie MariaDB lub MySQL.

Wśród często omawianych niedociągnięć nowoczesne systemy zarządzania bazami danych:

niełatwe do opanowania. Aby pracować z Photoshopem, musisz znać podstawowe narzędzia tego oprogramowania i nauczyć się z nich korzystać. Nie trzeba rozumieć, jak działa sam program. Tego nie można powiedzieć o DBMS. Zrozumienie działania MySQL oznacza zrozumienie baz danych. Jeśli próbujesz podążać za wzorcem, najprawdopodobniej rozwój się nie powiedzie. Nie wiadomo, co jest lepsze: nie rozumieć DBMS w zasadzie, czy rozumieć go niepoprawnie;

Cena £. Sam system zarządzania bazą danych może nie kosztować dużo, ale utrzymanie bazy danych, zakup oprogramowania firm trzecich i inne. Nawet umieść obszerną bazę danych na dobry hosting kosztuje.

waga. Same pliki dla wysoce funkcjonalnej aplikacji będą dużo ważyć. A jeśli opakujesz je w bazę danych, to wolumen znacznie wzrośnie, ponieważ teraz pliki mają pewne funkcje, są w logicznym połączeniu i są wywoływane przez skrypty. Wszystko to kosztuje nie tylko pieniądze, ale także pamięć na serwerze. Jest to szczególnie widoczne, jeśli serwer jest Komputer osobisty deweloper.

scentralizowane rozmieszczenie. Tylko w ostatnie lata programiści zaczęli używać rozproszonego rejestru do przechowywania plików. Gdy pliki znajdują się w tej samej bazie danych, są podatne na ataki.

Na szczęście większość z tych niedociągnięć pokrywa zalety DBMS. Jeśli zapytasz programistów, co jest lepsze: pliki czy DBMS, odpowiedź będzie oczywista. System otwiera wiele możliwości, które nie są dostępne dla żadnego systemu plików.

Po pierwsze, jest to oszczędzanie pamięci. Chociaż sam DBMS zajmuje określone miejsce, nie pozwala na powielanie zbędnych informacji. Bez nadmiarowości, bez duplikatów plików. Jednocześnie w ten sposób przechowywane są informacje, które powinny być przechowywane w nadmiarze. Jak powiedzieliśmy, jest to złożony model matematyczny, który jest trudny do zrozumienia dla zwykłego programisty.

Ważne jest, aby DBMS unikał podwójnych prawd. System samodzielnie wybiera elementy, które dostarczają informacji tego samego rodzaju i dba o to, aby nie były ze sobą sprzeczne. Okazuje się, że przy tej samej objętości produkt otrzymuje znacznie większą ilość informacji.

Systemy zarządzania bazami danych odgrywają ważną rolę we wspólnym rozwoju. Dość trudno jest zapewnić grupowy dostęp do drzewa plików, z zachowaniem wszelkich środków ostrożności. Ale możesz zapewnić autoryzowany dostęp do DBMS ograniczonemu kręgowi osób, bez utraty systemu bezpieczeństwa.

JavaScript. Szybki start

Poznaj podstawy JavaScript z praktycznym przykładem budowania aplikacji internetowej

Przy okazji, o bezpiecznym przechowywaniu. Dziś trudno jest wdrożyć przechowywanie danych lepiej niż w nowoczesnym DBMS. Wdrożenie DBA pozwala określić niezbędne środki bezpieczeństwa: co może być lepsze? Ponadto codziennie udostępniane są nowe narzędzia do ochrony baz danych. Dostęp odbywa się zazwyczaj poprzez formę odkurzania, ale przy wystarczających umiejętnościach można wdrożyć wszystko, od antropometrii po uwierzytelnianie dwuskładnikowe. Dotyczy to zwłaszcza systemu DBMS o otwartym kodzie źródłowym, którym jest MariaDB (więcej o tym później).

Trudno wyobrazić sobie coś lepszego w zakresie tworzenia kopii zapasowych niż systemy zarządzania bazami danych. Jeśli przechowujesz aplikację w plikach, bezpieczeństwo danych leży w Twoich rękach. Jesteś zmuszony zadbać o tworzenie kopii zapasowych i niezbędnych kopii na czas. DBMS może to robić w określonych odstępach czasu i przesyłać informacje do zewnętrznych nośników lub do chmury.

MySQL: zasłużony sukces

Zdecydowanie jest to najpopularniejszy ze wszystkich istniejących DBMS. Nie tylko aplikacje internetowe i złożone oprogramowanie: księgowanie materiałów w bibliotece Twojego miasta jest najprawdopodobniej realizowane przez MySQL lub MSSQL. Funkcjonalność tego systemu wymusza na konkurentach wymyślanie coraz to nowych rozwiązań. Ale sami programiści nie pozostają daleko w tyle: Ostatnia wersja Oprogramowanie zostało właśnie wydane. Od ponad dwudziestu lat nie przerywają swojej cykliczności.

Wcześniej ten rozwój był własnością firmy Sun Microsystems, która dała nam Javę i wiele innych narzędzi programistycznych. W 2010 roku wszystkie produkty wraz z MySQL zostały przeniesione do Oracle. Utrzymuje DBMS do dnia dzisiejszego.

vSystem został pierwotnie opracowany przez firmę o tej samej nazwie w 1995 roku. Twórcy wykorzystali najszybsze języki programowania: C, C++ i HTML. Dzięki temu programiści mają do dyspozycji stabilny i szybki DBMS ze stałym wsparciem. Dziś MySQL jest częścią tak zwanych „pakietów dżentelmeńskich”, które składają się z serwera, bazy danych i skryptowego języka programowania.

Użyteczność można nazwać wyraźną przewagą MySQL nad konkurencją. Jak zawsze, im popularniejsze oprogramowanie, tym łatwiej z nim pracować. Wszystkie błędy są szybko znajdowane, tak samo szybko i naprawiane. Nie zapominaj, że jest to oprogramowanie dla programistów i deweloperów, które dzięki społeczności szybko się rozwija. Cały czas pojawiają się nowe wtyczki różne rozszerzenia dla MySQL.

Instalacja MySQL jest niezwykle prosta. Dzięki obecności GUI - GUI użytkownik, to zamienia się w normalna instalacja NA. To samo dotyczy instalacji dodatków do DBMS.

Nie sposób nie wspomnieć, że MySQL jest jednym z najbardziej wieloplatformowych DBMS. Czuć rękę Suna, dla którego uruchomienie oprogramowania „przynajmniej na kalkulatorze” było priorytetem. Co powiedzieć o skalowalności: prawie wszystkie największe zasoby, z którymi pracujesz w sieci, są oparte na MySQL. Chociaż jest ich więcej profesjonalne opcje, na przykład PostgreSQL, o którym nie zapomnieliśmy.

„Maria” najlepsza w DBMS

Podobnie jak wszystkie projekty open-source, MySQL miał udany fork, który nazwano MariaDB. Zarówno macierzysty DBMS, jak i jego odgałęzienie noszą imiona córek twórcy: Mu i Marii. Ten system jest kiedyś nazywany alternatywą dla MySQL, ale jest to zasadniczo błędne stwierdzenie. Chociaż debata o tym, która jest lepsza, Maria czy My wciąż trwa.

Celem programistów Marii było stworzenie produktu w pełni kompatybilnego z MySQL, ale znacznie ulepszonego. Na przykład silnikiem przechowywania danych MySQL był MyISAM. W Marii jest to Aria, która dała DBMS większą wydajność w porównaniu z głównym projektem. I chociaż MariaDB jest oparta na MySQL, najnowsze wersje zawierają nie więcej niż 25% oryginalnego kodu.

Maria może pochwalić się lepszą ogólną wydajnością. Dotyczy to zwłaszcza konwersji postaci. Przy dużych ilościach informacji współczynnik sięga ponad 2%. Kod debugowania jest również zoptymalizowany w porównaniu do MySQL. Ogólnie rzecz biorąc, twórcy zauważają prędkość maksymalna rozwoju niż „rodzic” mógł wydać. Społeczność stojąca za MariaDB obiecuje jeszcze więcej ulepszeń.

Ponadto sam użytkownik może usprawnić i zoptymalizować pracę Marii. To, co odróżnia ten DBMS od wszystkich innych, to pełnoprawne open-source: żadnych zamkniętych elementów ani modułów, wszystko jest dostępne. Możesz bawić się kodem w nieskończoność, a także sugerować zmiany w społeczności, która opracowuje MariaDB.

Wygraj roszczenie z Postgres

PostgreSQL to kolejny system zarządzania bazami danych, tylko nie relacyjny, ale obiektowo-relacyjny. Oznacza to, że użytkownik może sam tworzyć obiekty do operacji, które mogą zawierać różne dane. Jest całkowicie darmowy i najbardziej elastyczny. Niektórzy programiści nazywają PostgreSQL najbardziej profesjonalnym rozwiązaniem na rynku. Ten DBMS pochodzi z projektu uniwersyteckiego non-profit utworzonego w Berkeley o nazwie Postgres. System ten był rozwijany przez długie osiem lat i jest obsługiwany do dziś.

Jak to z takimi produktami bywa, okazało się, że „przez programistów dla programistów” – niesamowicie funkcjonalny, ale zbyt trudny do opanowania dla przeciętnego programisty. Początkowo DBMS miał nawet własny język zapytań, ale później ten pomysł został porzucony, pozostawiając banalną „kontynuację”. Pomimo entuzjazmu niezależnych programistów, PostgreSQL nie jest tak dobry, jak lubią go nazywać. Do tej pory problematyczne obszary można znaleźć w kodzie źródłowym.

Pod względem skalowalności PostgreSQL nie ustępuje MySQL i MariaDB. W oparciu o to oprogramowanie budowane są projekty masowego przetwarzania Big Data, ponieważ jego stabilność jest zaufana przez programistów. Kilka opcji interfejsu umożliwia personalizację produktu.

Ale PostgreSQL wciąż jest daleki od bycia produktem masowym. Faktem jest, że ten system jest zbyt skomplikowany dla prostego programisty. Nawet jeśli zbierzesz dokumentację, nie uzyskasz odpowiedzi na wszystkie pytania, w tym te najbardziej logiczne. Myli się również szybkość wykonywania zapytań w PostgreSQL.

Ten DBMS doskonale nadaje się do rozwiązań dla przedsiębiorstw. Np. baza danych dla firmy IT, gdzie każdy z programistów może zadbać o jego obsługę. Co więcej, PostgreSQL jest całkowicie darmowy.

To wszystko, co mamy. Pamiętaj, że w tak skomplikowanych decyzjach jak DBMS trudno jest wskazać lidera. Pod względem użytkowania jest to MySQL, pod względem rozszerzalności, MariaDB i PostgreSQL. Gdy tylko otrzymamy produkt, który stanie się panaceum na wszystkie przypadki, na pewno Ci o tym opowiemy.

JavaScript. Szybki start

Poznaj podstawy JavaScript z praktycznym przykładem budowania aplikacji internetowej

A teraz jest wybór DBMS do przechowywania podstawowych danych. Rozpocząłem programowanie na MySQL, ale teraz nie jestem pewien, który wybrać. Przejście do innego DBMS na tym etapie nie będzie dla mnie problemem (używam PDO). daleko od jasnego zrozumienia, czym są „duże obciążenia” dla DBMS. Tyle, że według moich obliczeń za około rok podstawa będzie bardzo ciężka (patrz niżej)

Główny wybór to MySQL, PostgreSQL, MariaDB. Możliwe, ale nie zalecane Microsoft SQL Serwer na Windows Azure

Sytuacja jest taka:

  1. Do bazy danych nie ma skomplikowanych zapytań. Maksymalna JOIN dwóch stołów
  2. B o Większość próśb jest przeczytana
  3. Jest jedna najważniejsza i "główna" tabela (struktura tabeli znajduje się poniżej pod spojlerem). Tablica będzie rosła o około 10-30 tysięcy rekordów dziennie. Zapisywanie danych do tej tabeli jest najważniejsze!
  4. B o Większość żądań odczytu będzie kierowana do tabeli „master”. Ta tabela będzie przeszukiwana według dowolnego pola (w niezwykle rzadkich przypadkach ~0,5% - przez kilka pól jednocześnie). Poszukiwania należy przeprowadzić szybko (pomimo punktu #3)
  5. Indeksy najprawdopodobniej zostaną dodane do tabeli „głównej” dla każdego z pól dla dwóch pól naraz (Identyfikator właściciela i Nazwa pola, ponieważ Id_właściciela będzie określony we wszystkich zapytaniach). Szybkie wyszukiwanie będzie potrzebne w każdym z pól, ale nie jest to takie priorytetowe zadanie. (A może lepiej użyć Sfinksa?)
  6. Lwia część żądań (~80%) o odczyt do tabeli "głównej" to proste select "s na indeksy z i personalID z limitem = 20. Pozostałe żądania dotyczące dowolnych innych pól na indeksach (które jeszcze nie są) OwnerID i Nazwa pola, również z limitem = 20
  7. Zmiany danych w rekordach tabeli „głównej” będą występować niezwykle rzadko. Żadne rekordy nie zostaną usunięte z tabeli.
  8. Obsługa transakcji i kluczy obcych jest opcjonalna
  9. Wymaga możliwości replikacji danych master-slave
  10. Mile widziana możliwość shardingu na poziomie DBMS
  11. Niezwykle ważna jest niezawodność bazy danych (np. awaria jak MyISAM z odzyskiwanie ręczne znika natychmiast)
  12. Do tabeli „głównej” można dodawać nowe pola. Oczywiście jest to niezwykle rzadkie i dalekie od najważniejszego wymagania, ale dodanie nowej kolumny do tabeli o rozmiarze 10 GB dla MySQL to bardzo długi proces i naprawdę nie chcę przenosić nowych pól do osobnego stolika
  13. Wszystko to na początku będzie się kręcić na takim dedykowanym serwerze
  14. Inne stoły będą powoli rosły i dostęp do nich będzie dość rzadki, nie martwię się o nie. Często aktualizowane dane kręcą się w redis "e
Struktura tabeli „master” CREATE TABLE, JEŚLI NIE ISTNIEJE `clients` (`id` bigint(11) NOT NULL AUTO_INCREMENT, `personalID` int(11) NOT NULL, `ownerID` int(11) NOT NULL, `fromID` int(11) NOT NULL DEFAULT "4", `fromDomain` varchar(255) NOT NULL, `datetime` datetime NOT NULL, `status` int(11) NOT NULL DEFAULT "0", `paid` tinyint(1) NOT NULL DEFAULT "0", ` paymentType` tinyint(4) NIE NULL DEFAULT "1", `wmSum` float NIE NULL DEFAULT "0", `wmCommission` float NIE NULL DEFAULT "20", `sysNumber` varchar (14) NIE NULL, `sysNumberLastUpdate` znacznik czasu NIE NULL DEFAULT CURRENT_TIMESTAMP, `sysNumberStatus` varchar(250) NOT NULL, `timezone` float NOT NULL, `comment` varchar(500) NOT NULL, `countryID` int(11) NOT NULL, `postIndex` varchar(6) NOT NULL , `region` varchar(500) NOT NULL, `city` varchar(500) NOT NULL, `address` varchar(500) NOT NULL, `fio` varchar(500) NOT NULL, `phone` varchar(15) NOT NULL , `email` varchar(255) NOT NULL, `price` float NOT NULL, `ilość` int(11) NOT NULL DEFAULT "1", `label` v archar(30) NOT NULL, `tag` int(11) NOT NULL, `ip` varchar(15) NOT NULL, `referer` varchar(200) NOT NULL, PRIMARY KEY (`id`), KEY `from` ( `ownerID`,`fromID`), KLUCZ `paid` (`paid`), KLUCZ `status` (`status`), KLUCZ `label` (`label`), KLUCZ `sysNumberLastUpdate` (`sysNumberLastUpdate`), KLUCZ `personalID` (`ownerID`, `personalID`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

PS Tych, którzy chcą wysłać mnie do google proszę nawet nie odpowiadać. Znajdź informacje przez porównanie aktualne wersje Nie odniosłem sukcesu w różnych DBMS, a przestudiowanie możliwości, zalet i wad PostgreSQL, Microsoft SQL Server i MariaDB dla osoby, która z nimi nie pracowała, jest bardzo długim zadaniem. Tak, aw MySQL daleko mi do eksperta, a tak duży projekt jest dla mnie nowością, a możliwości MySQL różnią się w zależności od wersji. Jedyne, co wiem na pewno, to to, że tabele typu MyISAM w MySQL na pewno nie będą dla mnie działać.

  • Pytanie zadane ponad 3 lata temu
  • 39797 wyświetleń

Oryginalna wersja MySQL została opracowana przez fińsko-szwedzką firmę MySQL AB, założoną przez Jvida Achmarka, Allana Larssona i Michaela Montiego. Pierwsza wersja MySQL pojawiła się w 1995 roku. Początkowo był przeznaczony do użytku osobistego, ale po kilku latach przekształcił się w bazę danych na poziomie przedsiębiorstwa.

W styczniu 2008 roku Sun Microsystems nabył MySQL AB za 1 miliard dolarów. Niedługo potem Oracle kupił Sun Microsystems za zgodą Komisji Europejskiej, która początkowo obawiała się, że taka decyzja zaszkodzi darmowemu projektowi MySQL, ponieważ był bezpośrednim konkurentem bazy danych Oracle. Z powodu nieufności do strategii rozwoju MySQL powstał fork o nazwie MariaDB.

Minęły lata i w tym czasie MariaDB zaczęła być domyślnie używana w wielu dystrybucjach Linuksa. Służy do zapewnienia działania większości stron internetowych. W tym artykule postaramy się porównać MySQL z MariaDB i dowiedzieć się, dlaczego drugi jest lepszy od pierwszego i kiedy potrzebny jest oryginalny MySQL.

W przeciwieństwie do wielu innych projektów open source otrzymanych od Sun Microsystems, Oracle wciąż rozwija MySQL. Po rezygnacji wielu deweloperów zatrudniono nowe osoby. Ale rozwój nowych wersji MySQL jest zamknięty. Źródło jest dostępny tylko dla zespołu programistów i jest przesyłany do publicznego repozytorium dopiero po zakończeniu pracy. Wszystkie decyzje są omawiane w firmie

MariaDB jest rozwijana całkowicie otwarcie, wszelkie decyzje i nowe pomysły dotyczące rozwoju można swobodnie omawiać w biuletynie e-mail, a także w systemie zgłaszania błędów. Bardzo łatwo jest przyczynić się do rozwoju MariaDB, łatki od użytkowników są akceptowane, a także od programistów. Ogólnie MariaDB rozwija się bardziej aktywnie.

Ze względu na branding MySQL nadal ma dużą społeczność, ale coraz więcej projektów przenosi się do MariaDB. Znane dystrybucje korporacyjne, takie jak REHL 7 i SLES 12, już korzystają z MariaDB, co oznacza, że ​​w bitwie o MySQL czy MariaDB wygra ten ostatni.

2. Częstotliwość wydań

Polityka firmy Oracle polega na publikowaniu aktualizacji zabezpieczeń dla wszystkich swoich produktów co trzy miesiące. Ale wyjście? Nowa wersja MySQL jest planowany co dwa miesiące. Często powoduje to, że aktualizacje produktów i aktualizacje zabezpieczeń nie są synchronizowane.

Deweloperzy nie mają czasu na zamknięcie wszystkich komunikatów o błędach i lukach, w wyniku czego baza danych może pozostać podatna na ataki przez kilka miesięcy. Innym problemem związanym z MySQL jest to, że aktualizacje zabezpieczeń są bardzo niejasne. Jeśli administrator nie może po prostu zaktualizować programu do nowej wersji, tworzenie backportu jest trudne.

MariaDB publikuje aktualizacje programów i aktualizacje zabezpieczeń zsynchronizowane, więc wszelkie błędy są naprawiane. Wszystkie naprawione CVE są udokumentowane i każdy użytkownik może dowiedzieć się, co się zmieniło w nowej wersji.

4. Cechy i funkcjonalność

Ogólnie rzecz biorąc, MariaDB rozwija się szybciej i ma więcej funkcji. Te funkcje dotyczą optymalizacji, ulepszonego zarządzania pamięcią i wielu innych. Zazwyczaj z czasem te funkcje są przenoszone do MySQL. Na przykład ta sama obsługa GIS pojawiła się w MariaDB przed MySQL. MariaDB ma między innymi wiele ulepszeń wydajności Inodb, MyISAM i silnika przetwarzania zapytań, obsługuje GIS, eliminację tabel, kolumny wirtualne i dynamiczne, replikację wielu źródeł, role i wiele innych.

Ale MariaDB ma swoje wady, nie obsługuje niektórych funkcji MySQL. Mianowicie MariaDB nie jest kompatybilna ze składnią MySQL JSON, ngram, MeCab, wtyczki MySQL X nie są obsługiwane, a także przestrzenie tabel, które pozwalają przypisywać dane do wielu tabel jednocześnie. Ale programiści aktywnie pracują nad naprawą niedociągnięć.

Dla tych, którzy są zainteresowani klastrami MySQL, interesujące będzie, że MariaDB używa nowy system replikacja Galera, jej działanie różni się od standardowego master-salve. Galera jest rozwijana od 2007 roku, ale nigdy nie została włączona do oficjalna wersja MySQL.

5. Wsparcie dla silników pamięci masowej

System zarządzania bazą danych MariaDB obsługuje znacznie więcej silników do przechowywania danych. Większość z tych silników jest dostępna jako wtyczki do MySQL, ale w MariaDB są one zawarte w oficjalnym wydaniu. Oznacza to, że silniki są odpowiednio zintegrowane i będą działać dobrze. Oto lista obsługiwanych silników:

  • Aria;
  • XtraDB to ulepszona wersja InnoDB;
  • FederatedX to ulepszona wersja Federated;
  • WYKRES OQ;
  • SfinksSE;
  • IBMDB2I;
  • TokuDB;
  • Kasandrę;
  • ŁĄCZYĆ;
  • SEKWENCJA;
  • Pająk;
  • KolumnaSklep;
  • MójSIAM.

Przypomnę, że oryginalny MySQL obsługuje domyślnie tylko trzy typy tabel - Aria, MySIAM i InnoDB. Jest to ważny aspekt przy wyborze MySQL lub MariaDB.

6. Nazwa i numeracja wersji

Te różnice między MariaDB i MySQL nie są tak ważne, ale być może kogoś zainteresują. Nazwa MySQL została nadana na cześć pierwszej córki jednego z programistów - Michaela Monty, ma na imię My. Rozwój MariaDB kontynuowała ta sama osoba, tym razem program nosi imię jego najmłodszej córki Marii.

Jeśli chodzi o wersje, pierwotnie, przed wersją 5.6, wersje MariaDB były numerowane synchronicznie z wersjami MySQL, na których były oparte. Ale kiedy zgromadziło się wystarczająco dużo zmian, a kod MariaDB zaczął być traktowany jako podstawa, zwyczajowo zmieniano numery wersji na 10. Od tego momentu numeracja MariaDB jest wykonywana w jedyny sposób.

wnioski

W tym artykule dokonaliśmy porównania MySQL i MariaDB. Pod wieloma względami MariaDB jest znacznie lepsza niż MySQL, dlatego większość dystrybucji Linuksa używa go teraz domyślnie w swoich repozytoriach. Oryginalna wersja może być potrzebna tylko w bardzo rzadkich przypadkach.