Когда разработчики впервые думают о управлении данными или выборе базы данных для своего приложения, первое, что часто приходит на ум, —
— правильно, таблица.
Затем они создают разные таблицы для различных типов данных, например, одна таблица для пользователей, а другая для продуктов, заказов и так далее. Поскольку данные разбросаны по разным таблицам, они обязательно будут иметь отношения друг с другом. Поэтому таблицы будут содержать ссылки на элементы в других таблицах с помощью внешнего ключа. И, наконец, они могут каждый раз выбирать реляционную базу данных для решения своих проблем. Особенно когда речь идет о отношениях, идея нереляционной базы данных может показаться очень непонятной.
Но проблема в том, что данные не всегда плоские. Требования к данным могут быть сложными, и когда разработчики визуализируют свои данные, не учитывая базы данных, они часто не представляются в виде таблицы. Вместо этого они могут казаться вложенными, иерархическими или даже похожими на граф.
Не обязательно каждый раз воображать таблицу, когда начинаешь работать с данными. В современных приложениях данные часто должны иметь гибкую схему с сложными типами данных. Поэтому преобразование их в таблицу не всегда является лучшей идеей. Кроме того, реляционные базы данных также ограничены в масштабировании. При масштабировании вам может потребоваться заботиться о шардировании, что часто требует значительных изменений на уровне приложения.
Введение в нереляционные базы данных, или, как их чаще называют, NoSQL. Вы можете упустить возможность полностью раскрыть потенциал NoSQL, если до сих пор избегали их в своих дизайнерских решениях. В этой статье мы кратко определим, что такое нереляционные базы данных, а затем представим различные варианты баз данных NoSQL для различных реальных проблем.
К концу мы также рассмотрим преимущества баз данных NoSQL по сравнению с реляционными и коснемся ситуаций, когда реляционная база данных остается более подходящим выбором.
Нереляционные базы данных, или NoSQL
Простыми словами, эти базы данных хранят данные в нереляционном формате. Они поставляются в различных типах, каждый из которых предназначен для определенных целей и вида неструктурированных данных, которые они могут поддерживать. Самые распространенные из них:
- Документоориентированные базы данных: Хранят данные в документах, подобных JSON
- Базы данных типа “ключ-значение”: Хранят данные с ‘ключ-значение’ структурой для уникальных ключей.
- Графовые базы данных: Используют узлы, ребра и свойства для представления и хранения отношений между точками данных.
Другие типы – колоночно-ориентированные, в памяти и временные базы данных.
Различные поставщики баз данных NoSQL предлагают функции, такие как создание индексов для определенных полей, SDK, удобные для разработчиков, высокую доступность, транзакционные операции и возможность легкого масштабирования вашей базы данных вверх или вниз.
Решение реальных проблем с помощью NoSQL
Давайте рассмотрим несколько примеров, где мы решаем реальные проблемы с помощью баз данных NoSQL.
Создание приложения блога с поддержкой комментариев и тегов
Для таких систем управления контентом лучше всего подходят документ-ориентированные базы данных. Каждый контент может быть отдельным документом. Схема гибкая, и каждый документ может содержать подколлекции. Вы можете использовать возможности индексации массив-полей от провайдеров баз данных документов для выполнения сложных запросов, например, извлечения всех блогов с их тегами.
Социальные и профессиональные сети
Графовые базы данных помогают определять сложные отношения между людьми. Легко найти друзей друзей через графовые запросы.
Данные сенсоров интернета вещей
Используйте данные временных рядов для обработки огромных объемов данных с отметками времени от устройства-сенсора.
Корзина покупок
Используйте базу данных типа “ключ-значение”, которая предлагает высокую конкурентоспособность с быстрыми чтениями и записями. Вы также можете использовать базы данных ключ-значение для хранения информации о сеансах пользователей, и корзина покупок может быть полем в рамках сеанса (для индивидуального сеанса покупок).
Системы рекомендаций
Используйте графовые базы данных для отображения отношений между пользователями, продуктами и предпочтениями.
Где NoSQL превосходит реляционные базы данных
Ниже приведены некоторые преимущества баз данных NoSQL по сравнению с реляционными базами данных:
- Продуктивность разработчиков: Поставщики NoSQL баз данных предлагают API и SDK, адаптированные для современного развития приложений, что позволяет быстрее создавать прототипы и разрабатывать.
- Масштабируемость: NoSQL базы данных масштабируются горизонтально (где вам просто нужно добавить больше серверов или узлов), что является экономически эффективным и проще в управлении по сравнению с вертикальным масштабированием, требуемым реляционными базами данных.
- Гибкость: NoSQL предлагает гибкую схему, что идеально подходит для гибкой разработки и изменяющихся требований к приложениям.
- Обработка вложенных данных: Часто данные вложены или иерархичны, как в форматах JSON или XML. NoSQL базы данных могут поддерживать эти форматы, где может потребоваться сложная трансформация при использовании реляционных баз данных для этого.
Где реляционные базы данных все еще имеют преимущество
Ниже приведены некоторые сценарии использования, где реляционные базы данных остаются актуальными и являются хорошей идеей.
- Аналитика и отчетность: Реляционные базы данных оптимизированы для произвольных запросов, агрегаций и отчетности. Для любых аналитических и отчетных сценариев использования реляционные базы данных все еще являются выбором номер один.
- Интенсивное использование отношений и соединений: Хотя вы все еще можете управлять и работать с отношениями с помощью NoSQL баз данных, если ваше приложение сильно зависит от соединений между различными наборами данных, реляционные базы данных могут быть хорошей идеей.
- Согласованность выше доступности: В сценариях, где согласованность данных важнее доступности (например, финансовые транзакции), реляционные базы данных могут обеспечить большую гарантию.
И вот мы завершаем нашу статью. Мы исследовали, что такое базы данных NoSQL и как они решают реальные проблемы в управлении данными. Базы данных NoSQL открывают мир возможностей для современных приложений, начиная от их гибкости в работе с сложными структурами данных до мощных функций, предлагаемых поставщиками. Для тех, кто еще не пробовал NoSQL, я надеюсь, что это вдохновит вас попробовать в своем следующем проекте — вы можете обнаружить, что это идеально подходит для ваших потребностей.
Source:
https://dzone.com/articles/nosql-for-relational-minds