Skip to main content

Omówienie baz danych NoSQL

PyWaw #40 - Codenity DB, fast, pure Python, NoSQL database (Może 2024)

PyWaw #40 - Codenity DB, fast, pure Python, NoSQL database (Może 2024)
Anonim

Akronim NoSQL powstał w 1998 roku. Wiele osób uważa, że ​​NoSQL to obraźliwy termin stworzony do szturchania SQL. W rzeczywistości termin oznacza nie tylko SQL. Chodzi o to, że obie technologie mogą współistnieć i każda ma swoje miejsce. Ruch NoSQL pojawił się w wiadomościach od kilku lat, ponieważ wielu liderów Web 2.0 przyjęło technologię NoSQL. Firmy takie jak Facebook, Twitter, Digg, Amazon, LinkedIn i Google używają NoSQL w taki czy inny sposób. Złóżmy NoSQL, aby wyjaśnić to CIO lub nawet współpracownikom.

NoSQL powstał z potrzeby

Przechowywanie danych: Światowe dane cyfrowe są mierzone w eksabajtach. Exabajt jest równy miliardowi gigabajtów (GB) danych. Według Internet.com ilość zapisanych danych dodanych w 2006 r. Wyniosła 161 eksabajtów. Zaledwie 4 lata później w 2010 r. Ilość przechowywanych danych wyniesie prawie 1000 ExaBytes, co stanowi wzrost o ponad 500%. Innymi słowy, na świecie przechowywanych jest wiele danych, które będą nadal rosły.

Połączone dane: Dane są coraz bardziej połączone. Tworzenie stron internetowych jest wspierane w hiperlinkach, blogi mają pingbacki, a każdy większy system sieci społecznościowych ma znaczniki, które wiążą wszystko ze sobą. Główne systemy są zbudowane tak, aby były ze sobą połączone.

Złożona struktura danych: NoSQL może z łatwością obsługiwać hierarchiczne zagnieżdżone struktury danych. Aby osiągnąć to samo w SQL, potrzebowałbyś wielu tabel relacyjnych ze wszystkimi rodzajami kluczy. Ponadto istnieje związek między wydajnością i złożonością danych. Wydajność może ulec degradacji w tradycyjnym RDBMS, ponieważ przechowujemy ogromne ilości danych wymaganych w aplikacjach sieci społecznościowych i sieci semantycznej.

Co to jest NoSQL?

Domyślam się, że jednym ze sposobów definiowania NoSQL jest rozważenie, czym nie jest. To nie jest SQL i nie jest relacyjne. Tak jak sugeruje nazwa, nie zastępuje RDBMS, ale jest komplementem. NoSQL jest przeznaczony do rozproszonych magazynów danych dla bardzo dużych potrzeb danych. Pomyśl o Facebooku z jego 500 000 000 użytkowników lub Twittera, który gromadzi dane Terabits każdego dnia.

W bazie danych NoSQL nie ma ustalonego schematu ani połączeń. RDBMS "skaluje się" poprzez coraz szybszy sprzęt i dodawanie pamięci. Z drugiej strony NoSQL może skorzystać z "skalowania". Skalowanie odnosi się do rozłożenia obciążenia na wiele systemów towarowych. Jest to składnik NoSQL, który czyni go niedrogim rozwiązaniem dla dużych zbiorów danych.

Kategorie NoSQL

