ћерион Ќетворкс

NoSQL —”Ѕƒ, или нерел€ционные базы данных, обладают уникальными возможност€ми, которые компенсируют ограничени€ моделей рел€ционных баз. Ќерел€ционные —”Ѕƒ Ц это общее название дл€ 4 основных подгрупп:

  • базы данных типа Ђключ-значениеї
  • колоночные базы данных
  • графовые базы данных
  • документные базы данных

¬ этой статье мы расскажем о том, что такое документна€ база данных, опишем ее плюсы и минусы, а также рассмотрим примеры.


ƒокументна€ база данных

„то такое документна€ база данных?

ƒокументна€ (или документоориентированна€) база данных Ц это тип нерел€ционных —”Ѕƒ, который хранит данные не в столбцах и строках, а в виде документов JSON. JSON €вл€етс€ нативным €зыком, используемым дл€ хранени€ и запросов данных. “акие документы можно сгруппировать в коллекции, которые образуют системы баз данных.

 аждый документ состоит из нескольких пар Ђключ-значениеї. Ќиже приведен пример документа из 4 пар Ђключ-значениеї:

{
"ID" : "001",
"Book" : "Java: The Complete Reference",
"Genre" : "Reference work",
"Author" : "Herbert Schildt",
}

JSON позвол€ет разработчикам приложений хранить и запрашивать данные в том же формате документной модели, который используетс€ ими дл€ структурировани€ кода приложений. ќбъектную модель можно преобразовать в такие форматы, как JSON, BSON и XML.


—равнение рел€ционной и документной базы данных

–ел€ционна€ система управлени€ базами данных (–—”Ѕƒ) основана на €зыке структурированных запросов (SQL). ƒл€ нерел€ционных баз они не нужны.

–—”Ѕƒ занимаетс€ созданием св€зей между файлами дл€ хранени€ и считывани€ данных. ƒокументные базы данных ориентированы на сами данные, а св€зи между ними представлены в виде вложенных данных.

 лючевое сравнение рел€ционных и документных баз данных:

–—”Ѕƒ   —истема документных баз данных
¬ыстроена вокруг концепции о св€з€х —осредоточена на данных, а не св€з€х
—труктурирует данные в кортежи (или строки) ¬место строк в документах имеютс€ свойства без теоретических определений.
ќпредел€ет данные (образует св€зи) через ограничени€ и внешние ключи (например, дочерн€€ таблица ссылаетс€ на основную таблицу через ее идентификатор). ƒл€ определени€ схем не нужен €зык DDL.
ƒл€ создани€ св€зей использует €зык DDL (€зык описани€ данных). ¬место внешних ключей св€зи реализованы через вложенные данные (в одном документе могут содержатьс€ другие, вложенные в него, документы, из-за чего между двум€ сущност€ми документов формируетс€ св€зь 1 ко многим (или многие к одному)).
ќбеспечивает исключительную согласованность. ¬ некоторых случа€х она просто необходима (например, ежедневные банковские операции). ќбеспечивает согласованность в конечном счете (с периодом несогласованности).

ќсобенности документной базы данных

ƒокументные базы данных обеспечивают быстрые запросы, структуру, котора€ отлично подходит дл€ обработки больших данных, гибкое индексирование и упрощенный принцип поддержани€ баз данных. “ака€ —”Ѕƒ эффективна дл€ веб-приложений и была полностью интегрирована крупными »“-компани€ми уровн€ Amazon.

Ќесмотр€ на то, что базы данных SQL могут похвастатьс€ отличной стабильность и вертикальной структурой, им свойственна Ђт€желовесностьї данных. ¬ сценари€х использовани€, когда требуетс€ моментальный доступ к данным (например, медицинские приложени€), лучше выбирать документные базы данных. “ак вы сможете легко запрашивать данные в той же модели документа, в которой писалс€ код приложени€.

ѕримеры использовани€ документной базы данных

Ѕаза данных Ђ нигаї

ƒл€ создани€ баз данных Ђ нигаї используютс€ как рел€ционные, так и нерел€ционные —”Ѕƒ, хот€ и по-разному.

¬ рел€ционных —”Ѕƒ св€зи между книгами и авторами выражаютс€ через таблицы с идентификаторами ID: таблица Author (јвтор) и таблица Books ( ниги). ƒанна€ модель не допускает пустых значений, поэтому за каждым Ђјвторомї должна быть закреплена как минимум одна запись в таблице Ђ нигиї.

¬ документной модели вы можете вкладывать данные. “ака€ модель показывает взаимосв€зи проще и естественнее: в каждом документе с авторами есть свойство Books с массивом св€занных документов Ђ нигиї. ѕри поиске по автору отображаетс€ вс€ коллекци€ книг.

