Важный шаг в запуске любого проекта базы данных: реляционная и нереляционная, теорема CAP и многое другое.

Когда вы начинаете новый проект корпоративной базы данных, одним из наиболее важных шагов является выбор правильной базы данных. С появлением больших данных стало гораздо больше возможностей для управления данными. Правильный выбор базы данных будет означать следующее:

  • Прежде всего, вы должны понимать, как ваша база данных будет использоваться в рамках требований вашего проекта.
  • С одним типом базы данных вы сможете удовлетворить только некоторые потребности в базе данных.
  • Эффективность достигается только после того, как вы успешно сопоставили все потребности вашей базы данных по отдельности с правильным типом базы данных.
  • Всегда существует компромисс между согласованностью, доступностью и допуском к разделению.

Понимание компромисса

Причина того, что сегодня у нас доступно множество вариантов баз данных, связана с теоремой CAP. CAP означает согласованность, доступность и устойчивость к разделам.

Согласованность означает, что любой запрос на чтение будет возвращать самую последнюю запись.

Доступность означает, что неотвечающий узел должен ответить в разумные сроки.

Допуск раздела означает, что система продолжит работу, несмотря на сбои сети или узла.

В любой момент времени только два из этих трех требований могут быть удовлетворены одновременно.

Реляционные базы данных традиционно отличаются высокой согласованностью и высокой доступностью за счет устойчивости к разделам.

Примеры: SQL Server, MySQL, база данных Oracle, PostgresSQL, IBM DB2.

Нереляционные базы данных были разработаны для удовлетворения требований доступности и допустимости разделов или (согласованности и допустимости разделов).

Примеры: Memcached, Redis, Coherence, Hbase, BigTable, Accumulo, MongoDB, CouchDB.

Для сложных систем, интенсивно использующих как чтение, так и запись, может быть важно иметь комбинацию реляционных и нереляционных баз данных, чтобы разделить задачи чтения и записи для оптимизации CAP.

Важные вопросы, которые нужно задать

Следующим шагом к выбору базы данных будет список вопросов, которые нужно задать в связи с вашими бизнес-требованиями. Вот некоторые

Сколько отношений в ваших данных?
Каков уровень сложности ваших данных?
Как часто меняются данные?
Как часто ваше приложение запрашивает данные?
Как часто ваше приложение запрашивает взаимосвязь, лежащую в основе данных?
Как часто ваши пользователи обновляют данные?
Как часто ваши пользователи обновляют логику данных?
Насколько критично ваше приложение в случае бедствия?

Понимание преимуществ и недостатков

Реляционные базы данных оптимизированы для записи. Они оптимизированы для согласованности и доступности.

Преимущества реляционных баз данных включают простоту, легкость извлечения данных, целостность данных и гибкость.

Недостатки реляционных баз данных:

Дёшево - дорого устанавливать и поддерживать базу данных.
Структурированные ограничения - реляционные базы данных имеют ограничения на длину полей. Это может быть неудобно для хранения большого количества информации в одном поле.
Изоляция - несколько реляционных баз данных могут легко превратиться в «островки информации». Может быть сложно подключить базы данных, чтобы они могли общаться друг с другом.

Нереляционные базы данных оптимизированы для чтения. Они служат требованиям доступности и допуска раздела или согласованности и толерантности раздела.

Преимущества нереляционных баз данных:

Гибкость - хранение больших объемов структурированных, полуструктурированных и неструктурированных данных.
Гибкое программирование - позволяет выполнять быстрые итерации спринтов и изменений кода.
Недорогая масштабируемость - позволяет эффективно масштабировать архитектуру без дорогостоящих накладных расходов.

Недостатки нереляционных баз данных:

Согласованность данных - нереляционные базы данных не выполняют транзакции ACID. Вместо этого они полагаются на «возможную последовательность». Выгоды производительности этих баз данных означают, что их согласованность обходится дорого.

Стандартизация - не существует определенного программного интерфейса для различных баз данных. Каждый из них отличается по языку запросов от другого.

Масштабируемость. Не все нереляционные базы данных хороши для автоматизации процесса сегментирования или распределения базы данных по нескольким узлам. Это накладывает ограничения на возможность увеличения или уменьшения масштабов при колебаниях спроса.

Понимание различных типов нереляционных баз данных

В наши дни существуют разные виды нереляционных баз данных. Они попадают в определенные категории. Каждая категория нереляционных баз данных служит определенной цели.

Пары "ключ-значение". Эти базы данных лучше всего работают с простой схемой базы данных. Он лучше всего подходит для большого количества операций чтения, записи и небольшого количества обновлений. Лучше всего он работает, когда нет сложных запросов или бизнес-логики.

Примеры: Redis, Dynamo DB и Cosmos DB.

Документ. Эти базы данных работают лучше всего, если вам нужна гибкая схема. Данные хранятся в формате XML или JSON. Вы можете жить с высокой производительностью чтения и можете сбалансировать производительность чтения с производительностью записи. Вы можете использовать индексы, чтобы максимизировать производительность с этими базами данных.

Примеры: MongoDB, DynamoDB и Couchbase.

График. Эти базы данных отлично подходят, когда у вас есть сложная схема базы данных. Вам необходимо часто отображать бизнес-логику между узлами. Базы данных графиков позволят вам перемещаться между узлами.

Примеры: Neo4j, Cosmos Db и Amazon Neptune.

Теперь, когда у вас есть твердое представление о том, что необходимо для выбора базы данных для вашего следующего проекта корпоративной базы данных, вы можете выбрать одну или несколько для различных потребностей приложения, которые могут у вас возникнуть. Ваш выбор будет осознанным, в котором будут учтены все различные бизнес-потребности, которые могут у вас возникнуть.

Об авторе

Цзюнь Ву (Jun Wu) - автор контента по технологиям, искусственному интеллекту, науке о данных, психологии и воспитанию детей. Имеет опыт программирования и статистики. В свободное время она пишет стихи и ведет блоги на своем сайте.

Подпишитесь на мою еженедельную рассылку, чтобы оставаться на связи