Хранилища данных NoSQL
Хранилища данных NoSQL — это нереляционные базы данных (ключ-значение, документные, ширококолоночные и графовые), которые используют гибкие модели данных и стратегии распределения для горизонтального масштабирования и обеспечения доступности за счет некоторых реляционных гарантий.
Definition
Хранилище данных NoSQL — это база данных, которая отходит от реляционной модели, организуя данные в виде пар ключ-значение, документов, широких разреженных столбцов или графов, и обычно распределяет их по кластеру с репликацией и ослабленной согласованностью для достижения масштабируемости и доступности.
Scope
Эта тема охватывает основные категории систем NoSQL и их модели данных: хранилища ключ-значение для простого поиска, документные хранилища для вложенных записей, ширококолоночные хранилища для разреженных, больших таблиц и графовые базы данных для сильно связанных данных. В ней рассматриваются общие для этих систем проектные решения — шардирование, репликация и настраиваемая согласованность — а также шаблоны доступа, которым соответствует каждая модель. Она исключает широкую теорию согласованности (CAP и модели согласованности) и фреймворки обработки, которые являются смежными темами.
Core questions
- Какую модель данных предоставляет каждая категория NoSQL (ключ-значение, документная, ширококолоночная, графовая)?
- Какие шаблоны доступа и рабочие нагрузки подходят для каждой категории?
- Как хранилища NoSQL шардируют и реплицируют данные для масштабирования и доступности?
- Какие реляционные функции (соединения, транзакции, схемы) они ослабляют и почему?
- Как настраиваемые параметры согласованности позволяют приложениям балансировать между задержкой и актуальностью?
Key concepts
- хранилище ключ-значение
- документное хранилище
- ширококолоночное хранилище
- графовая база данных
- шардирование и репликация
- настраиваемая согласованность
- гибкость схемы
- денормализованные шаблоны доступа
Key theories
- Модели ключ-значение и ширококолоночные
- Хранилища ключ-значение сопоставляют непрозрачные ключи со значениями для простого и быстрого поиска, в то время как ширококолоночные хранилища организуют данные в строки с гибкими, разреженными семействами столбцов; обе, примером которых являются Dynamo и Bigtable, масштабируются до огромных кластеров с шардированием и репликацией.
- Документные и графовые модели
- Документные хранилища содержат самоописывающиеся вложенные записи (часто JSON) и поддерживают запросы к их структуре, в то время как графовые базы данных моделируют сущности и отношения как узлы и ребра, оптимизированные для обхода сильно связанных данных.
- Ослабленные гарантии для масштабирования
- Для горизонтального масштабирования и сохранения доступности многие хранилища NoSQL ослабляют схемы, отказываются от многострочных транзакций и соединений, а также предлагают настраиваемую или конечную согласованность, перекладывая часть ответственности за целостность на приложение.
Clinical relevance
Хранилища NoSQL широко используются в качестве строительных блоков интернет-сервисов: хранилища ключ-значение и ширококолоночные хранилища поддерживают состояние сеансов, каталоги и данные временных рядов в огромных масштабах, документные хранилища подходят для гибких данных приложений, а графовые базы данных обеспечивают работу систем рекомендаций и обнаружения мошенничества, что делает знание их моделей необходимым для инженерии данных.
History
Движение NoSQL выросло из потребности интернет-компаний масштабироваться за пределы одноузловых реляционных баз данных. Google Bigtable (2006/2008) представил ширококолоночную модель, а Amazon Dynamo (2007) — высокодоступную, в конечном итоге согласованную модель ключ-значение; эти влиятельные разработки породили поколение открытых хранилищ ключ-значение, документных, ширококолоночных и графовых баз данных в конце 2000-х и 2010-х годов.
Key figures
- Werner Vogels
- Jeffrey Dean
- Sanjay Ghemawat
Related topics
Seminal works
- decandia2007
- chang2008
Frequently asked questions
- Как выбрать между хранилищами ключ-значение, документными, ширококолоночными и графовыми?
- Сопоставьте модель с шаблоном доступа: ключ-значение для простого поиска по известному ключу; документное для самодостаточных, вложенных записей, запрашиваемых по их полям; ширококолоночное для очень больших, разреженных таблиц с предсказуемым доступом по ключу строки; и графовое для данных, доминирующих отношениями и обходами, таких как социальные сети или рекомендации.
- Поддерживают ли хранилища NoSQL транзакции?
- Исторически многие хранилища NoSQL предлагали только атомарные операции с одним ключом и не имели многозаписных транзакций, обменивая их на масштабируемость. Это изменилось: ряд современных систем NoSQL и 'NewSQL' теперь предоставляют многодокументные или даже распределенные транзакции, поэтому поддержка транзакций сильно варьируется и должна проверяться для каждой системы.