”правление содержимым

–азработчики пользуютс€ документными базами данных дл€ создани€ блогов, платформ с потоковыми видео и аналогичных сервисов.  аждый файл сохран€етс€ в виде отдельного документа, и со временем, по мере разрастани€ сервиса, такую базу легче поддерживать. Ќа значимые изменени€ в данных (как, например, изменени€ модели данных) не требуетс€ просто€, поскольку им не нужно обновление схемы.

 аталоги

 огда дело касаетс€ хранени€ и чтени€ файлов каталога, документные базы данных оказываютс€ в разы эффективнее рел€ционных —”Ѕƒ. ¬ каталогах могут хранитьс€ тыс€чи атрибутов, а документна€ база данных обеспечивает их быстрое считывание. ¬ документных базах данных атрибуты, св€занные с одним продуктом, хран€тс€ в одном документе. »зменение атрибутов в одном из продуктов не вли€ет на другие документы.


ѕлюсы и минусы документной базы данных

Ќиже представлены главные плюсы и минусы документной базы данных:

ѕлюсы документной Ѕƒ ћинусы документной Ѕƒ 
ќтсутствие схемы ќграничени€ по проверке на согласованность
Ѕыстрое создание и обслуживание ѕроблемы с атомарностью
ќтсутствие внешних ключей Ѕезопасность
ќткрытые форматы
¬строенное управление верси€ми

ѕлюсы

  • ќтсутствие схемы. Ќет ограничений по формату и структуре хранилищ данных. Ёто хорошо дл€ сохранени€ существующих данных в больших объемах и разных структурных состо€ни€х, особенно в непрерывно преобразующихс€ системах.
  • Ѕыстрое создание и обслуживание.  ак только вы создали документ, ему требуетс€ лишь минимальна€ поддержка Ц она может оказатьс€ не сложнее разового добавлени€ вашего сложного объекта.
  • ќтсутствие внешних ключей.  огда эта динамика св€зей отсутствует, документы станов€тс€ независимыми друг от друга.
  • ќткрытые форматы. „истый процесс сборки, в котором дл€ описани€ документов используетс€ XML, JSON и другие производные.
  • ¬строенное управление верси€ми. ѕо мере того, как увеличивает размер ваших документов, повышаетс€ и их сложность. ”правление верси€ми уменьшает количество конфликтов.

ћинусы

  • ќграничени€ по проверке на согласованность. ¬ примере с базой данных Ђ нигаї можно искать книги по несуществующему автору. ѕри поиске по коллекци€м книг вы можете находить документы, не св€занные с коллекцией авторов.  роме того, в каждом списке дл€ каждой книги может дублироватьс€ информаци€ об авторе. ¬ некоторых случа€х така€ несогласованность не особо важна. Ќо при более высоких стандартах непротиворечивости –—”Ѕƒ несогласованность серьезно снижает производительность баз данных.
  • ѕроблемы с атомарностью. –ел€ционные системы позвол€ют измен€ть данные из одного места без использовани€ JOIN. ¬се новые запросы на чтение унаследуют изменени€, внесенные в данные по одной команде (например, обновление или удаление строки). ƒл€ документных баз данных изменение, затрагивающее 2 коллекции, выполн€етс€ через 2 отдельных запроса (по одному на коллекцию). Ёто нарушает требовани€ к атомарности.
  • Ѕезопасность. ѕочти в половине современных веб-приложений отмечаетс€ активна€ утечка конфиденциальных данных. ѕоэтому владельцам нерел€ционных баз данных следует быть крайне внимательными к у€звимост€м веб-приложени€.

Ћучшие документные базы данных

Amazon DocumentDB

ќсобенности:

  • совместимость с MongoDB;
  • полна€ управл€емость;
  • высока€ производительность с низкой задержкой запросов;
  • строгое соответствие требовани€м и безопасность;
  • высока€ доступность.

 ак используетс€:

  • ¬с€ команда разработки Amazon пользуетс€ Amazon DocumentDB дл€ повышени€ оперативности и продуктивности. »м нужны были вложенные индексы, агрегирование, ad-hoc запросы (запросы узкой специализации), а также полностью управл€емый процесс.
  • BBC использует документные Ѕƒ дл€ запросов и хранени€ данных из нескольких потоков данных с компил€цией их в единый канал дл€ клиентов. ќни перешли на Amazon DocumentDB, чтобы получить полностью управл€емы сервис с высокой доступностью, прочностью и резервным копированием по умолчанию.
  • Rappi выбрали Amazon DocumentDB дл€ сокращени€ времени на написание кода, Dow Jones Ц дл€ упрощени€ операций, а Samsung Ц дл€ более гибкой обработки больших журналов.

