Jestem facetem od SQL, ale wiem, że istnieją nie tylko bazy danych SQL - głównie baza danych dokumentów. Jak w przypadku większości technologii, istnieją zalety i wady każdej technologii.
Przeczytałem kilka artykułów, ale były one zbyt teoretyczne. Chciałbym dwóch prawdziwych przypadków:
- gdy zmiana z relacyjnej na bazę danych dokumentów poprawiła się
- gdy zmiana z dokumentu na relacyjną bazę danych dała poprawę
Ulepszenie to dowolna rzecz, która sprawia, że lepsze programy - krótszy czas opracowywania, skalowalność, wydajność, wszystko, co jest związane z programowaniem. Jest zastrzeżenie dla 2.: historie takie jak „powrót do relacyjnej bazy danych, ponieważ wszyscy wiedzą, że SQL” nie jest dobre
nosql
relational-database
Johan Buret
źródło
źródło
Odpowiedzi:
Głównym powodem wyboru bazy danych NoSQL w ostatnich latach była dostępność . W przypadku firm takich jak Amazon, Google i Facebook godzina przestoju jest niedopuszczalna. Aby osiągnąć wysoką dostępność, musisz zmniejszyć pojedynczy punkt awarii, co oznacza, że musisz użyć systemu rozproszonego z wieloma komputerami na wypadek awarii komputera, usługa jest nadal dostępna.
Tradycyjne bazy danych Relatione nie są zbyt dobre w rozproszonej konfiguracji multi-master. Właśnie dlatego NoSQL jest ostatnio tak popularny. Jeśli więc potrzebujesz wysokiej dostępności, możesz wybrać bazę danych NoSQL, taką jak Riak, Cassandra, HBase, S3 lub BigTable.
Jest dobry post na blogu o Dynamo Amazon, który jest dobrym wprowadzeniem do rozproszonych baz danych NoSQL.
Teraz termin NoSQL jest bardzo szeroki, więc istnieje wiele baz danych NoSQL, które nie są dystrybuowane. Ale rozwiązują inne problemy. Np. Neo4j - baza danych grafów jest dobra w przypadku zapytań, dla których tradycyjne RDBMS nie są zoptymalizowane. Lub jak w twoim przypadku baza danych dokumentów, w której nie musisz zmieniać schematu, jeśli chcesz dodać pola dla niektórych dokumentów. Innymi słowy, baza danych dokumentów jest dobra, gdy większość postów (dokumentów) ma różne pola, więc tabela relacyjna ze wstępnie zdefiniowanymi kolumnami nie jest użyteczna.
Jednak większość baz danych NoSQL nie jest tak elastyczna jak tradycyjne bazy danych RDBMS, więc dobrym wyborem jest użycie tradycyjnej bazy danych RDBMS, dopóki nie rozwiąże ona problemów.
źródło
Mam proste podejście do określenia bazy danych, która najlepiej pasuje do danych.
Po prostu zadaję sobie pytanie: zakładając, że nie mam bazy danych, wolałbym zapisać najważniejsze i najważniejsze dane jako dokument, czy też zapisać je w arkuszu kalkulacyjnym.
Gdy odpowiedź brzmi „Arkusz kalkulacyjny”, jest to wyraźny znak, że model relacyjny i tradycyjny RDBMS najlepiej odpowiadają zadaniom przez większość czasu. Jeśli dane są naprawdę proste, jak tylko pary klucz-wartość lub proste tabele, a integralność referencyjna nie jest tematem, baza danych NoSQL prawdopodobnie najlepiej nadaje się do tego zadania i może znacznie zwiększyć wydajność!
Ponadto, gdy nie możesz w ogóle znaleźć wspólnej struktury, baza danych NoSQL najlepiej nadaje się do tego zadania.
Kiedy dane są bardziej podobne do dokumentów, np. Hierarchicznie ustrukturyzowane dane tekstowe bez wyraźnych relacji, natychmiast myślę o bazie danych XML, która z łatwością pozwala przechowywać hierarchicznie ustrukturyzowane dokumenty. Czasami jednak najlepiej jest korzystać z oprogramowania do zarządzania dokumentami.
Aby udzielić konkretnej i prostej odpowiedzi na oba pytania: Zależy to od danych.
Kiedy musisz zachować hierarchicznie ustrukturyzowane dane tekstowe, Baza danych Xml może być dużym ulepszeniem pod względem łatwości konserwacji i prawdopodobnie także skalowalności.
Na przykład, gdy dane są w większości w formie tabelarycznej z wyraźnymi relacjami i trzeba zagwarantować integralność.
źródło
Musieliśmy zrezygnować z modelu relacyjnego, ponieważ otrzymywane dane nie miały prostego, oczywistego, stałego, statycznego schematu.
Użytkownicy - i historie użytkowników - nie mieli ustalonego, statycznego schematu.
Próbowaliśmy narzucić stały, statyczny schemat RDBMS, ale to był błąd.
Każda zewnętrzna dostawa danych (od klientów i od dostawców) była podobna, ale nie identyczna. Próbowaliśmy odwzorować go na ustalony schemat relacyjny, ale zmienność była zbyt duża. Musieliśmy albo dodawać pola do każdego pliku (kilka tygodniowo), albo musieliśmy odstąpić od ustalonego, statycznego schematu relacyjnego.
Gdybyśmy postrzegali każdy rekord jako „dokument” ze wspólnym podzbiorem elementów i unikalnym (jak również źle zdefiniowanym) zbiorem dodatkowych elementów danych, byliśmy znacznie bardziej zadowoleni.
Źle zdefiniowany zbiór elementów danych jest tym, czego użytkownicy naprawdę potrzebowali w swoich przypadkach użycia.
Naprawiony, statyczny schemat modelu relacyjnego nie pasował do naszych przypadków użycia.
źródło