Как правильно выбрать базу

база данных Программа перевода самородков

Как выбрать подходящую базу данных

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

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

Если вы когда-либо использовали базу данных, вы могли бы сказать: «Я бы выбрал только X, это база данных, которую я знаю и использую», что совершенно нормально, если производительность не является важным требованием для системы. В противном случае по мере масштабирования проекта неправильная база данных может стать препятствием для проекта, и иногда ее будет трудно исправить. Даже если вы работаете над зрелым проектом, в котором уже какое-то время используется определенная база данных, важно понимать ее ограничения и знать, когда в стек следует добавить другой тип базы данных (распространена работа с несколькими комбинациями данных).

Еще одним плюсом знания различных баз данных и их свойств является то, что это распространенный вопрос на собеседованиях!

В этой статье мы обсудим два основных типа баз данных:

  • Реляционная база данных (на основе SQL).
  • База данных NoSQL.

Мы обсудим различные типы баз данных NoSQL и когда их использовать. Наконец, мы обсудим плюсы и минусы реляционных баз данных по сравнению с базами данных NoSQL. В этой статье не рассматриваются сравнения между различными продуктами одного и того же типа базы данных (например, MySQL и MS SQL Server).

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


Реляционная база данных (на основе SQL)

Реляционная база данных состоит из набора соединенных таблиц (таких как таблицы CSV). Каждая строка в таблице представляет запись.

Почему она называется реляционной?Какие "отношения" существуют в такого рода базах данных? Предположим, у вас есть информационный лист учащегося и лист оценок курса (курс, оценка, идентификатор учащегося), каждая строка оценки связана с записью информационного листа учащегося.Связанный. Ссылаясь на рисунок ниже, значение столбца «Идентификатор учащегося» в таблице оценок курса указывает на строку в таблице «Студенты» через значение столбца «Идентификатор».

Все реляционные базы данных запрашиваются с использованием SQL-подобных языков, которые распространены и поставляются с операциями JOIN (т. е. операциями соединения, которые объединяют строки из двух или более таблиц, таких как приведенная выше таблица информации о студентах и ​​лист оценок за курс). База данных поддерживает индексирование столбцов, что позволяет выполнять более быстрые запросы на основе этих столбцов.

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

Общие реляционные базы данных:MySQL, PostgreSQL, Oracle, MS SQL Server.


Базы данных NoSQL

В то время как в реляционных базах данных все структурировано по строкам и столбцам, в базах данных NoSQL нет общей структурированной схемы для всех записей. Большинство баз данных NoSQL хранят записи JSON, и разные записи могут содержать разные поля.


На самом деле базы данных NoSQL должны называться «Не в основном SQL» — потому что многие базы данных NoSQL поддерживают запросы с помощью SQL, но их использование не является лучшей практикой.

Существует 4 основных типа баз данных NoSQL:

1. База данных хранения документов

Элементарной единицей базы данных хранилища документов является документ. Каждый документ представляет собой JSON, и разные документы могут иметь разные схемы и содержать разные поля. Базы данных хранилища документов позволяют индексировать определенные поля в документах, обеспечивая более быстрые запросы на основе этих полей (что заставит все документы иметь это поле).

Когда его следует выбирать?
Анализ данных. Поскольку разные записи не зависят друг от друга (как логически, так и структурно),Эта база данных поддерживает параллельные вычисления. Мы можем использовать его для простого анализа больших данных.

Общие базы данных для хранения документов:MongoDB, CouchDB, DocumentDB.

2. База данных хранилища столбцов

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

Когда его следует выбирать?
Когда вы склонны запрашивать подмножество столбцов в данных (данные не обязательно должны быть одним и тем же подмножеством для каждого запроса!). База данных хранилища столбцов очень быстро выполняет такие запросы, потому что ей нужно только прочитать эти определенные столбцы (тогда как база данных на основе хранилища строк должна читать все данные).

  • Это распространено в науке данных, где каждый столбец представляет функцию. В качестве ученого данных я часто использую подмножество функций для обучения моих моделей и часто осматривают взаимосвязь между особенностями и оценками (корреляция, дисперсия, значение).
  • Это также распространено в журналах - мы обычно храним много полей в базе данных журнала, но используйте только несколько полей на запрос.

Общие базы данных хранилища столбцов:Кассандра.

列存储数据库 vs. 行存储数据库。

3. База данных хранения ключей-значений

Запросы основаны только на ключах — вы запрашиваете ключ и получаете соответствующее значение. Запросы по разным значениям записей, например «выбрать все записи, где город == Нью-Йорк», не поддерживаются. Полезной функцией в таких базах данных является поле TTL (время жизни), которое может быть установлено на различное значение для каждой записи и состояния, когда запись собирается быть удаленной из базы данных.

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

