29 sie

Porównanie relacyjnych SZBD: SQLite, MySQL, PostgreSQL

Porównanie: SQLite, MySQL, PostgreSQL
Relacyjne bazy danych były używane przez dłuższy czas. Stały się one popularne dzięki systemów zarządzania, które bardzo dobrze realizują model relacyjny, który udowodnił, że jest doskonałą metodą pracy z danymi (szczególnie dla aplikacji o znaczeniu krytycznym).

W tym artykule spróbujemy zrozumieć podstawowe różnice niektórych z najczęściej używanych i p
opularnych relacyjnych systemów zarządzania bazami danych (SZBD). Będziemy rozważać ich zasadnicze różnice pod względem cech i funkcjonalności, jak one działają, i który jest lepszy, aby pomóc programistom  z wyborem SZBD.

Systemy zarządzania bazami danych

Bazy danych są logicznie symulowane przestrzenie do przechowywania wszystkich rodzajów różnych informacji (danych).  Każda baza danych, z wyjątkiem schematu, jest modelem, który zapewnia strukturę dla danych, które są rozpatrywane. Systemy zarządzania bazami danych to aplikacje (lub biblioteki), które zarządzają bazami danych o różnych kształtach, rozmiarach i rodzajach.

Systemy zarządzania relacyjnymi bazami danych

Relacyjny system zarządzania bazami danych realizuje model relacyjny do pracy z danymi. Relacyjne kształty modelu przechowują wszelkie informacje, definiując je jako podmioty powiązane z atrybutami w tabelach (tj schematy).

Te typy systemów zarządzania bazami danych wymagają struktury (np tabela), które zostaną określone w celu pracy z danymi. Za pomocą tabel, każda kolumna (na przykład atrybut) ma inny typ (na przykład typ danych) informacji. Każdy rekord w bazie danych jest określony identyfikatorem, przekłada się na wiersz który należy do tabeli, z serii każdego wiersza atrybutów są przedstawiane w postaci kolumn tabeli – wszystkie związane ze sobą, jak to określono w modelu relacyjnym.

Relacje i typy danych

Relacje mogą być traktowane jako zestawy matematyczne, które zawierają szereg atrybutów, które łącznie stanowią bazę danych i przechowywaną informację. Tego typu metody identyfikacji i zbierania danych pozwalają dla relacyjnych baz danych pracować tak jak oni.

Przy ustalaniu tabeli do wstawiania rekordów, każdy element tworzący rekord (czyli atrybut) musi pasować do zdefiniowanego typu danych (np liczbą całkowitą, data itp.) Różne relacyjne systemy zarządzania bazami danych realizują różne typy danych, które nie zawsze są stosowane zamiennie.

Praca z ograniczeniami, jak już właśnie wyjaśniono, często powiązana z relacyjnymi bazami danych. W rzeczywistości, ograniczenia stanowią podstawę  relacji.

Uwaga: Jeśli chcesz pracować z naprawdę niezależnych, przypadkowo udostępnianą informacją (np. dokumentu), możesz być zainteresowany użyciem NoSQL.

Popularne i ważne relacyjne bazy danych

W tym artykule, mamy zamiar przedstawić trzy główne i ważne open source relacyjnych systemów zarządzania bazami danych, które pomogły ukształtować świat tworzenia aplikacji.

SQLite:

Bardzo mocny, osadzony relacyjnym systemem zarządzania bazami danych.

MySQL:

Najbardziej popularne i powszechnie stosowany SZBD.

PostgreSQL:

Najbardziej zaawansowany, SQL-zgodny open source i obiektowo-relacyjny SZBD.

Uwaga: aplikacje open source prawie zawsze pochodzą z wolnością korzystania w dowolny sposób pożądany. Większość czasu wolności na tworzenie  projektu (a więc używać kodu), stworzenie czegoś nowego jest również dozwolone. Jeśli jesteś zainteresowany SZBD, warto sprawdzić kilka rozwiniętych projektów, opartych na popularnych SZBD, takich jak MariaDB.

SQLite

SQLite – to wspaniała biblioteka, która jest wbudowana w aplikację, w której jest używana. SQLite oferuje niesamowity zestaw narzędzi do obsługi wszelkiego rodzaju danych z o wiele mniejszą ilością ograniczeń oraz łatwość.

