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

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

Базы данных NoSQL, с другой стороны, имеют динамическую схему для неструктурированных данных, где они могут храниться разными способами: в виде столбцов, документов, графиков или в виде хранилища KeyValue. Эта гибкость означает, что:

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

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

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

Примеры баз данных SQL включают MySQL, Oracle, PostgreSQL, Microsoft SQL Server и то, что мы используем здесь, во Flatiron: SQLite3.

Примеры баз данных NoSQL включают MongoDB, BigTable, Redis, RavenDB Cassandra, HBase, Neo4j и CouchDB.

ОБЗОР

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

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