7 типов современных баз данных: предназначение, достоинства и недостатки
Артём Гогин
руководитель направления в хранилище данных в Сбербанке
Существуют сотни баз данных SQL и NoSQL. Одни популярны, другие игнорируются. Некоторые просты и хорошо документированы, а некоторые сложны в использовании. Одни имеют открытый код, а другие проприетарные. Что, возможно, наиболее важно, некоторые масштабируемы, оптимизированы, высокодоступны, а некоторые сложно масштабировать или поддерживать.
Возникает естественный вопрос: какую базу данных выбрать? Чтобы ответить на него, мы должны решить, чего мы хотим достичь с помощью базы данных. Чтобы составить представление, необходимо ответить на следующие вопросы:
- Нужен ли нам аналитический доступ к базе данных?
- Нужно ли нам писать или читать в реальном времени?
- Сколько таблиц / записей мы хотим сохранить?
- Какая доступность нам нужна?
- Нужны ли нам столбцы?
- Сможем ли мы получить доступ к таблицам, отфильтрованным по столбцам или по строкам?
Принимая решение, нужно помнить, что может предложить та или иная база данных. Специфика каждой БД может отличаться, но в целом существует только несколько типов, в рамках которых мы можем достичь в основном одинаковых целей. Рассмотрим их подробнее.
Реляционные базы данных SQL
Если вы когда-либо работали с базами данных, скорее всего, вы начали с этого типа, потому что он самый популярный и распространенный. Такие БД позволяют хранить данные в реляционных таблицах с определенными столбцами определенного типа. Реляционные таблицы хороши для нормализации и объединения.
Достоинства:
- Поддержка SQL
- ACID-транзакции (атомарность, согласованность, изоляция и долговечность)
- Поддержка индексации и разделения
Недостатки:
- Плохая поддержка неструктурированных данных / сложных типов
- Плохая оптимизация обработки событий
- Сложное / дорогое масштабирование
Примеры: Oracle DB, MySQL, PostgreSQL.
Документно-ориентированные базы данных
Если мы не хотим объединять несколько таблиц для получения нужных данных, мы можем взглянуть на документно-ориентированные базы данных. Они позволяют хранить записи в формате JSON. В этом формате мы можем создать сложное значение для любого ключа и сразу включить всю структуру данных в одну запись.
Достоинства:
- Нет привязки к схеме
- Нет необходимости всегда писать все поля в каждой записи
- Хорошая поддержка сложных типов
- Подходит для OLTP
Недостатки:
- Плохая поддержка транзакций
- Слабая аналитическая поддержка
- Сложное / дорогое масштабирование
Примеры: MongoDB.
Базы данных в оперативной памяти
Базы данных этого типа могут предоставлять в реальном времени ответ для выбора и вставки определенных записей. Большинство из них в основном хранят данные в ОЗУ, но в некоторых случаях они также предлагают постоянное хранилище на жестких дисках или твердотельных накопителях. Большинство этих баз данных работают с записями «ключ-значение», поэтому значения можно запоминать в формате, ориентированном на документы.
Достоинства:
- Быстрое написание
- Быстрое чтение
Недостатки:
- Труднодостижимая надёжность
- Дорогое масштабирование
Примеры: Redis, Tarantool, Apache Ignite.
Базы данных с широкими столбцами
Эти базы данных хранят данные в виде записей ключ / значение на жестком диске или твердотельном накопителе. Эти решения предназначены для достаточно хорошего масштабирования, чтобы управлять петабайтами данных на тысячах общих серверов в распределенной системе. Они представляют архитектуру SSTable. Эта архитектура была разработана для двух случаев использования: быстрый доступ к ключу и быстрая запись с высокой доступностью.
Достоинства:
- Быстрая запись построчно
- Быстрое чтение по ключу
- Хорошая масштабируемость
- Высокая доступность
Недостатки:
- Формат «ключ-значение»
- Нет поддержки аналитики
Примеры: Cassandra, HBase.
Столбчатые базы данных
Иногда нам нужно быстро получить доступ к данным не с помощью определенных ключей, а с помощью определенных столбцов. В этом случае лучше отказаться от построчной вставки и перейти к пакетной записи. Пакетная вставка позволяет столбчатым базам данных готовить данные для быстрого чтения по столбцам.
Достоинства:
- Быстрое чтение столбец за столбцом
- Хорошая аналитическая поддержка
- Хорошая масштабируемость
Недостатки:
- Подходит только для пакетных вставок
Примеры: Vertica, Clickhouse.
Поисковая система
Если мы хотим получить доступ к данным с помощью фильтра по любому значению и даже по любому слову в столбце, мы должны вспомнить про поисковые системы. Эти базы данных выполняют индексацию каждого слова в столбцах и позволяют выполнять полнотекстовый поиск. Они идеально подходят для хранения и анализа журналов или больших текстовых значений.
Достоинства:
- Быстрый доступ по любому слову
- Хорошая масштабируемость
Недостатки:
- Подходит только для пакетных вставок
- Плохая аналитическая поддержка
Примеры: Elastic.
Графовые базы данных
Для некоторых случаев подходят графовые структуры данных. Если ваши задачи требуют работы с графами, существуют специальные базы данных, которые удовлетворят ваши потребности.
Достоинства:
- Структура данных графа
- Управляемые отношения между сущностями
- Гибкие конструкции
Недостатки:
- Специальный язык запросов
- Трудно масштабировать
Примеры: Neo4j.
Выводы
Практически любую задачу можно выполнить практически с любым типом базы данных. Вопрос в том, насколько это будет дорого и оптимизировано. Выбор инструмента, к которому вы привыкли, может сократить ваше время вывода на рынок.
Если вы готовитесь к собеседованию, посмотрите также статью, в которой собраны 27 распространённых вопросов по SQL и ответы на них.
Как выбрать базу данных – Amazon Web Services (AWS)
Скрыть Докажите, что это возможно Блог о стартапах Истории клиентов Подкаст для стартапов Шоу Now Go Build от Amazon Prime Video
Скрыть Искусственный интеллект / машинное обучение для стартапов Serverless Контейнеры для стартапов
Скрыть Оптимизация затрат Искусственный интеллект и машинное обучение Решения для работы с данными Ресурсы для стартапов
Этот материал входит в серию технических статей, написанных командой архитекторов программных решений AWS для стартапов с целью помочь создателям стартапов заложить основу для быстрого развития их бизнеса. Эта серия является общим обзором технических решений, которые необходимо принять на этапе создания стартапа, а также сервисов AWS, наиболее подходящих для их реализации.
Как выбрать базу данных
Специалист, в обязанности которого входит принятие технических решений, обычно выбирает базу данных для стартапа. При написании приложения в распределенной системе все изменения фиксируются в базе данных. Поэтому миграция базы данных является наиболее сложной частью миграции рабочей нагрузки. Еще сложнее добиться при этом нулевого времени простоя. Если с самого начала вы не будете торопиться и осознанно подойдете к выбору технологии баз данных, вы примете важное решение для своего стартапа. В этой статье мы рассмотрим факторы, которые вам будет необходимо учесть.
Подходящие инструменты для каждого задания
Чтобы принять обоснованное решение, сначала следует ознакомиться с различными типами баз данных. Если говорить конкретнее, мы рассмотрим базы данных с двух точек зрения – характеристик доступа и образцов хранимых данных.
Данные могут быть структурированными, например схемы SQL, или частично структурированными, например объекты JSON, где каждый объект может иметь разную форму. Данные также могут не иметь определенной структуры, например в случае текстовых данных для полнотекстового поиска или просто пары «ключ – значение», которая не сильно отличается от отношения «имя файла – содержимое файла».
Данные также могут быть разделены по размеру, количеству создаваемых данных (чтение) или получаемых данных (запись). Платежные шлюзы – это особый вариант использования, при котором важным фактором является скорость чтения и записи.
При выборе базы данных также можно учитывать скорость создания или потребления данных. Например, данные фондовой биржи могут иметь небольшой объем, но скорость вычисления производных значений может достигать менее 10 миллисекунд в приложениях для обратного тестирования акций.
И наконец, данные также можно разделить по масштабу, скорости передачи, а также скорости одновременного создания и потребления данных. Мы различаем транзакционные (OLTP) и аналитические (OLAP) базы данных. Базы данных OLAP – это более крупные базы данных для учета складских запасов и архивирования данных. В основном они имеют более низкие ограничения по требованиям к скорости, но высокие ожидания в отношении объема обрабатываемых данных. Как правило, на раннем этапе стартапы могут обойтись без системы OLAP, поэтому мы сосредоточимся только на системах OLTP.
Реляционные базы данных
В течение долгого времени реляционные базы данных занимали доминирующее положение, но вполне очевидно, что времена одного типа баз данных остались в прошлом. Реляционные базы данных имеют широкий спектр применения, и на сегодняшний день они все еще являются доминирующим типом баз данных. Реляционные базы данных являются самоописываемыми, поскольку позволяют разработчикам определять схему базы данных, а также отношения и ограничения между строками и таблицами в базе данных. Разработчики используют возможности реляционной базы данных (а не код приложения), чтобы реализовывать схемы и сохранять ссылочную целостность данных в БД. Как правило, реляционные базы данных используют для интернет‑приложений, мобильных приложений, корпоративных приложений и онлайн‑игр. Стартапы используют множество разновидностей и версий Amazon RDS и Amazon Aurora для создания высокопроизводительных и масштабируемых приложений на AWS. Как RDS, так и Aurora – это полностью управляемые и масштабируемые системы.
Документные данные и данные типа «ключ – значение»
По мере расширения системы большие объемы данных часто представлены в виде данных «ключ – значение», где одна строка сопоставляется с первичным ключом. Базы данных «ключ – значение» обладают высокой степенью разбиваемости и допускают горизонтальное масштабирование на уровнях, недоступных для других типов баз данных. Такие сценарии использования, как игры, рекламные технологии и Интернет вещей, особенно хорошо подходят для модели данных типа «ключ – значение», где для шаблонов доступа требуются операции Gets и Puts с малой задержкой для известных значений ключей.
Amazon DynamoDB – это управляемая база данных типа «ключ – значение» и документная база данных, которая обеспечивает производительность менее 10 миллисекунд при любом масштабе.
Следующий тип баз данных – документная база данных. Документные базы данных интуитивно понятны для разработчиков, поскольку данные на уровне приложения обычно представлены в виде документа JSON. Разработчики могут выполнять операции управления данными в базе данных, используя тот же формат модели документов, что и в коде приложения, и применять модель гибкой схемы Amazon DocumentDB для повышения эффективности разработки.
Графовые базы данных
Еще бывают графовые базы данных. Графовые базы данных предназначены для упрощения разработки и запуска приложений, работающих с наборами тесно связанных данных. В числе стандартных примеров использования графовой базы данных – социальные сети, сервисы рекомендаций, системы выявления мошенничества и графы знаний. Amazon Neptune – это полностью управляемый сервис графовых баз данных. Neptune поддерживает как модель Property Graph, так и модель Resource Description Framework (RDF), поэтому пользователи могут выбрать один из двух API графов – TinkerPop или RDF/SPARQL. Стартапы используют Amazon Neptune для построения графов знаний, предоставления внутриигровых рекомендаций, а также для выявления мошенничества.
Базы данных в памяти
Кроме того, существуют базы данных в памяти. В сфере финансовых услуг, электронной коммерции, интернет‑приложений и приложений для мобильных устройств время отклика иногда не должно превышать доли миллисекунды, и нужно быть всегда готовым ко внезапным всплескам трафика. Это касается, к примеру, ведения списков лидеров, хранения данных сеансов и аналитики в режиме реального времени. Мы разработали сервис Amazon ElastiCache, совместимый с Memcached и Redis, специально для поддержки рабочих процессов с высокой пропускной способностью и низкой задержкой, для которых не подходят хранилища на дисковых носителях. Еще одним примером специально разработанного хранилища данных является Amazon DynamoDB Accelerator (DAX). Благодаря сервису DAX считывание данных в DynamoDB происходит на порядок быстрее (от миллисекунд до микросекунд) даже при миллионах запросов в секунду.
Поиск
И наконец, есть поисковые базы данных. Многие приложения создают журналы, с помощью которых разработчики находят и устраняют проблемы. Сервис Amazon Elasticsearch Service (или Amazon ES) специально разработан для визуализации в режиме, близком к режиму реального времени, и анализа машинных данных посредством индексации, агрегации и поиска по слабоструктурированным журналам и метрикам. Кроме того, Amazon ES – это мощный, высокопроизводительный сервис для полнотекстового поиска. Стартапы хранят миллиарды документов для разнообразных критически важных примеров использования: от мониторинга хозяйственной деятельности и выявления в ней проблем до отслеживания стека распределенных приложений и оптимизации цен.
Варианты
После рассмотрения всевозможных вариантов баз данных давайте обсудим, как минимизировать риск, связанный с выбором базы данных для стартапа. Доступность инструментария высокого уровня – самый важный фактор для разработчиков. Как известно, стек PHP-MySQL или LAMP является хорошим примером того, как единообразие и поддержка MySQL становятся залогом успешной разработки на PHP и наоборот. В целом, RDS, DynamoDB и DocumentDB являются прекрасными вариантами для начала и имеют широкую поддержку инструментов, языков и гибких шаблонов использования данных.
Выводы
В этой статье мы обсудили множество типов баз данных: реляционные, документные, на основе пар «ключ – значение», графовые, в памяти и поисковые. При выборе базы данных для стартапа всегда важно прислушиваться к разным мнениям. В процессе принятия этого важного решения может оказаться, что правильный выбор – это не одна база данных, а, возможно, две или три. Выберите оптимальную базу данных для решения конкретной проблемы или группы проблем.
Удачи в разработке!
Какая база данных подходит для вашего варианта использования?
База данных позволяет нескольким пользователям поддерживать, обновлять и редактировать сохраненную информацию быстро, безопасно и эффективно. Это делает базу данных полезной для множества реальных случаев, таких как отслеживание корпоративных бухгалтерских записей, хранение огромных объемов данных из сети устройств IoT, отслеживание систем инвентаризации вашей компании или создание веб-приложения.
Вот наши главные выводы о выборе правильной базы данных:
- Базы данных необходимы для хранения, обслуживания, обновления, редактирования и доступа к бизнес-информации.
- Двумя основными категориями баз данных являются базы данных на основе SQL и на основе NoSQL.
- Oracle, MySQL, Microsoft SQL Server, PostgreSQL и MongoDB — все это популярные решения для бизнес-баз данных.
- Полное понимание варианта использования вашего бизнеса для хранения и редактирования данных может помочь вам выбрать правильный вариант базы данных.
- Доступны различные типы современных баз данных, каждая из которых имеет свой набор преимуществ и недостатков. Эта статья дает вам общее представление о самых популярных типах современных баз данных.
Содержание
- Сравнение на основе SQL и NoSQL
- Системы управления реляционными базами данных (на базе SQL)
- Системы нереляционных баз данных (на базе NoSQL)
- Обзор самых популярных современных систем баз данных
- База данных Oracle
- MySQL
- Microsoft SQL Server
- PostgreSQL
- МонгоДБ
Единый стек для современных групп данных
Получите персонализированную демонстрацию платформы и 30-минутную сессию вопросов и ответов с инженером по решениям
SQL-Based vs NoSQL-Based
Прежде чем углубляться в наиболее популярные современные варианты баз данных, важно понять разницу между системой управления реляционными базами данных (база данных SQL) и системой управления нереляционными базами данных (база данных NoSQL).
На протяжении большей части последних 40 лет предприятия полагались на системы управления реляционными базами данных (RDBMS), которые использовали язык программирования SQL.
* Источник изображения scalegrid.io .
Тем не менее, системы управления нереляционными базами данных на основе NoSQL становятся все более популярными, особенно потому, что специалисты по данным хотят, чтобы их инструменты бизнес-аналитики машинного обучения работали с более неструктурированными данными.
Дополнительная литература : SQL и NoSQL — чем они отличаются?
Системы управления реляционными базами данных (на основе SQL)
SQL — это язык управления базами данных, предлагающий высокоорганизованный и структурированный подход к управлению информацией. Подобно тому, как телефонная книга имеет разные категории информации (имя, номер, адрес и т. д.) для каждой строки данных, реляционные базы данных применяют строгие категориальные параметры, которые позволяют пользователям базы данных легко организовывать, получать доступ и поддерживать информацию в этих строках. параметры.
Основные причины, по которым СУБД на основе SQL продолжают доминировать:
- Они очень стабильны и надежны.
- Они придерживаются стандарта, который легко интегрируется с популярными программными стеками, такими как LAMP.
- Мы используем их уже более 40 лет.
Преимущества СУБД включают следующее:
- Соответствие ACID: Если система базы данных «совместима с ACID», она удовлетворяет набору приоритетов, которые измеряют атомарность, согласованность, изоляцию и надежность систем баз данных. Чем более ACID-совместима база данных, тем больше она служит для гарантии достоверности транзакций базы данных, уменьшения аномалий, защиты целостности данных и создания стабильных систем баз данных. Как правило, реляционные СУБД на основе SQL в высокой степени совместимы с ACID, но базы данных NoSQL жертвуют некоторым соответствием скорости и гибкости при работе с неструктурированными данными.
- Идеально подходит для согласованных систем данных: С РСУБД на основе SQL ваша информация остается в первоначально созданной структуре. Если вам не нужна динамическая информационная система для больших объемов данных — и вы не имеете дело с многочисленными типами данных — СУБД предлагает высокую скорость и стабильность.
- Улучшенные варианты поддержки : Поскольку базы данных РСУБД существуют уже более 40 лет, проще получить поддержку и интегрировать данные из других систем.
Недостатки СУБД включают следующее:
- Проблемы масштабируемости и трудности с сегментированием : СУРБД сложнее масштабировать по сравнению с базами данных NoSQL. Разделение также может быть проблемой. Разделение — это процесс разделения большой базы данных на более мелкие части для облегчения управления. Если вы имеете дело с консервативной базой данных с минимальным ожидаемым ростом, проблемы, связанные с решениями РСУБД, могут никогда не касаться вас. Если вы планируете расширяться и расти в ближайшие годы, нереляционная система баз данных (на основе NoSQL) может лучше соответствовать вашим потребностям.
- Меньшая эффективность с форматами NoSQL : Большинство СУБД теперь совместимы с форматами данных NoSQL, но работают с ними не так эффективно, как нереляционные базы данных.
Три самых популярных механизма баз данных RDBMS/SQL:
- База данных Oracle
- MySQL
- Microsoft SQL-сервер
Системы нереляционных баз данных (на основе NoSQL)
Нереляционные базы данных позволяют упорядочивать информацию более свободным способом — вроде размещения информации в разных папках с файлами. Это важно по двум причинам:
- Вы можете хранить неструктурированную информацию и предоставлять ее мощным системам бизнес-аналитики, которые будут анализировать ее с помощью алгоритмов ИИ.
- Вы можете хранить неструктурированные данные, которые планируете структурировать позже.
Нереляционные базы данных также работают с форматами NoSQL, такими как JSON, что необходимо для веб-приложений, которые позволяют веб-сайтам обновляться «вживую» без необходимости обновления страницы.
Некоторые преимущества нереляционных СУБД:
- Отлично подходит для обработки аналитики «больших данных» : Базы данных NoSQL устраняют узкое место, связанное с необходимостью категоризировать и применять строгие структуры к огромным объемам информации. Базы данных NoSQL, такие как HBase, Cassandra и CouchDB, поддерживают скорость и эффективность операций сервера, предлагая возможность работы с большими объемами данных.
- Никаких ограничений на типы данных, которые вы можете хранить : Базы данных NoSQL дают вам неограниченную свободу для хранения различных типов данных в одном месте. Это обеспечивает гибкость добавления новых и различных типов данных в вашу базу данных в любое время.
- Легче масштабировать : Базы данных NoSQL легче масштабировать. Они предназначены для фрагментации в нескольких центрах обработки данных без особых трудностей.
Некоторые недостатки реляционной СУБД:
- Труднее найти поддержку : Может быть сложнее найти опытных пользователей, когда вам нужно устранить неполадки.
- Отсутствие инструментов : Поскольку система является относительно новой по сравнению с решениями СУБД на основе SQL, не так много инструментов для тестирования и анализа производительности.
- Проблемы совместимости и стандартизации : В более новых системах баз данных NoSQL также отсутствует высокая степень совместимости и стандартизации, предлагаемая альтернативами на основе SQL.
Различные типы нереляционных баз данных
Вообще говоря, нереляционные базы данных можно разделить на четыре различных типа:
Хранилища графиков
Эти типы баз данных упрощают визуализацию данных. Они отлично подходят для хранения отношений между различными точками данных с помощью узлов. Типичными примерами графовых баз данных являются Neo4j и JanusGraph.
Хранилища столбцов
Существуют базы данных, не зависящие от схемы, которые могут обрабатывать запросы непоследовательных данных в режиме реального времени. Распространенными вариантами использования этих типов баз данных являются веб-аналитика и анализ данных с датчиков. Apache Cassandra и HBase — два наиболее часто используемых хранилища столбцов.
Хранилища ключ-значение
Это очень простые и быстрые системы управления базами данных, в которых хранятся пары ключ-значение. Конечная цель — быстро получить основные данные. Распространенными вариантами использования этих типов баз данных являются таблицы лидеров и данные корзины покупок. Двумя наиболее известными хранилищами ключей и значений являются Redis и Couchbase Server.
Хранилища документов
Хранилища документов — это базы данных с гибкими схемами. Эти типы баз данных лучше всего подходят для хранения частично структурированных данных и могут обрабатывать динамические запросы. Общие варианты использования хранилищ документов включают данные о клиентах, пользовательский контент и данные о заказах. MongoDB и PostgreSQL являются примерами хранилищ документов.
Интересно, что большинство РСУБД, таких как Oracle, MySQL и Microsoft SQL Server, теперь предлагают функциональность NoSQL. Тем не менее, нереляционные СУБД, такие как PostgreSQL, обычно лучше работают с форматами NoSQL.
Как выбрать правильный тип базы данных
Выбор правильной современной базы данных может привести к путанице. Вот некоторые факторы, которые следует учитывать при выборе системы управления базами данных:
Атомарность
Если атомарность является для вас главным приоритетом, придерживайтесь реляционной базы данных. Атомарность в управлении базами данных способствует согласованности. Он основан на принципе атомарных транзакций. Это ряд операций, которые считаются составными операциями. Другими словами, в атомарной транзакции выполняются либо все операции, либо ни одной.
Простейшим примером атомарной транзакции является перевод денег со счета A на счет B. Баланс со счета A должен быть вычтен, а необходимое число должно быть добавлено к счету B. Обе операции должны быть успешными, чтобы транзакция была успешной. .
Вертикальное или горизонтальное масштабирование
Если ваша стратегия работы с данными основывается на вертикальном масштабировании, вам подойдет реляционная база данных. Вертикальное масштабирование увеличивает вычислительную мощность сервера вместо добавления дополнительных серверов в систему. Это идеально, когда есть ограниченное количество пользователей и не требуется много запросов. В этом смысле вертикальное масштабирование может подойти для стартапов, ориентированных на бизнес. Основные преимущества вертикального масштабирования — скорость и простота.
С другой стороны, если вы ожидаете более высокую нагрузку пользователей или запросов, горизонтальное масштабирование является гораздо более дешевым решением. Базы данных NoSQL используют горизонтальное масштабирование. Вместо увеличения вычислительной мощности сервера они распределяют нагрузку между серверами. Горизонтальное масштабирование и, в свою очередь, базы данных NoSQL повышают эластичность бизнеса. Однако выполнение совместных операций в этих системах затруднено.
Скорость
Если скорость важнее соответствия ACID, лучше использовать нереляционную базу данных. В случае данных в реальном времени, таких как данные датчиков, можно допустить некоторый компромисс в отношении целостности данных в пользу скорости. В нереляционной базе данных каждая запись является независимой сущностью. Таким образом, можно одновременно выполнять несколько запросов независимо от размера базы данных.
Обзор самых популярных современных систем баз данных
Если вы покупаете СУБД, рассмотрите возможность выбора одного из пяти популярных механизмов баз данных, представленных ниже. Эти базы данных поддерживают форматы данных SQL и NoSQL. Однако нереляционные базы данных, такие как PostgreSQL и MongoDB, как правило, лучше работают с форматами NoSQL. Реляционные базы данных, такие как Oracle, Microsoft SQL Server и MySQL, лучше всего работают с чисто форматами SQL.
База данных Oracle
Oracle предоставляет высококачественные решения для баз данных с 1970-х годов. Самая последняя версия Oracle Database была разработана для интеграции с облачными системами и позволяет управлять огромными базами данных с миллиардами записей. Oracle предлагает решения для баз данных SQL и NoSQL.
Преимущества базы данных Oracle:
- Самая передовая технология : Oracle известна своими передовыми технологиями баз данных. У них давняя репутация за качество, функции и инновации для своей клиентской базы.
- Широкий спектр решений : Oracle предлагает обширный набор инструментов и решений, способных решить большинство информационных проблем, с которыми вы сталкиваетесь.
Недостатки базы данных Oracle:
- Дорогостоящее решение : Oracle, как правило, является дорогостоящим решением, которое небольшие организации, не являющиеся предприятиями, могут себе позволить.
- Может потребоваться обновление системы. : Текущие характеристики вашей системы могут оказаться недостаточными для внедрения Oracle. Многим предприятиям необходимо обновить свое оборудование, прежде чем использовать решения Oracle.
Оптимальный вариант использования Oracle : Если вы крупная организация, которой необходимо управлять огромным объемом данных, Oracle может быть идеальным выбором.
MySQL
MySQL — это бесплатная СУБД с открытым исходным кодом, которой владеет и управляет Oracle. Несмотря на то, что это бесплатное программное обеспечение, MySQL выигрывает от частых обновлений безопасности и функций. Крупные предприятия могут перейти на платные версии MySQL, чтобы воспользоваться дополнительными функциями и поддержкой пользователей. Хотя MySQL в прошлом не поддерживал NoSQL, начиная с версии 8, он обеспечивает поддержку NoSQL, чтобы конкурировать с другими решениями, такими как PostgreSQL. Подробнее о различиях между MySQL и PostgreSQL читайте здесь.
Преимущества MySQL:
- Это бесплатно : Как СУБД с открытым исходным кодом, MySQL можно использовать любым удобным для вас способом.
- Высокая совместимость с другими системами: MySQL имеет репутацию совместимости со многими другими системами баз данных.
Недостатки MySQL:
- Отсутствуют функции, общие для других СУБД : Поскольку MySQL отдает предпочтение скорости и гибкости, а не функциям, вы можете обнаружить, что в ней отсутствуют некоторые стандартные функции, присутствующие в других решениях.
- Проблемы с получением качественной поддержки : Бесплатная версия MySQL не поставляется с поддержкой по запросу. Однако у MySQL есть активное сообщество добровольцев, пользовательские форумы и множество полезной документации.
Наилучший вариант использования MySQL : MySQL является особенно ценным решением РСУБД для компаний, которым требуется решение с возможностями корпоративного уровня, но которые работают в условиях жестких бюджетных ограничений. Это чрезвычайно мощная и надежная современная СУБД с бесплатным уровнем.
Microsoft SQL Server
Microsoft SQL Server — это ядро базы данных, совместимое с локальными и облачными серверами. Кроме того, существует версия Microsoft SQL для Windows и Linux. Microsoft также предлагает поддержку временных данных. Эта функция полезна для запроса исторических данных, состояние которых могло измениться.
Microsoft SQL Server поддерживает динамическое маскирование данных, что повышает безопасность за счет маскирования конфиденциальной информации от непривилегированных пользователей.
Преимущества Microsoft SQL Server:
- Mobile : Этот механизм базы данных позволяет вам получать доступ к графике и визуальным элементам приборной панели через мобильные устройства.
- Интегрируется с продуктами Microsoft : Компании, которые активно используют продукты Microsoft, оценят простоту интеграции SQL Server с этими приложениями.
- Fast : Microsoft SQL Server завоевал репутацию быстрого и стабильного сервера.
Недостатки Microsoft SQL Server:
- Дорогой : более 14 000 долларов за одну лицензию корпоративного уровня на ядро. Существуют варианты лицензирования с уменьшенным масштабом примерно за 3700 и 900 долларов США, а также бесплатная версия, которую вы можете использовать для тестирования платформы.
Лучший вариант использования Microsoft SQL Server : Если вы являетесь корпорацией уровня предприятия, которая в значительной степени зависит от продуктов Microsoft, скорость, гибкость и надежность Microsoft SQL Server могут стать отличным выбором.
PostgreSQL
PostgreSQL — это бесплатная база данных с открытым исходным кодом и неограниченными возможностями масштабирования. PostgreSQL поддерживает как реляционные, так и нереляционные форматы данных.
Как СУБД с высоким уровнем доверия, существующая с начала 1990-х годов, PostgreSQL имеет базу преданных пользователей и дважды получала престижную награду «База данных года».
Интересной особенностью PostgreSQL является его история работы как со структурированными (SQL), так и с неструктурированными (NoSQL) данными. В PostgreSQL используется подход, основанный на каталогах, что делает его легко расширяемым. Он не просто хранит информацию для идентификации таблиц и столбцов. Он позволяет вам определять типы данных, типы индексов и функциональные языки. Он также совместим с большинством операционных систем, включая платформы Linux, и хорошо интегрируется с данными из самых разных баз данных. PostgreSQL также работает как с локальными серверами, так и с облачными серверами.
Несмотря на то, что это некоммерческая бесплатная система баз данных, большая сеть преданных последователей и добровольцев предлагает пользователям бесплатную поддержку и регулярно обновляет систему.
Преимущества PostgreSQL:
- Больше возможностей : PostgreSQL имеет гораздо больше возможностей, чем другие СУБД. Эти дополнительные функции включают в себя наследование таблиц, богатый набор типов данных (включая встроенную поддержку JSON), возможность определять столбец как «массив» типов столбцов и многое другое.
- Высокая совместимость с ACID : PostgreSQL неизменно считается самой совместимой с ACID СУБД. Если целостность данных является вашим главным приоритетом, PostgreSQL может быть идеальным выбором.
- Высокая масштабируемость : PostgreSQL может работать с большими таблицами базы данных.
Недостатки PostgreSQL:
- Отсутствие документации : PostgreSQL не имеет лучшей документации по сравнению с другими механизмами баз данных. Если вы столкнулись с проблемой, вам, возможно, придется обратиться за помощью в частную фирму поддержки PostgreSQL или попытать счастья на форумах поддержки сообщества.
- Проблема со скоростью при операциях только для чтения : PostgreSQL превосходно справляется с операциями чтения-записи для данных, требующих проверки, но может происходить замедление при работе с операциями только для чтения.
Лучший вариант использования PostgreSQL : поскольку PostgreSQL полностью бесплатен и масштабируем, это отличное решение для компаний любого размера. Что еще более важно, если вы можете извлечь выгоду из СУБД с собственной поддержкой JSON, PostgreSQL для вас. Узнайте больше о том, что вам следует выбрать, PostgreSQL или MySQL, здесь.
MongoDB
MongoDB — это бесплатное ядро базы данных с открытым исходным кодом, созданное специально для приложений, использующих неструктурированные данные. Поскольку большинство СУБД были созданы для структурированных данных — даже если надстройки теперь позволяют им обрабатывать нереляционные данные — MongoDB превосходит другие СУБД. MongoDB также работает со структурированными данными, но, поскольку этот движок базы данных не предназначен для реляционных данных, вероятно замедление производительности.
MongoDB соединяет нереляционные базы данных с приложениями с помощью множества драйверов (в зависимости от языка программирования приложения). Самые последние версии MongoDB включают подключаемые механизмы хранения. Также доступны обновленные функции текстового поиска, а также функции частичного индексирования, которые могут повысить производительность.
Преимущества MongoDB:
- Поддержка NoSQL : Эта СУБД была специально создана для поддержки данных JSON и NoSQL.
- Высокая гибкость : Поскольку MongoDB хранит информацию любого типа и управляет ею, разработчики сталкиваются с меньшими ограничениями при включении данных в базу данных MongoDB.
- Отлично подходит для приложений, включая веб-приложения. : MongoDB стала популярной СУБД для веб-приложений.
Недостатки MongoDB:
- Нет SQL-запросов : MongoDB не будет принимать SQL-запросы. Вы можете использовать дополнительные инструменты для перевода ваших запросов SQL для работы с этим механизмом базы данных. Однако обходной путь может быть неудобным.
- Сложно настроить : MongoDB требует больше времени и опыта для правильной настройки, чем другие решения.
- Отсутствие безопасности : Собственные настройки MongoDB, как правило, не очень безопасны. Для защиты этой базы данных потребуются дополнительные шаги.
Наилучший вариант использования MongoDB : Если вы создаете приложение поверх работающей базы данных и вам нужно очень быстрое время отклика, MongoDB может быть для вас правильным выбором. Однако если вы создаете хранилище данных для целей аналитики, возможно, вы захотите использовать другую платформу.
Чем может помочь Integrate.io
Различные базы данных выполняют разные функции. Тот, который вы выберете, зависит от вашего проекта данных. Вместо того, чтобы полагаться на одну базу данных для удовлетворения ваших потребностей в управлении данными, вы можете использовать платформу ETL, такую как Integrate. io, которая объединяет данные из нескольких источников и перемещает эти данные в конечный пункт назначения, чтобы они были готовы для аналитики.
Вот как работает Integrate.io:
- Он извлекает данные из базы данных, приложения SaaS, системы управления взаимоотношениями с клиентами, системы планирования ресурсов предприятия или другой платформы по вашему выбору.
- Это преобразует эти данные, чтобы они были готовы к анализу.
- Он загружает данные в конечный пункт назначения, такой как хранилище данных или озеро данных.
Затем вы можете обрабатывать эти данные с помощью инструментов бизнес-аналитики и получать бизнес-аналитику.
Integrate.io перемещает данные из источника в конечный пункт назначения с помощью конвейеров больших данных, не требующих кода или низкоуровневого кода. Это означает, что вы можете анализировать данные из базы данных без кода или навыков программирования.
Другие преимущества Integrate.io включают:
- Отличное обслуживание клиентов.
- Простая модель ценообразования, которая взимает плату с пользователей за используемые соединители, а не за объем данных.
- Мощный REST API.
- Соединитель Salesforce-to-Salesforce, который перемещает данные из Salesforce в другое место, а затем снова перемещает их обратно.
Integrate.io в настоящее время имеет средний пользовательский рейтинг 4,3 из пяти звезд на G2.com. Вот что люди думают о платформе:
- «Мне нравится использовать Integrate.io, это очень хорошо сделанный программный инструмент, он очень интуитивно понятен и удобен для пользователя. Что меня больше всего выделяет, так это качество и отзывчивость вашей службы поддержки». (Пользователь в сфере здравоохранения.)
- «Простой и интуитивно понятный пользовательский интерфейс. Отличная и актуальная документация. Команда поддержки Integrate.io тоже очень классная!» (Билл Х.)
- «Простой в использовании инструмент с относительно небольшой кривой обучения и возможностью масштабирования рабочих нагрузок по требованию. Широкий выбор соединителей ускоряет разработку». (Администратор в фармацевтике.)
Можно использовать несколько типов баз данных для достижения различных целей вашей стратегии данных. Integrate.io помогает объединить все ваши источники данных с помощью простой в использовании интеграционной платформы. Узнайте больше об автоматизированных конвейерах данных ETL от Integrate.io и решениях для интеграции с минимальным кодом или запланируйте демонстрацию и испытайте платформу на себе.
Как правильно выбрать базу данных для вашего сервиса | Натан Сильницкий | Wix Engineering
Опубликовано в·
4 мин чтения·
25 сентября 2021 г.Выбор базы данных для использования — одно из самых важных решений, которые вы можете принять при работе над новым микросервисом.
Если со временем вы поймете, что сделали неправильный выбор, миграция на другую базу данных станет очень дорогостоящей и рискованной процедурой.
Каждая технология базы данных (и тип) имеет свои преимущества и недостатки.
В то время как в некоторых базах данных общего назначения (которые одновременно поддерживают различные реляционные модели/документы/ключ-значение) происходит конвергенция, таких как MySQL и PostgreSQL, которые утверждают, что облегчают вашу жизнь,
Облачные провайдеры, такие как Amazon, предлагают ошеломляющий набор вариантов баз данных и хранилищ (например, у Amazon есть Aurora, RDS, DynamoDB, DocumentDB, Keyspaces, elastiCache, S3, эластичная файловая система и т. д.), что затрудняет определение того, какой из них правый.
При выборе правильной технологии баз данных для службы учитывайте следующие критерии:
Шаблоны запросов
Насколько сложны ваши шаблоны запросов? Вам нужен только поиск по ключу или еще по разным параметрам? Вам также нужен нечеткий поиск по данным?
То, как вы собираетесь получать данные, является одним из основных способов найти лучшую базу данных для вашего случая использования. Если вы собираетесь извлекать данные по ключу, то все, что вам нужно, — это хранилище ключей и значений (например, DynamoDB, Redis, S3, GCS).
Если вы в основном выполняете выборку по ключу, но иногда вам также необходимо выполнять выборку по одному или двум другим полям, вам могут подойти БД с широкими столбцами (например, DynamoDB, Cassandra).
С другой стороны, если вам потребуется выполнить запрос по многим различным полям, вы можете выбрать либо Реляционная БД (например, MySQL, PostgreSQL) или Документная БД (например, MongoDB, CouchDB, MySQL, PostgreSQ). Обратите внимание, что базы данных документов не поддерживают запросы скважин, требующие объединения данных из нескольких документов.
Наконец, если вы ищете возможности нечетких поисковых запросов (поиск свободного текста), то поисковых систем , таких как Elasticsearch и Solr, лучше всего подходят.
Непротиворечивость
Требуется ли строгая согласованность (чтение после записи, особенно при переключении записи в другой центр обработки данных) или конечная согласованность допустима?
В случае, если вам нужно прочитать ваши данные сразу после их записи (т. е. строгая согласованность), чем Реляционная база данных (например, MySQL, PostgreSQL) обычно более подходит, чем База данных документов (например, MongoDB, CouchDB), особенно в случае сценария с несколькими центрами обработки данных.
Объем памяти
Какой объем памяти требуется?
Большинство систем баз данных ограничены объемом дискового пространства (например, MySQL) или борются с производительностью на уровне Узлы и Осколки вырастают до сотен (например, Elasticsearch).
Когда требуется неограниченное хранилище, именно здесь на помощь приходят облачные решения. Object Storage Services , такие как S3 и GCS, позволят вам хранить столько данных, сколько вам нужно, с удобной опцией несколько уровней , поэтому вы платите меньше за данные, которые редко извлекаются.
Производительность
Какова необходимая пропускная способность и задержка?
Производительность всех баз данных снижается по мере увеличения объема трафика чтения/записи. Это время, когда пригодятся такие оптимизации, как переиндексация и повторное разделение ваших данных.
Если у вас очень высокий трафик и требуется очень низкая задержка, решения облачных провайдеров, такие как DynamoDB от Amazon и Bigtable от Google, могут быть именно тем, что вам нужно. Пока ваша служба развернута в том же центре обработки данных, что и база данных, вы можете наслаждаться задержками менее 10 мс. Недостатком является, конечно, стоимость в долларах.
Зрелость и стабильность
Если вы выберете локальное развертывание, какой опыт работы с этой технологией у вашей группы администраторов баз данных, насколько она зрелая?
Выбор самой современной, мощной и полнофункциональной базы данных для самостоятельного размещения может быть заманчивым, но пока у вашей организации нет опыта работы с этой базой данных, вы можете в конечном итоге пожалеть об этом.
Установка, настройка и тонкая настройка баз данных — длительное и рискованное испытание. Иногда выбор «старой» организации, работающей на собственном хостинге, приносит большие дивиденды в долгосрочной перспективе, когда речь идет о производительности стабильности .
Стоимость
Если вы выберете управляемое облачное решение, какова стоимость? Каковы его ограничения?
Модель оплаты для управляемых облачных решений обычно пропорциональна трафику чтения/записи. Обязательно ознакомьтесь с более подробной информацией о каждом управляемом решении и убедитесь, что оно экономически эффективно для ваших конкретных моделей использования операций чтения/записи.
Ниже вы найдете удобную блок-схему, которая поможет вам выбрать технологию базы данных, соответствующую вашим потребностям.
Недавно я написал статью о 5 технологиях баз данных, используемых 2000 микросервисами Wix, где я обсуждаю плюсы и минусы каждой технологии и различные конкретные варианты использования Wix для каждой из них. Это технологии MySQL, MongoDB, DynamoDB, Elasticsearch и S3.