Wiem, że istnieją trzy różne, popularne typy baz danych innych niż sql.
- Klucz / wartość: Redis, Tokyo Cabinet, Memcached
- ColumnFamily: Cassandra, HBase
- Dokument: MongoDB, CouchDB
Czytałem o tym długie blogi bez zbytniego zrozumienia.
Znam relacyjne bazy danych i przebywam wokół baz danych opartych na dokumentach, takich jak MongoDB / CouchDB.
Czy ktoś mógłby mi powiedzieć, jakie są główne różnice między nimi a dwoma poprzednimi na liście?
Odpowiedzi:
Główne różnice to model danych i możliwości wykonywania zapytań.
Magazyny klucz-wartość
Pierwszy typ jest bardzo prosty i prawdopodobnie nie wymaga dalszych wyjaśnień.
Model danych: więcej niż magazyny klucz-wartość
Chociaż toczy się debata na temat poprawnej nazwy baz danych, takich jak Cassandra, chciałbym nazwać je sklepami rodzinnymi . Chociaż pary klucz-wartość są istotną częścią Cassandry, nie ogranicza się to tylko do tego. Pozwala na zagnieżdżanie par klucz-wartość, więc klucz może odnosić się do wielu par podklucz-wartość.
Nie można jednak zagnieżdżać par klucz-wartość w nieskończoność. Jesteś ograniczony do trzech poziomów (rodziny kolumn) lub czterech poziomów zagnieżdżenia (rodziny superkolumn). W przypadku, gdy termin rodzina kolumn nie dzwoni, zobacz artykuł WTF to artykuł SuperColumn , jest to dobre wyjaśnienie modelu danych Cassandry.
Bazy danych dokumentów , takie jak CouchDB i MongoDB, przechowują całe dokumenty w postaci obiektów JSON . Możesz myśleć o tych obiektach jako o zagnieżdżonych parach klucz-wartość. W przeciwieństwie do Cassandry możesz zagnieżdżać pary klucz-wartość tak często, jak chcesz. JSON obsługuje również tablice i rozumie różne typy danych, takie jak ciągi znaków, liczby i wartości logiczne.
Zapytanie
Uważam, że sklepy z rodzinami kolumn można przeszukiwać tylko za pomocą klucza lub pisząc funkcje zmniejszania mapy. Nie możesz zapytać o wartości, tak jak w bazie danych SQL. Jeśli Twoja aplikacja wymaga bardziej złożonych zapytań, aplikacja będzie musiała utworzyć i utrzymywać indeksy, aby uzyskać dostęp do żądanych danych.
Bazy danych dokumentów obsługują również zapytania według klucza i funkcji redukcji mapy, ale także umożliwiają wykonywanie podstawowych zapytań według wartości, takich jak „Podaj mi wszystkich użytkowników z więcej niż 10 postami”. W ten sposób bazy danych dokumentów są bardziej elastyczne.
źródło
Ayende podała ładne wyjaśnienie różnicy między bazą danych klucz-wartość a bazą danych dokumentów:
źródło