MongoDB

ќсобенности:

  • ad-hoc запросы;
  • оптимизированное индексирование дл€ запросов;
  • сегментирование;
  • балансировка нагрузки.

 ак используетс€:

  • Forbes сократил врем€ компоновки на 58%, получив прирост в 28% по количеству подписок, за счет более быстрого создани€ новых функций, более простого объединени€ и более качественной обработки разнообразных типов данных.
  • Toyota заметила, что разработчикам было проще работать с документными Ѕƒ на больших скорост€х за счет использовани€ нативных JSON-документов. Ѕольше времени тратилось на создание ценности бизнеса, а не на моделирование данных.

Cosmos DB

ќсобенности:

  • быстрое чтение в любом масштабе;
  • 99,999% доступность;
  • полна€ управл€емость;
  • NoSQL/Native Core API;
  • бессерверное, экономичное/мгновенное масштабирование.

 ак используетс€:

  • Coca-Cola получает информацию за минуты, что способствует глобальному масштабированию. ƒо перехода на Cosmos DB на это уходили часы.
  • ASOS искали распределенную базу данных, котора€ легко и гибко масштабируетс€ дл€ обслуживани€ 100+ миллионов розничных клиентов по всему миру.

ArangoDB

ќсобенности:

  • валидации схем;
  • разноплановое индексирование;
  • быстрые распределенные кластеры;
  • эффективность с большими наборами данных;
  • поддержка многих нерел€ционных моделей данных;
  • объединение моделей в единые запросы.

 ак используетс€:

  • ќксфордский университет разработал онлайн-тестирование на сердечно-легочные заболевани€, благодар€ чему снизил посещаемость больниц и усовершенствовал результаты анализов.
  • FlightStats привел к единому стандарту разрозненную информацию о полетах (статус рейса, погодные услови€, задержки в аэропорту, справочные данные), что позволило получить точные, прогнозирующие и аналитические результаты.

Couchbase Server

ќсобенность:

  • возможность управлени€ глобальными развертывани€ми;
  • крайн€€ гибкость и адаптивность;
  • быстрота в крупных масштабах;
  • простые облачные интеграции.

 ак используетс€:

  • BT использовал гибкую модель данных Couchbase дл€ ускорени€ собственных возможностей по высокопроизводительной поставке контента, а также легкого масштабировани€ в моменты резкого повышени€ спроса.
  • eBay перешел от Oracle к более экономичному и функциональному решению (их документной системы/хранилища типа Ђключ-значениеї). ¬озросла доступность и производительность приложени€, а разработчики могли пользоватьс€ своим опытом в SQL дл€ ускорени€ пайплайна CI/CD (конвейера сборки) через более гибкую схему.

CouchDB

ќсобенности:

  • графический интерфейс на базе браузера;
  • простейшие репликации;
  • аутентификаци€ пользовател€;
  • свойства ACID (јтомарность Ц —огласованность Ц »золированность Ц ѕрочность).

 ак используетс€:

  • Meebo (соцсеть) пользуетс€ CouchDB дл€ веб-интерфейса и его приложений.
  • The BBC выбрал CouchDB за платформы динамического контента

 ак выбрать?

—труктуру данных определ€ют важнейшие требовани€, предъ€вл€емые к приложению. ¬от несколько ключевых вопросов:

  • ¬ы будете больше читать или записывать? ¬ случае, если вы чаще записываете данные, лучше подойдут рел€ционные системы, поскольку они позвол€ют избегать задвоений при обновлени€х.
  • Ќасколько важна синхронизаци€? Ѕлагодар€ стандартам ACID, рел€ционные системы справл€ютс€ с этой задачей лучше.
  • Ќасколько сильно потребуетс€ измен€ть вашу схему базы данных в будущем? ƒокументные Ѕƒ Ц это беспроигрышный вариант, если вы работаете с разнообразными данными в масштабе и ищете минимальной поддержки.

Ќельз€ сказать, что документна€ —”Ѕƒ или SQL база лучше во всем. ѕравильный выбор зависит от вашего сценари€ использовани€. ѕринима€ решение, подумайте, какие типы операций будут выполн€тьс€ чаще всего.


«аключение

¬ данной статье мы объ€снили особенности документной базы данных, поговорили о плюсах и минусах системы, а также рассмотрели сценарии использовани€.  роме того, был приведен список лучших документных —”Ѕƒ и рассказано, как компании из рейтинга Forbes 500 пользуютс€ этими системами дл€ повышени€ эффективности своей де€тельности и процессов разработки.


—кидки 50% в Merion Academy

¬ыбрать курс