Gdy aplikacja korzysta z SQLite, integracja współpracuje z połączeniami funkcjonalnymi i bezpośrednimi dokonanych w pliku zawierającym dane (czyli baza danych SQLite), zamiast transmisji przez interfejs swego rodzaju (tj. porty, gniazda). To sprawia, że SQLite bardzo szybki i sprawny oraz wydajny dzięki użytej technologii biblioteki.

Obsługiwane typy danych SQLite

  • NULL:

Wartość NULL.

  • INTEGER:

Liczba całkowita ze znakiem, jest przechowywana w 1, 2, 3, 4, 6 lub 8 bajtach w zależności od wielkości wartości.

  • REAL:

Wartość zmiennoprzecinkowa, przechowywana jako 8-bajtowa liczba zmiennoprzecinkowa IEEE.

  • TEXT:

Ciąg tekstowy, przechowywany przy użyciu kodowania bazy danych (UTF-8, UTF-16BE lub UTF-16LE).

  • BLOB:

BLOB danych, przechowywany dokładnie tak, jak został on wprowadzony.

Uwaga: aby uzyskać więcej informacji o typach danych w SQLite, zapoznaj się z oficjalną dokumentacją na ten temat.

Zalety SQLite

  • W oparciu o plik:

Cała baza danych składa się z jednego pliku na dysku,  co sprawia, że jest bardzo przenośny.

  • Standardy:

Chociaż mogłoby się wydawać, że realizacja BD SQLite jest „prosta”, i która korzysta z SQL. Ona ma pewne cechy pominięte ( RIGHT OUTER JOIN lub FOR EACH STATEMENT).

  • Idealne dla projektowania a nawet testowania:

Na etapie projektowania większości aplikacji dla większości ludzi jest to bardzo prawdopodobne, że potrzebują rozwiązania, które można skalować dla współbieżności. SQLite z bogatą bazą funkcji może zaoferować więcej niż to co jest potrzebne dla rozwoju przy całej prostocie pracy z jednym plikiem i połączoną biblioteką na podstawie C.

Wady SQLite

  • Nie ma zarządzania użytkownikami:

Zaawansowane bazy danych są dostarczane z obsługą użytkowników, czyli zarządzanych połączeń z uprawnieniami zestawu dostępu do bazy danych i tabel. Biorąc pod uwagę cele i charakter SQLite, ta funkcja nie istnieje.

  • Brak możliwości korzystać z dodatkowych usług:

Znowu o projektowaniu, w SQLite nie jest możliwe uzyskać dużo dodatkowej wydajności. Biblioteka jest łatwa do konfiguracji i łatwa w użyciu. Ponieważ nie jest to trudne, jest to technicznie niemożliwe, aby zrobić go bardziej wydajnym, niż już jest.

Kiedy używać SQLite

  • Wbudowane aplikacje:

Wszystkie aplikacje, które wymagają przenoszenia, które nie wymagają rozszerzenia, np lokalne aplikacji pojedynczego użytkownika, aplikacji mobilne i gry.

  • Wymiana dostępu do dysku:

W wielu przypadkach zastosowań, które wymagają do odczytu / zapisu plików na dysku bezpośrednio mogą korzystać z przejścia na SQLite dla zwiększenia funkcjonalności i prostoty, która jest dostarczana za pomocą języka Structured Query Language (SQL).

  • Testowanie:

Jest to przesada dla dużej części aplikacji, aby użyć dodatkowy proces do testowania logiki biznesowej (czyli główny cel aplikacji: funkcjonalność).

Kiedy nie używać SQLite

  • Aplikacje dla wielu użytkowników:

Jeżeli pracujesz nad aplikacją, w którym wielu klientom trzeba uzyskać dostęp i korzystać z tej samej bazy danych,wielu klientom, lepiej wybrać bardziej funkcjonalny SZBD (na przykład MySQL), niż SQLite.

  • Aplikacje wymagające dużej ilości zapisów

Jednym z ograniczeń SQLite jest operacje zapisu. SZBD ten pozwala tylko na jeden operacyjny  zapis w dowolnym momencie, a więc pozwala na ograniczoną przepustowość.

MySQL

MySQL jest najbardziej popularny wśród wszystkich serwerów dużych baz danych.  Jest to wielofunkcyjny produkt open source, który odżywia wiele stron internetowych i aplikacji w Internecie. Początek pracy z MySQL stosunkowo łatwy i deweloperzy mają dostęp do ogromnej tablicy informacji i bazie danych w Internecie.

Uwaga: Należy stwierdzić,  że ze względu na popularność produktu, istnieje wiele aplikacji firm trzecich, narzędzi i zintegrowanych bibliotek, które znacznie ułatwiają wiele aspektów pracy z tym SZBD.