Obecny świat NoSQL pasuje do 4 podstawowych kategorii.

  1. Pary klucz-wartość Sklepy opierają się głównie na dynamo Amazon, który został napisany w 2007 roku. Główną ideą jest istnienie tablicy mieszającej, w której znajduje się unikalny klucz i wskaźnik do określonego elementu danych. Te odwzorowania są zwykle połączone z mechanizmami pamięci podręcznej, aby zmaksymalizować wydajność.
    1. Sklepy rodzinne z kolumnami zostały stworzone do przechowywania i przetwarzania bardzo dużych ilości danych rozproszonych na wielu komputerach. Wciąż są klucze, ale wskazują one na wiele kolumn. W przypadku BigTable (modelu rodzinnego Google Column NoSQL) wiersze są identyfikowane za pomocą klucza wiersza z danymi posortowanymi i przechowywanymi za pomocą tego klucza. Kolumny są uporządkowane według rodziny kolumn.
  2. Baza danych dokumentówzostały zainspirowane przez Lotus Notes i są podobne do magazynów klucza-wartości. Model jest zasadniczo wersjonowany dokumentami, które są kolekcjami innych kolekcji kluczy i wartości. Pół-strukturyzowane dokumenty są przechowywane w formatach takich jak JSON.
  3. Baza danych wykresóws są zbudowane z węzłami, relacjami między notatkami a właściwościami węzłów. Zamiast tabel wierszy i kolumn oraz sztywnej struktury SQL stosuje się elastyczny model wykresu, który można skalować na wiele maszyn.

Główni gracze NoSQL

Główni gracze NoSQL pojawili się przede wszystkim z powodu organizacji, które je przyjęły. Niektóre z największych technologii NoSQL obejmują:

  • Dynamo: Dynamo zostało stworzone przez Amazon.com i jest najbardziej znaną bazą danych NoSQL. Amazon potrzebował wysoce skalowalnej rozproszonej platformy dla swoich sklepów e-commerce, więc opracowali Dynamo. Amazon S3 wykorzystuje Dynamo jako mechanizm przechowywania.
  • Cassandra: Cassandra była otwarta z Facebooka i jest zorientowaną na kolumny bazą danych NoSQL.
  • Duży stół: BigTable to własna kolumna firmy Google. Google zezwala na używanie BigTable, ale tylko dla Google App Engine.
  • SimpleDB: SimpleDB to kolejna baza danych Amazon. Używany w Amazon EC2 i S3, jest częścią Amazon Web Services, która pobiera opłaty w zależności od użycia.
  • CouchDB: CouchDB wraz z MongoDB to zorientowane na dokumenty bazy danych NoSQL o otwartym kodzie źródłowym.
  • Neo4J: Neo4j to baza danych z otwartym źródłem danych.

Odpytywanie NoSQL

Pytanie, w jaki sposób zapytać o bazę danych NoSQL, jest tym, co interesuje większość programistów. W końcu dane przechowywane w ogromnej bazie danych nie robią nikomu nic dobrego, jeśli nie można ich odzyskać i pokazać użytkownikom końcowym lub usługom sieciowym. Bazy danych NoSQL nie zapewniają języka deklaratywnego wysokiego poziomu, takiego jak SQL. Zamiast tego, zapytanie do tych baz danych jest specyficzne dla modelu danych.

Wiele platform NoSQL umożliwia RESTful interfejsów do danych. Inne interfejsy API zapytań ofertowych. Istnieje kilka narzędzi do tworzenia zapytań, które próbują wysłać zapytanie do wielu baz danych NoSQL. Te narzędzia zazwyczaj działają w pojedynczej kategorii NoSQL. Jednym z przykładów jest SPARQL. SPARQL jest deklaratywną specyfikacją zapytania zaprojektowaną dla graficznych baz danych. Oto przykład zapytania SPARQL, które pobiera adres URL konkretnego blogera (dzięki uprzejmości IBM):

PREFIX foaf: WYBIERZ URLZ GDZIE {? wkład foaf: nazwa "Jon Foobar".? contribut foaf: weblog? url.}

Przyszłość NoSQL

Organizacje, które mają ogromne potrzeby w zakresie przechowywania danych, poważnie traktują NoSQL. Wygląda na to, że ta koncepcja nie zapewnia tak dużej siły napędowej w mniejszych organizacjach. W ankiecie przeprowadzonej przez Information Week, 44% profesjonalistów IT z branży nie słyszało o NoSQL. Co więcej, tylko 1% respondentów stwierdziło, że NoSQL jest częścią ich strategicznego kierunku. Oczywiście, NoSQL ma swoje miejsce w naszym połączonym świecie, ale będzie musiał ewoluować, aby uzyskać masowy urok, który według wielu może się wydawać.