Когда его следует выбирать?
Он в основном используется для кэширования, потому что он очень быстрый и не требует сложных запросов, а функция TTL очень полезна для кэширования. Его также можно использовать для любого другого типа данных, которые необходимо быстро запрашивать и удовлетворять формату ключ-значение.

Общие базы данных хранения ключей и значений:Редис, Memcached.

4. База данных хранения графов

Ребра ФИГ представляют узлы, хранящиеся в базе данных, содержат сущности и представляют отношения между сущностями.

Когда его следует выбирать?
Когда ваши данные представляют собой графики, такие как графики знаний и социальные сети.

Общие базы данных хранения графов:Neo4j, InfiniteGraph.


Реляционные базы данных и базы данных для хранения документов

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

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

  • Его структура данных проста и может соответствовать большинству типов данных, обычно используемых в проектах.
  • оно используетSQL. SQL очень распространен и по своей сути поддерживает операции соединения.
  • позволятьБыстрое обновление данных. Все базы данных хранятся на одном компьютере, а отношения между записями используются в качестве указателей, что означает, что вы можете обновлять одну запись за раз, и все связанные с ней записи будут обновлены одновременно.
  • Реляционные базы данных такжеПоддержка атомарных транзакций. Что такое атомарная транзакция: предположим, я хочу перевести $X со счета Алисы на счет Боба. Я хочу выполнить 3 операции: уменьшить счет Алисы на X, увеличить счет Боба на X и, наконец, записать транзакцию. Я хочу думать об этих действиях как об атомарной единице — происходят либо все действия, либо ни одно из них.

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

  • Поскольку каждый запрос выполняется в таблице -выполнение запросаВремя зависит от размера стола. Это важное ограничение, которое требует, чтобы мы сохраняли таблицы относительно небольшими и оптимизировали нашу базу данных для обеспечения масштабируемости.
  • При масштабировании реляционной базы данных масштабирование может быть выполнено за счет увеличения вычислительной мощности компьютера, на котором работает база данных.Увеличить масштаб". Почему это недостаток? Это связано с ограниченной вычислительной мощностью, которую может предоставить компьютер, и расширение ресурсов компьютера может потребовать некоторого времени простоя.
  • Реляционная база данныхООП не поддерживается, не поддерживает объектную ориентацию, даже представление простых списков очень сложно.

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

  • Это позволяет вам сохранитьразличные структурыОбъект.
  • Вы можете использовать прекрасный JSON для представления практически любой структуры данных, включаяОбъектно-ориентированное ООП, списки и словари.
  • Хотя NoSQL по сути является бесплатным режимом (подобно реляционной базе данных, которая не требует той же предопределенной структуры, что и схема, описание базы данных), но обычно поддерживаетПроверка схемы, что означает, что вы можете схематизировать набор данных, эта схема не так проста, как таблица, это схема JSON с определенными полями. (Примечание переводчика: схема, упомянутая здесь, является схемой).
  • NoSQL Запросочень быстро, каждая запись независима, поэтому время запроса не зависит от размера базы данных, иПоддержка параллелизма.
  • В NoSQL база данных масштабируется путем добавления большего количества машин и распределения данных между ними. Этот подход называется "Горизонтальное расширение"Это позволяет нам автоматически расширять ресурсы базы данных, когда это необходимо, и не вызывать простоев.

Недостатки баз данных хранения документов

  • в базе данных хранилища документоввозобновитьданные - этомедленныйпроцесс, потому что данные будут разделены и реплицированы между разными машинами.
  • Сама атомарная транзакция не поддерживается. Вы можете добавить это в свой код, используя механизм проверки и восстановления, но, поскольку записи разделены между машинами, это не может быть атомарным процессом, и могут возникнуть условия гонки. (Примечание переводчика: MongoDB 4.0 предоставляет встроенные операции транзакций)

Быстрая шпаргалка:

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

Если вы обнаружите ошибки в переводе или в других областях, требующих доработки, добро пожаловать наПрограмма перевода самородковВы также можете получить соответствующие бонусные баллы за доработку перевода и PR. начало статьиПостоянная ссылка на эту статьюЭто ссылка MarkDown этой статьи на GitHub.


Программа перевода самородковэто сообщество, которое переводит высококачественные технические статьи из Интернета сНаггетсДелитесь статьями на английском языке на . Охват контентаAndroid,iOS,внешний интерфейс,задняя часть,блокчейн,продукт,дизайн,искусственный интеллектЕсли вы хотите видеть более качественные переводы, пожалуйста, продолжайте обращать вниманиеПрограмма перевода самородков,официальный Вейбо,Знай колонку.