Один из наиболее часто задаваемых вопросов – какую базу данных мне использовать …
С другой стороны, базы данных NoSQL впервые были использованы в 1998 году Карло Строцци.
Наиболее распространенным различием между этими двумя системами баз данных (БД) является то, что SQL является реляционным, а NoSQL нереляционным.
Давайте углубимся в эти две базы данных, чтобы лучше обосновать свое решение, когда в следующий раз вы рассматриваете базу данных для своего проекта.
Структура базы данных
Давайте поговорим о структурировании.
SQL
База данных SQL имеет определенную структуру схем.
Схема содержит таблицы, и каждая таблица содержит определенное количество столбцов.
Это означает, что пользователь не может обновить таблицу за пределами количества столбцов, указанных в таблице.
Это особенно полезно, когда вам необходимо сохранить целостность данных, а также убедиться в том, какие данные сохраняются в вашей базе данных.
Каждая таблица в базе данных SQL может быть связана, то есть, вы можете иметь отношения между таблицами.
Эти отношения могут быть один ко многим, многие ко многим или один к одному.
Тип ваших отношений зависит от того, что вам нужно.
Например, давайте рассмотрим гипотетическую ситуацию; У нас есть компания с пользователями, и пользователи могут делать заказы на товары.
Затем мы можем решить, что пользователи могут создавать несколько заказов, но каждый заказ может быть создан только одним пользователем.
Это будут отношения один ко многим, то есть один пользователь ко многим заказам.
Следовательно, структура таблицы для обеих таблиц будет выглядеть аналогично приведенной ниже.
В нашей БД у нас может быть таблица пользователей, структурированная так, как показано ниже:
users_table
----------------------------------------------------
id | name | email
-----------------------------------------------------
1 Idris idris@idrislawal.com
orders_table
---------------------------------------------------------------------------------
id | user_id | order_number
---------------------------------------------------------------------------------
1 1 20000001
В случае отношения «один к одному» мы могли бы также указать order_id в users_table, если мы решим получить пользователя по его связанному идентификатору заказа.
Для ситуаций «многие ко многим» обычно используется дополнительная таблица, называемая сводной таблицей.
users_table
-------------------------------------------------------------------------------------
id | name | email
-------------------------------------------------------------------------------------
1 Idris idris@idrislawal.com
orders_table
---------------------------------------------------------
id | order_number
---------------------------------------------------------
1 2000001
users_orders_table
------------------------------------------------------------------------------
id | order_id | user_id
------------------------------------------------------------------------------
1 1 1
NoSQL
Базы данных NoSQL были созданы с целью быть более гибкими, чем базы данных SQL, а также содержать большие объемы данных.
В NoSQL DB нет предопределенной схемы или таблиц.
Есть Коллекции, и в каждой Коллекции есть Документы.
Это позволяет сохранять данные в разных формах по мере их поступления.
Вы можете выбрать несколько разных документов с разными полями в одной коллекции.
Также возможно вручную установить отношения между коллекциями.
Однако они не подходят для такой цели.
Вместо этого вы можете сохранить все, что нужно для одного запроса, в одну коллекцию.
Если вы человек, привыкший к SQL, вы можете рассматривать Коллекции как таблицы, а Документы – как строки с таблицами.
Тем не менее, нет никаких ограничений на столбцы данных, которые вы можете добавить с таблицей.
Возвращаясь к нашему ранее определенному гипотетическому примеру компании с пользователями и заказами.
Коллекция пользователей может быть определена как,
{id: 1, name: 'idris', email: 'idris@idrislawal.com'}
{id: 1, order_number: 2000001, user_id:1}
{id:1, order_number:200001, user{id:1, name: 'idris', email:'idris@idrislawal.com'}}
Ключевой момент, на который следует обратить внимание: если вы создаете приложение, которое выполняет много операций чтения, а не записи, вам больше подойдет вариант NoSQL. Потому что вы можете хранить все свои данные в одной коллекции, и вы можете легко читать из этого источника, чтобы получить все необходимые данные.
Масштабирование баз данных
Давайте рассмотрим, как работает масштабирование.
SQL
Базы данных SQL нельзя масштабировать по горизонтали, а только по вертикали. Что это вообще значит?
Горизонтальное масштабирование означает разделение данных из одной БД на несколько баз данных для облегчения загрузки.
Однако данные SQL нельзя разделить на отдельные БД из-за их строгой природы.
Правильно масштабировать БД SQL – это увеличивать ЦП, память и дисковое пространство существующего сервера БД, и именно это означает его вертикальное масштабирование.
NoSQL
NoSQL БД можно масштабировать как по горизонтали, так и по вертикали.
Это связано с гибкостью в хранении данных.
Таким образом, это позволяет разделять данные на несколько баз данных, как в случае горизонтального масштабирования.
При необходимости его можно масштабировать по вертикали.
Здесь следует отметить одну ключевую вещь: когда дело доходит до масштабирования, базы данных SQL и NoSQL могут эффективно масштабироваться. Однако для баз данных SQL вертикальное масштабирование может быть ограничением; один сервер БД будет иметь ограничение на количество вычислительной мощности, которую он может нести.
Здесь также важно отметить, что для большинства приложений, которые вы создадите, вы можете не использовать максимум вычислительных возможностей вашего сервера, но полезно помнить об этом.
Однако для крупных бизнес-приложений, реализующих SQL, популярным вариантом преодоления этого ограничения является шардинг.
Что такое шардинг?
Примеры баз данных
- MySQL – очень популярная база данных с открытым исходным кодом. Тем не менее, база данных для многих разработчиков PHP может быть легко использована с Node.js, C #, C ++, Java, Perl, Ruby и Python.
- MSSQL – Microsoft SQL обеспечивает большую стабильность, поскольку его разработка осуществляется непосредственно компанией Microsoft, которая также предлагает некоторую поддержку в плане аварийного восстановления.
- MariaDB – Она была построена на MySQL создателями MySQL, намереваясь сохранить MariaDB бесплатной навсегда.
- PostgresSQL – очень популярная база данных с открытым исходным кодом. Гордится тем, что является самой передовой в мире базой данных с открытым исходным кодом.
- Oracle – Обычно он адаптирован к корпоративным решениям Oracle с некоторыми ограничениями в бесплатной версии.
NoSQL
- MongoDB – вероятно, самая известная NoSQL DB, распространенная среди разработчиков приложений, работающих со стеком MERN (MongoDB, Express, React, Node) или MEAN-стеком (MongoDB, Express, Angular, Node).
- Firebase – Представленный в 2011 году и приобретенный Google в 2014 году, широко используется разработчиками веб-приложений и мобильных приложений.
- Apache Couch DB – основанная на документе NoSQL DB, которая хранит данные в формате JSON.
- Redis: Это NoSQL DB, вероятно, наиболее известна своим использованием для хранения данных с дополнительным временем жизни. Он также известен своей скоростью.
Заключение
Вы можете создать любое приложение с базой данных SQL или NoSQL.
Это зависит от ваших требований.
Если вы рассматриваете базу данных, в которой у вас больше чтений и меньше записей, хорошим вариантом может быть NoSQL.
Однако, если вы рассматриваете возможность создания приложения с большим количеством операций записи, чем операций чтения, SQL может быть лучшим решением.
Что касается масштабируемости, когда ваше приложение достигает очень больших масштабов, вы можете использовать обе базы данных.