Mimo to, nie stara się realizować pełen standard, SQL, MySQL oferuje wiele funkcji dla użytkowników. Jako samodzielny serwer baz danych,  aplikacje podłączają się z MySQL daemon, aby uzyskać dostęp do samej bazy danych – w przeciwieństwie do SQLite.

Obsługiwane typy danych MySQL

  • TINYINT:

Bardzo mała liczba całkowita.

  • SMALLINT:

Niewielka liczba całkowita.

  • MEDIUMINT:

Liczba całkowita średniej wielkości.

  • INT albo INTEGER:

Liczba całkowita normalnej wielkości.

  • BIGINT:

Duża liczba całkowita.

  • FLOAT:

Mała (pojedynczej precyzji) liczba zmiennoprzecinkowa. Nie może być bez znaku.

  • DOUBLE, DOUBLE PRECISION, REAL:

Liczba zmiennoprzecinkowa normalnego rozmiaru (podwójna precyzja). Nie może być bez znaku.

  • DECIMAL, NUMERIC:

Rozpakowana liczba zmiennoprzecinkowa. Nie może być bez znaku.

  • DATE:

Data.

  • DATETIME:

Połączenie daty i godziny.

  • TIMESTAMP:

Znacznik czasu.

  • TIME:

Czas.

  • YEAR:

Rok w 2- lub 4- cyfrowych formatach (domyślnie jest 4-cyfrowy).

  • CHAR:

Ciąg znaków o stałej długości, który zawsze jest uzupełniony spacjami do określonej długości przechowywania.

  • VARCHAR:

Ciąg znaków o zmiennej długości.

  • TINYBLOB, TINYTEXT:

Kolumna BLOB lub tekst o maksymalnej długości 255 (2 ^ 8 – 1) znaków.

  • BLOB, TEXT:

Kolumna BLOB lub tekst o maksymalnej długości 65535 (2 ^ 16 – 1) znaków.

  • MEDIUMBLOB, MEDIUMTEXT:

Kolumna BLOB lub tekst o maksymalnej długości 16777215 (2 ^ 24 – 1) znaków.

  • LONGBLOB, LONGTEXT:

Kolumna BLOB lub tekst o maksymalnej długości 4294967295 (2 ^ 32 – 1) znaków.

  • ENUM:

Wyliczenie.

  • SET:

Zbiór.

Zalety MySQL

  • Łatwy w obsłudze:

MySQL może być zainstalowany bardzo łatwo. Narzędzia innych firm, w tym wizualnej (na przykład Gui) robią go niezwykle prostym, aby rozpocząć pracę z bazą danych.

  • Funkcjonalny:

MySQL obsługuje wiele funkcji SQL, które są w SZBD- bezpośrednio lub pośrednio.

  • Bezpieczny:

Wiele funkcji bezpieczeństwa, niektóre dość zaawansowane, są wbudowane w MySQL.

  • Skalowalny i wydajny:

MySQL może obsługiwać wiele danych, a ponadto może być stosowany „w skali”, jeżeli to konieczne.

  • Szybki:

Rezygnacja z niektórych standardów pozwala MySQL bardzo skutecznie pracować, zapewniając tym samym zwiększenie prędkości.

Wady MySQL

  • Znane ograniczenia:

Zgodnie z projektem, MySQL nie zamierza robić wszystko, a chodzi o ograniczeniach funkcjonalnych, że niektóre aplikacje mogą wymagać.

  • Kwestia wiarygodności:

Niektóre funkcje obsługiwane z MySQL (np. linki, operacji, audyt, itp.) sprawia, że jest mniej wiarygodny w porównaniu z innymi SZBD.

  • Stagnacja rozwoju:

Chociaż MySQL nadal jest techniczny open-source produkt, są reklamacje dotyczące procesu rozwoju od momentu jego zakupu. Jednak, należy zauważyć że istnieją pewne bazy danych MySQL na podstawie zintegrowanych baz danych, które dodają wartość na standardowej instalacji MySQL (na przykład MariaDB).

Kiedy używać MySQL

  • Rozproszone operacje:

Kiedy potrzebujesz więcej niż to, co może zaoferować SQLite, w tym MySQL w stosie wdrażania,  jak i każdy oddzielny serwer bazy danych, przynosi dużo wolnej pamięci wraz z niektórymi dodatkowymi funkcjami.

  • Wysoki poziom bezpieczeństwa:

Funkcje zabezpieczeń MySQL zapewniają właściwą ochronę dostępu do danych (i stosowania) w prosty sposób.

  • Strony internetowe i aplikacji internetowe:

Zdecydowana większość stron internetowych (i aplikacji internetowych) mogą  pracować na MySQL, pomimo ograniczeń. Te elastyczne i nieco skalowalne narzędzie jest proste i łatwe w obsłudze – co okazuje się bardzo pomocne w dłuższej perspektywie.

  • Niestandardowe rozwiązania:

Jeśli pracujemy na bardzo specyficzne i bardzo niestandardowe rozwiązanie, MySQL może iść według twoich reguł dzięki bogatemu ustawieniu konfiguracyjnym i trybów pracy.

Kiedy nie używać MySQL

  • SQL zgodności:

Ponieważ MySQL nie realizuje pełny standard SQL, narzędzie to nie jest całkowicie zgodne z SQL. Jeżeli może zajść potrzeba integracji z takim SZBD, przełączanie z MySQL nie będzie łatwe.

  • Konkurencja:

Chociaż MySQL i niektóre mechanizmy przechowywania wykonują bardzo dobrze odczyt operacji, jednoczesny odczyt z zapis może być problematyczny.

  • Brak cech:

Ponownie, w zależności od wyboru mechanizmu bazy danych MySQL może brakować niektórych funkcji, takich jak wyszukiwanie pełnotekstowe.

PostgreSQL

PostgreSQL jest zaawansowany open source SZBD, głównym celem którego jest zgodność ze standardami i rozszerzalność. PostgreSQL lub Postgres, stara się przyjąć standardy ANSI / ISO SQL wraz z wersjami.

W porównaniu do innych SZBD, PostgreSQL wyróżnia obsługa bardzo potrzebnych i integralnych obiektów i / lub funkcjonalność relacyjnej bazy danych, takich jak pełne wsparcie dla wiarygodnych transakcji, czyli niepodzielność, spójność, izolacja, trwałość (ACID).

Ze względu na wydajność technologii bazowej, Postgres jest niezwykle zdolny do bardzo sprawnej obsługi wielu zadań. Wsparcie dla współbieżności jest osiągnięte bez blokad odczytu dzięki realizacji Multiversion Concurrency Control (MVCC), który zapewnia również zgodność z ACID.

PostgreSQL jest bardzo programowalny, a więc przedłużany przy użyciu niestandardowych procedur, które nazywane są „procedury przechowywane”. Funkcje te mogą być tworzone w celu uproszczenia wykonywania powtarzanych, skomplikowanych i często wymaganych operacji bazodanowych.

Chociaż SZBD nie posiada popularność MySQL, istnieje wiele niesamowitych narzędzi innych firm i bibliotek, które są przeznaczone do prostej pracy z PostgreSQL, pomimo mocnego charakteru tej bazy danych. Obecnie można uzyskać PostgreSQL jako pakiet aplikacji za pomocą menedżera pakietów domyślnie w wielu systemach operacyjnych.

Obsługiwane typy danych PostgreSQL

  • bigint:

Ośmiu bajtowa liczba całkowita.

  • bigserial:

Autoinkrementna ośmiu bajtowa liczba całkowita.

  • bit [(n)]:

Bitowy ciąg znaków o stałej długości.

  • bit varying [(n)]:

Bitowy ciąg znaków o zmiennej długości.

  • boolean:

Logiczna Boolean (prawda/fałsz).

  • box:

Prostokąt na płaszczyźnie.

  • bytea:

Dane binarne ( „byte array”)

  • character varying [(n)]:

Ciąg znaków o zmiennej długości.

  • character [(n)]:

Ciąg znaków o stałej długości.

  • CIDR:

IPv4 lub IPv6 adres sieciowy.

  • circle:

Okrąg na płaszczyźnie.

  • date:

Data (rok, miesiąc, dzień).

  • double precision:

Liczba zmiennoprzecinkowa podwójnej precyzji (8 bajtów).

  • inet:

IPv4 lub IPv6 adres hosta.

  • integer:

Cztery bajtowa liczba całkowita.

  • interval [fields] [(p)]:

Okres czasu.

  • line:

Nieskończona linia na płaszczyźnie.

  • LSEG:

Odcinek na płaszczyźnie.

  • macaddr:

Adres MAC (Media Access Control).

  • money:

Kwota waluty.

  • numeric [(p, s)]:

Dokładna wartość liczbowa z wybraną dokładnością.

  • path:

Geometryczna ścieżka na płaszczyźnie.

  • point:

Geometryczny punkt  na płaszczyźnie.

  • polygon:

Zamknięta geometryczna ścieżka na płaszczyźnie.

  • real:

Liczba pojedynczej precyzji zmiennoprzecinkowej (4 bajty).

  • smallint:

Dwóch bajtowa liczba całkowita.

  • serial:

Autoinkrementna czterech bajtowa liczba całkowita.

  • text:

Ciąg znaków o zmiennej długości.

  • time [(p)] [without time zone]:

Pora dnia (bez strefy czasowej).

  • time [(p)] with time zone:

Pora dnia, w tym strefa czasowa.

  • timestamp [(p)] [without time zone]:

Data i godzina (bez strefy czasowej).

  • timestamp [(p)] with time zone:

Data i godzina, w tym strefa czasowa.

  • tsquery:

Tekst wyszukiwania.

  • tsvector:

Wyszukiwanie dokumentów tekstowych.

  • txid_snapshot:

Na poziomie użytkownika, identyfikator transakcji migawka.

  • uuid:

Uniwersalny, unikatowy identyfikator.

  • xml:

Dane XML.

Zalety PostgreSQL

  • Open source SQL zgodnych z SZBD:

PostgreSQL  jest open source i darmowy, ale bardzo zaawansowany system zarządzania relacyjnymi bazami danych.

  • Silna społeczność:

PostgreSQL jest obsługiwany przez oddanych i doświadczonych społeczności,  które mogą być dostępne za pośrednictwem baz wiedzy i Q&A stron 24/7 za darmo.

  • Mocne wsparcie innych firm:

Niezależnie od bardzo zaawansowanych funkcji, PostgreSQL jest ozdobiona wieloma świetnymi i open source narzędziami innych firm do projektowania, zarządzania i korzystania z systemu zarządzania.

  • Rozszerzalny:

Możliwe jest rozszerzenie PostgreSQL programowo za pomocą procedur przechowywanych, jak w zaawansowanych SZBD powinno być.

  • Zadanie:

PostgreSQL jest nie tylko relacyjnym systemem zarządzania bazą danych, ale cel jest jeden – obsługa zagnieżdżenia i wiele innych.

Wady PostgreSQL

  • Wydajność:

Dla prostego odczytu ciężkich operacji, PostgreSQL może wydawać się mniej wydajnym niż odpowiedniki, takie jak MySQL.

  • Popularność:

Biorąc pod uwagę charakter tego narzędzia, to brakuje mu popularności, pomimo bardzo dużej ilości wdrożeń, które mogą mieć wpływ, jak łatwo można było by uzyskać wsparcie.

  • Hosting:

Z powodu wyżej wymienionych czynników, trudniej znaleźć właścicieli lub dostawców usług, które oferują zarządzane instancji PostgreSQL.

Kiedy używać PostgreSQL

  • Integralność danych:

Gdy niezawodność i integralność danych są absolutną koniecznością, bez wymówek, PostgreSQL jest lepszym wyborem.

  • Skomplikowane procedury niestandardowe:

Jeśli potrzebujesz bazy danych do wykonania procedur niestandardowych, PostgreSQL jest rozszerzalnym i jest lepszym wyborem.

  • Integracja:

W przyszłości, jeżeli jest szansa, z konieczności wynikającej z migracji całego systemu bazy danych do zasadności rozwiązania (np Oracle), PostgreSQL będzie najbardziej posłuszną i łatwą w obsłudze bazę dla przełącznika.

  • Złożone projekty:

W porównaniu z innymi implementacjami open source i darmowymi SZBD, dla złożonych projektów baz danych PostgreSQL oferuje najbardziej, z punktu widzenia funkcjonalności i możliwości, nie rezygnując z innych cennych zasobów.

Kiedy nie używać PostgreSQL

  • Prędkość:

Jeżeli wszystko czego potrzebujesz, to szybki odczyt operacji, PostgreSQL nie jest takim narzędziem.

  • Prosty zestaw UPS:

O ile nie wymaga absolutnej integralności danych, zgodności z ACID lub skomplikowanych wzorów, PostgreSQL może być śmiertelny dla prostych ustawień.

  • Replikacja:

Jeżeli nie jesteś gotówy poświęcić czas, energię i zasoby, aby osiągniąć replikację w MySQL, to może być łatwiejsze dla tych, którzy nie mają doświadczenia w administracji baz danych i systemów.

Udostępnij