SQL или NoSQL — вот в чём вопрос
Разница между SQL и NoSQL: MySQL и MongoDB
При выборе базы данных предстоит принять важное решение: остановиться на реляционной (SQL) или нереляционной (NoSQL) структуре БД. Оба этих варианта вполне жизнеспособны, но между ними есть различия, которые пользователи должны учитывать при принятии решения. В этой статье мы рассказываем, в чем состоит разница SQL и NoSQL, а также обсуждаем еще две важные вещи: выбрать MySQL или MongoDB.
Основные различия
Представьте себе город (назовем его А), в котором все говорят на одном языке. На нем строятся все бизнес-процессы, этот язык используется во всех формах общения. Словом, жители этого города понимают друг друга и исследуют окружающий мир только посредством этого языка. Если сменить язык в одном месте, все будут сбиты с толку.
А теперь представьте другой город Б, в котором все дома говорят на разных языках. Все по-разному взаимодействуют с миром, нет никакого «универсального» способа понимания или устойчивой организации общения. Если один что-то изменит, это ни на кого не повлияет.
Этот пример помогает проиллюстрировать одно из основных различий между SQL (реляционной) и NoSQL (нереляционной) базами данных. Из него уже можно сделать определённые выводы.
Реляционные базы данных используют язык структурированных запросов (SQL) для того, чтобы обрабатывать данные и управлять ими. С одной стороны, это довольно удобно: SQL – один из наиболее разносторонних и общеупотребимых вариантов, так что это безопасный выбор. Также этот язык подходит для сложных запросов. С другой стороны, с этим языком идут определенные ограничения. В SQL нужно использовать заданные наперед схемы и определять структуру данных перед началом работы с нею. К тому же, все данные должны иметь одну и ту же структуру. Как в случае с городом А, перемена в структуре может обернуться сложностями и разрушить всю систему.
Нереляционные базы данных, напротив, обладают гибкими схемами для неструктурированных данных. Они могут храниться по-разному: в колонках, документах, графах или в виде хранилища «ключ-значение». Эта гибкость позволяет:
- Можно создавать документы, не определяя их структуру заранее;
- Каждый документ может обладать собственной уникальной структурой;
- Синтаксис может различаться в разных базах данных;
- В процессе работы можно добавлять новые поля.
Масштабируемость
В большинстве случаев SQL БД можно масштабировать вертикально, то есть можно проводить увеличение нагрузки на каждом отдельном сервере, повышая мощности ЦП, ОЗУ, твердотельного диска. А вот NoSQL БД можно масштабировать горизонтально. Это значит, что нагрузка распределяется благодаря разделению данных или добавлению большего количества серверов. Это как если бы вы добавляли больше этажей к зданию либо добавляли больше зданий к району. В последнем варианте система может получиться более крупной и мощной. Именно поэтому для крупных или часто меняющихся БД обычно выбирают NoSQL.
Структура
SQL БД имеют форму таблиц, а в NoSQL БД данные представляются в виде документов, пар «ключ-значение», графов или хранилищ wide-column. Из-за этого реляционные (SQL) базы лучше использовать для приложений, в которых нужно переходить между несколькими записями (например, система бухучета), или для систем устаревшего вида, которые при создании имели реляционную структуру.
Примерами SQL БД являются ySQL, Oracle, PostgreSQL и Microsoft SQL Server, а NoSQL БД – MongoDB, BigTable, Redis, RavenDB Cassandra, HBase, Neo4j и CouchDB.
SQL против NoSQL: MySQL либо MongoDB
Раз уж мы разобрались, в чем состоит разница SQL и NoSQL, рассмотрим ключевые различия между ними на примере MySQL и MongoDB.
MySQL: SQL (реляционная) база данных
Ниже представлены сильные стороны MySQL:
- Сформированность: MySQL – хорошо известная база данных, то есть она обладает крупным коммьюнити, широкими возможностями тестирования и стабильностью;
- Совместимость: MySQL доступна на всех основных платформах, включая Linux, Windows, Mac, BSD и Solaris. Также у нее есть адаптеры для таких языков, как Node.js, Ruby, C#, C++, Java, Perl, Python и PHP, то есть эта система не ограничена языком запросов SQL;
- Экономичность: Система является открытой и бесплатной;
- Воспроизводимость: Базу данных MySQL можно использовать на разных узлах, что позволяет снизить нагрузку и повысить масштабируемость и доступность приложения;
- Разделение данных: Несмотря на то что эту процедуру можно проводить на не всех SQL БД, серверы MySQL позволяют это сделать. Это не только экономично, но и может быть полезно для приложения.
MongoDB: NoSQL (нереляционная) база данных
Ниже представлены сильные стороны MongoDB:
- Динамичность: Как говорилось ранее, динамическая схема гарантирует гибкость, позволяющую менять структуру без редактирования существующих данных;
- Масштабируемость: MongoDB можно масштабировать горизонтально, благодаря чему уменьшается нагрузка для бизнеса;
- Легкость в управлении: Для этой базы данных не требуется администратор. Так как она достаточно дружелюбна в отношении юзеров, воспользоваться ей могут как разработчики, так и администраторы;
- Скорость: Эта БД показывает отличные результаты в работе с короткими запросами;
- Гибкость: В MongoDB можно добавлять новые столбцы и поля, не влияя на уже существующие записи и производительность приложения.
Какую базу данных выбрать для своего проекта?
MySQL – отличный выбор для любого приложения, которому будет удобно пользоваться ее заранее определенной структурой и готовыми схемами. Например, это касается приложений, которые осуществляют переходы между нескольким записями (системы бухучета или управления инвентарем) или основаны на устаревших системах (им подойдет структура MySQL).
MongoDB, напротив, подойдет для бизнесов с быстрым ростом или для баз данных, в которых не используются определенные схемы. Точнее, если у вас не получается определить схему для БД или структуры постоянно меняются (как часто бывает с мобильными приложениями, аналитикой, работающей в реальном времени, системами менеджмента контента и т. д.), выбирайте MongoDB.
SQL против NoSQL на примере MySQL и MongoDB
SQL против NoSQL на примере MySQL и MongoDB
- Переводы , 24 сентября 2018 в 18:50
- Corewood
Когда необходимо выбрать СУБД, главный вопрос обычно заключается в выборе реляционной (SQL) или нереляционной (NoSQL) структуры. У обоих вариантов есть свои преимущества, а также несколько ключевых особенностей, которые стоит иметь в виду при выборе.
Основные различия
Представьте себе город — пусть он называется Город А, где все говорят на одном языке. Все дела ведутся на нём, он используется в любой форме коммуникации — в целом это единственное средство взаимодействия и взаимопонимания для обитателей города. Изменение языка в любой из сфер деятельности собьёт всех с толку.
Теперь представьте Город Б, где все обитатели говорят на разных языках. Они совершенно по-разному взаимодействуют с окружающим миром, и для них не существует «универсального» средства общения.
Эти два примера наглядно демонстрируют различия между реляционными и нереляционными базами данных, и за этими различиями скрываются ключевые особенности обеих СУБД.
Реляционные базы данных используют структурированный язык запросов (Structured Query Language, SQL) для определения и обработки данных. С одной стороны, это открывает большие возможности для разработки: SQL один из наиболее гибких и распространённых языков запросов, так что его выбор позволяет минимизировать ряд рисков, и будет особенно кстати, если предстоит работа с комплексными запросами. С другой стороны, в SQL есть ряд ограничений. Построение запросов на этом языке обязывает предопределять структуру данных и, как в случае с Городом А, последующее изменение структуры данных может быть губительным для всей системы.
Нереляционные базы данных, в свою очередь, предлагают динамическую структуру данных, которые могут храниться несколькими способами: ориентированно по колонкам, документо-ориентированно, в виде графов или на основе пар «ключ-значение». Такая гибкость означает следующее:
- Вы можете создавать документы, не задавая их структуру заранее;
- Каждый документ может обладать собственной структурой;
- У каждой базы данных может быть собственный синтаксис;
- Вы можете добавлять поля прямо во время работы с данными.
Масштабируемость
В большинстве случаев SQL базы данных вертикально масштабируемые, то есть вы можете увеличивать нагрузку на отдельно взятый сервер, наращивая мощность центральных процессоров, объёмы ОЗУ или системы хранения данных. А NoSQL базы данных горизонтально масштабируемы. Это означает, что вы можете увеличивать трафик, распределяя его или добавляя больше серверов к вашей СУБД. Всё равно, что добавлять больше этажей к вашему зданию, либо добавлять больше зданий на улицу. Во втором случае, система может стать куда больше и мощнее, делая выбор NoSQL базы данных предпочитаемым для больших или постоянно меняющихся структур данных.
Структура
В реляционных СУБД данные представлены в виде таблиц, в то время как в нереляционных — в виде документов, пар «ключ-значение», графов или wide-column хранилищ. Это делает SQL базы данных лучшим выбором для приложений, которые предполагают транзакции с несколькими записями — как, например, система учётных записей — или для устаревших систем, которые были построены для реляционных структур.
26 мая в 18:00 в 18:00, онлайн, беcплатно
В число СУБД для SQL баз данных входят MySQL, Oracle, PostgreSQL и Microsoft SQL Server. Для работы с NoSQL подойдут MongoDB, BigTable, Redis, RavenDB Cassandra, HBase, Neo4j и CouchDB.
SQL vs. NoSQL: MySQL или MongoDB
Разобравшись с ключевыми структурными различиями SQL и NoSQL баз данных, стоит внимательно рассмотреть их функциональные особенности на примере MySQL и MongoDB.
MySQL: реляционная СУБД
- Проверено временем: MySQL — крайне развитая СУБД, что означает наличие большого сообщества вокруг неё, множество примеров и высокую надёжность;
- Совместимость: MySQL доступна на всех основных платформах, включая Linux, Windows, Mac, BSD и Solaris. Также у неё есть библиотеки для языков вроде Node.js, Ruby, C#, C++, Java, Perl, Python и PHP;
- Окупаемость: Это СУБД с открытым исходным кодом, находящаяся в свободном доступе;
- Реплицируемость: Базу данных MySQL можно распределять между несколькими узлами, таким образом уменьшая нагрузку и улучшая масштабируемость и доступность приложения;
- Шардинг: В то время как шардинг невозможен на большинстве SQL баз данных, MySQL является исключением.
MongoDB: нереляционная СУБД
- Динамическая схема: Как упоминалось выше, эта СУБД позволяет гибко работать со схемой данных без необходимости изменять сами данные;
- Масштабируемость: MongoDB горизонтально масштабируема, что позволяет легко уменьшить нагрузку на сервера при больших объёмах данных;
- Удобство в управлении: СУБД не нуждается в отдельном администраторе базы данных. Благодаря достаточному удобству в использовании, ей легко могут пользоваться как разработчики, так и системные администраторы;
- Скорость: Высокая производительность при выполнении простых запросов;
- Гибкость: В MongoDB можно без вреда для существующих данных, их структуры и производительности СУБД добавлять поля или колонки.
Какую СУБД выбрать?
MySQL — верный выбор для любого проекта, который может положиться на предопределённую структуру и заданные схемы. С другой стороны, MongoDB — отличный вариант для быстрорастущих проектов без определённой схемы данных. В особенности если вы не можете определить схему для своей базы данных, вам не подходит ни одна из предлагаемых другими СУБД или в вашем проекте она постоянно меняется, как, например, в случае с мобильными приложениями, системами аналитики в реальном времени или контент-менеджмента.
ИТ База знаний
Полезно
— Узнать IP – адрес компьютера в интернете
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Калькулятор инсталляции IP – АТС Asterisk
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Популярное и похожее
Погружение в Iptables – теория и настройка
Создание доменного пользователя и ввод компьютера в домен
Установка OpenMeetings по шагам
Топ – 25 худших паролей за 2019 год
Apache Maven – установка и настройка
Ноу-хау: разбираемся в преимуществах виртуализации
Что такое сервер и какие они бывают?
Escene HS118-PNW
NoSQL: что это и почему говорим «нет» любимому SQL?
Никаких больше вечеринок SQL
3 минуты чтения
NoSQL – это общее обозначение принципов, направленные на воплощение механизмов управления базами данных, которые имеют ощутимые отличия от привычных моделей с доступом к информации посредством языка SQL.
Если стандартные СУБД воплощают принципы атомарности, изолированности и согласованности, то NoSQL характеризуется гибким состоянием, которое может меняться с течением времени и базовой доступностью для каждого запроса.
К особенностям NoSQL можно отнести:
- Использование любых типов хранилищ
- Допускается разрабатывать БД без применения схемы
- Масштабируемость в линейном формате – чем больше процессоров, тем выше производительность
- Универсальность – большие возможности для хранения и аналитики данных
Базы данных на основе NoSQL получают широкое распространение, поскольку помогают создавать повышенное количество разных приложений.
Характеристики NoSQL
В БД NoSQL можно использовать все модели информации – текст, графика, документ с применением пары ключ-значение. Под термином NoSQL можно встретить разные БД, но есть ряд характеристик, присущих всем без исключения.
- Не применяется SQL, под которым понимается ANSI SQL DML. Полностью реализовать его не удалось пока еще никому, хотя попытки адаптировать уже встречались.
- Неструктурированная структура. В отличие от реляционных БД NoSQL не имеет стандартной структуры. Здесь можно добавлять поля в любых местах без изменения общего вида данных.
- Информация представляется в виде агрегатов. БД NoSQL использует данные как целостные объекты, а не как часть общей информации.
- Распределение происходит без совместных ресурсов.
При использовании принципов NoSQL представление данных может проводиться разными способами.
Вот несколько самых распространенных типов:
- Ключ-знание – распространенный способ отражения данных. Методика чаще используется для хранения графических сведений
- Столбцы – хранение в виде матрицы, в которой каждая строка и столбец являются ключом. Такие механизмы предназначены для хранения больших объемов информации, а также подходят при наличии счетчиков и ограничений по времени при использовании данных
- Документированная СУБД подойдет для иерархического расположения сведений, чаще всего реализуется в издательском деле
- Графовая база подойдет для воплощения социальных сетей, поскольку здесь реализуется большое количество связей
Таким образом, NoSQL становится универсальным способом расположения данных и может использоваться практически во всех отраслях.
Сравнение NoSQL и стандартных БД
В последнее время БД на основе NoSQL стали более популярными. И если ранее при разработке использовались в основном реляционные БД, то сегодня они уже идут вровень.
Реляционные БД сегодня используются чаще для строгих транзакций, подходят для определенных алгоритмов и аналитических действий. NoSQL распространяются практически на любые направления и могут использоваться для аналитики неструктурированной информации.
Если сравнивать показатели обеих принципов, то реляционные базы характеризуются более жесткими требованиями, повышенной четкостью и рамками исполнения задач. В то время как NoSQL более вариативна, гибко подстраивается под условия задачи и допускает горизонтальное масштабирование при необходимости.
Таким образом, нельзя сказать, что однозначно один механизм лучше другого. Сегодня традиционные БД оптимально дополняются базами NoSQL, что значительно расширяет горизонт возможностей.
Полезна ли Вам эта статья?
Пожалуйста, расскажите почему?
😪 Нам жаль, что статья не была полезна для вас 🙁 Пожалуйста, если не затруднит, укажите по какой причине? Мы будем очень благодарны за подробный ответ. Спасибо, что помогаете нам стать лучше!
😍 Подпишитесь на нашу еженедельную рассылку, и мы будем присылать самые интересные публикации 🙂 Просто оставьте свои данные в форме ниже.
Blogerator.org
Эксклюзивные ИТ-новости, обзоры и интервью
MySQL: SQL или NoSQL – вот в чем вопрос. Тренды NoSQL/NewSQL
Прежде чем мы предметно обсудим эти интересные NoSQL-расширения для MySQL, очень полезно предварительно, хотя бы в двух словах, рассмотреть саму парадигму NoSQL и её тренды развития: как по причине аналогичной функциональности предлагаемых для рассмотрения плагинов, так и из-за необходимости далее по тексту ссылаться на некоторые её особенности.
Золотой век NoSQL
Начнем с того, что в сфере индустрии баз данных 20 век прошел под знаком SQL, ставшим универсальным стандартом взаимодействия с БД. Но 21 век привносит уже новые вызовы и проблемы, о которых в эти, ещё совсем недавние времена, даже и не задумывались.
Конечно, стандартный MySQL не предназначен для подобных нагрузок, поэтому уже более 5 лет, под руководством разработчика Марка Каллагана, идет интенсивная доработка MySQL под собственные экстремальные потребности Facebook (за историей этого проекта можно наблюдать на странице MySQL@Facebook). И ключевую суть новых решений здесь реализуемых можно обозначить коротким термином — NoSQL.
Поэтому давайте попробуем кратко определить, что такое NoSQL сегодня. Иногда принято считать, что это примитивные нереляционные базы данных, построенные на хранении последовательностей «ключ-значение», но это не всегда так. Концепция NoSQL гораздо шире этого частного случая и включает в себя следующие известные способы её реализации:
- Хранилища, построенные как «ключ/значение» (примеры — Memcached, Redis, Oracle NoSQL Database);
- Колоночные (или разреженные табличные) хранилища (примеры — Google BigTable, Cassandra, Amazon SimpleDB, Hbase);
- Документо-ориентированные (примеры — СouchDB и MongoDB, есть попытка создания и спецификации общего языка такого рода — UnQL);
- Графовые хранилища (очень распространены в социальных сетях, примеры: Neo4J, Infinite Graph, Bigdata);
- XML-хранилища (примеры: Mark Logic Server, EMC Documentum, eXist).
Более подробно о NoSQL, его разновидностях и основах я писал ранее вот здесь. Ещё одна хорошая стартовая страница с коллекцией материалов по NoSQL
Все эти направления — это уже классика NoSQL, хотя как можно здесь видеть, всё это достаточно разные технологии, — использованные в них решения иногда прямо противоположны по своим подходам.
NewSQL: искусство компромисса
NewSQL — это ещё более рыхлая для точного определения новейшая концепция, но общая её суть сводится к тому, что «это тот же NoSQL, но разумно усовершенствованный элементами классического SQL». Другая попытка определить NewSQL звучит чуть иначе, заходя с другой стороны: «это существенно оптимизированные решения на базе SQL, которые могут потягаться своими возможностями с NoSQL» (одноименный проект нового SQL-синтаксиса NewSQL не имеет никакого отношения к этой парадигме).
Иначе говоря, это здравая попытка достичь некой «золотой середины», баланса, между двумя полюсами: богатством SQL и минимализмом NoSQL. Попытаться сочетать преимущества масштабируемости и скорости NoSQL, при этом максимально сохраняя плюсы широкой функциональности традиционного SQL — главная цель движения NewSQL.
И достигнуть этого можно как минимум двумя путями:
- Расширение NoSQL-протоколов дополнительными возможностями (аналогичное этому по смыслу, но с другой стороны — сужение и оптимизация синтаксиса SQL). Например, в сторону NewSQL таким путём уверенно дрейфует Cassandra Query Language (CQL).
- Либо разработка гибридных систем, в которых параллельно доступны сразу несколько интерфейсов доступа к единой базе данных. Эта идеальная вариация NewSQL позволяет гибко варьировать наиболее подходящий интерфейс к БД для каждого конкретного запроса/ситуации, существенно повышая таким множественным подходом общую адаптивность системы.
В качестве ярких примеров из первой группы, кроме уже упомянутого CQL, я хочу привести Google Query Language (GQL) и Drizzle. Давайте для прикладной иллюстрации этой вариации NewSQL немного остановимся на идеологии Drizzle.
Кстати говоря, симптоматично, что этот самый классический SQL сейчас на Западе часто демонстративно начинают обозначать словом OldSQL, желая подчеркнуть, что в современном мире больших нагрузок и скоростей этот вид языка запросов отчасти устарел и теряет свою актуальность.
Какова конечная цель и результат этого стремления к минимализму?
Повышение производительности примерно в 3 раза по сравнению с MySQL 5, при том, что на Drizzle, в отличие от радикального NoSQL, можно запустить многие обычные MySQL-ориентированные движки (CMS), правда, в некоторых случаях нужны их минимальные переделки. Возможностей этого усеченного подмножества SQL вполне хватает для большинства рядовых веб-приложений. А какой выигрыш в скорости этот подход даёт!
Кому интересны детали — концептуальные отличия между OldSQL, NewSQL и NoSQL рассмотрены в данной презентации (PDF), здесь по-русски или частично здесь
Второй подтип NewSQL — гибридные БД
Что касается примеров ко второму типу решений NewSQL (по моему личному мнению наиболее перспективному) — то именно им и посвящена оставшаяся часть этой статьи на примере MySQL.
Читать этот материал дальше. Оглавление этой серии статей — здесь.
Игорь Савчук © Системный Администратор, 2011
2 комментария
1. Redis – это не key-value хранилище. Если называть key-value все, что дает доступ к данным по ключу, тогда и Couch с Mongo относятся к этому типу.
2. “Либо разработка гибридных систем, в которых параллельно доступны сразу несколько интерфейсов доступа к единой базе данных.” — дело вовсе не в интерфейсах. Основная проблема SQL – невозможность горизонтального масштабирования операций записи и join’ов, собственно эти проблемы и пытаются решить в NoSQL СУБД.
Насчет 1 – в этой более общей классификации так и есть.
2 – ваше горизонтальное масштабирование – это узко об NoSQL, – там же, прочтите внимательно, проблематика у меня рассматривается шире, и я не даром упомянул текущее тренд-смещение в сторону NewSQL (в варианте гибридных БД), а также кратко пояснив причину, почему именно так происходит.
Одним словом, рекомендую просто перечитать более внимательно что там написано, нет смысла это повторять по второму кругу ещё и в комментариях.
Эволюция NoSQL, основные преимущества перед SQL
Нет сомнений в том, что методы работы веб-приложений с данными существенно изменились за последнее десятилетие. Собирается и используется всё больше данных, и всё больше пользователей одновременно получают доступ к этим данным. Это означает, что масштабируемость и производительность являются более сложной задачей, чем для реляционных баз данных, основанных на схеме, чьё масштабирование сложнее.
Проблема масштабируемости SQL была признана интернет-компаниями с огромными растущими потребностями в данных и инфраструктуре, такими как Google, Amazon и Facebook. Они придумали свои собственные решения проблемы – такие технологии, как BigTable, DynamoDB и Cassandra.
Этот растущий интерес привел к появлению ряда систем управления базами данных NoSQL (СУБД) с упором на производительность, надежность и согласованность. Ряд уже существующих структур индексирования был пересмотрен и усовершенствован с целью повышения производительности поиска и операций чтения.
Во-первых, существовали запатентованные (с закрытым исходным кодом) типы баз данных NoSQL, разработанные крупными компаниями для удовлетворения их конкретных потребностей, такие как Bigtable от Google, которая считается первой системой NoSQL, и DynamoDB от Amazon.
Успех этих проприетарных систем положил начало разработке ряда аналогичных систем баз данных с открытым исходным кодом и проприетарных систем, наиболее популярными из которых являются Hypertable, Cassandra, MongoDB, DynamoDB, HBase и Redis.
Что отличает NoSQL?
Одним из ключевых различий между базами данных NoSQL и традиционными реляционными базами данных является тот факт, что NoSQL является формой неструктурированного хранилища.
Это означает, что базы данных NoSQL не имеют фиксированной структуры таблиц, как в реляционных базах данных.
Преимущества NoSQL
Базы данных NoSQL имеют много преимуществ по сравнению с традиционными реляционными базами данных.
Одно из основных отличий заключается в том, что базы данных NoSQL имеют простую и гибкую структуру. Они не используют схем. В отличие от реляционных баз данных, базы данных NoSQL основаны на парах ключ-значение.
Некоторые типы хранилища NoSQL баз данных включают хранение столбцов, документов, значений ключей, графов, объектов, XML объектов и другие способы хранения данных.
Обычно каждое значение в базе данных обозначается ключом. Некоторые хранилища баз данных NoSQL также позволяют разработчикам хранить сериализованные объекты в базе данных, а не только простые строковые значения.
Базы данных NoSQL с открытым исходным кодом не требуют покупки дорогостоящей лицензии и могут работать на недорогом оборудовании, что делает их развертывание экономически эффективным.
Кроме того, при работе с базами данных NoSQL, независимо от того, являются ли они открытыми или проприетарными, масштабирование осуществляется проще и дешевле, чем при работе с реляционными базами данных. Это происходит потому, что расширение происходит в горизонтальном направлении и нагрузка распределяется на все узлы, а не по типу вертикального масштабирования, характерном для реляционных баз данных, где увеличение производительности достигается апгрейдом хоста на более мощный.
Недостатки NoSQL баз данных
Конечно, базы данных NoSQL не идеальны, и они не всегда могут использоваться в качестве систем хранения данных.
Во-первых, большинство баз данных NoSQL не заточены на надёжность в той мере, в которой это относится к традиционным базам данных. Такие характеристики как атомарность, консистентность, изоляция и стойкость данных в системах NoSQL принесены в жертву производительности и масштабируемости.
Для поддержки функций надежности и согласованности разработчикам необходимо реализовать собственный проприетарный код, что усложняет работу системы. Это ограничивает использование NoSQL в областях, где важна безопасность и надёжность транзакции, таких как банковские системы.
Так же NoSQL базы данных не совместимы с запросами SQL. Это означает, что необходимо вручную переписывать запросы для работы с этим типом баз данных.
NoSQL против реляционных баз данных
Давайте сравним NoSQL с обычной базой данных:
Тенденции баз данных в 2019 – SQL против NoSQL, Лучшие базы данных, Использование одной или нескольких баз данных
Главное меню » Базы данных » Тенденции баз данных в 2019 – SQL против NoSQL, Лучшие базы данных, Использование одной или нескольких баз данных
SQL против NoSQL
Как знает любой администратор базы данных, первый вопрос, который вы должны задать себе, – использовать ли базу данных SQL или NoSQL для вашего приложения. В чем разница между двумя?
Базы данных SQL
Также известные как реляционные базы данных, определяют и манипулируют данными на основе языка структурированных запросов (SQL). Они наиболее широко используются и полезны для обработки структурированных данных, которые организуют элементы данных и стандартизируют их отношение друг к другу и к различным свойствам.
Базы данных NoSQL
Также известные как нереляционные базы данных, позволяют хранить и извлекать неструктурированные данные с использованием динамической схемы. NoSQL широко используется благодаря своей гибкой способности создавать уникальную структуру и может быть документом, графиком, столбцом или даже KeyValue, организованным как структура данных.
В течение десятилетий SQL значительно опережал нереляционные альтернативы, но NoSQL быстро сокращает разрыв с такими популярными базами данных, как MongoDB, Redis и Cassandra. Хотя многие организации предпочитают переходить с устаревших баз данных, таких как Oracle, не все переходят на NoSQL. Исходя из наших выводов, SQL по-прежнему удерживает 60% при растущем спросе на такие системы, как PostgreSQL:
Использование базы данных SQL: 60,48%
Использование базы данных NoSQL: 39,52%
Самые популярные базы данных
Итак, какие базы данных наиболее популярны в 2019 году? Зная, что SQL использовали более 3/5 респондентов, вы можете предположить, что Oracle украл шоу. Угадай еще раз. MySQL доминировал в этом отчете с 38,9% использования, за ним следуют MongoDB с 24,6%, PostgreSQL с 17,4%, Redis с 8,4% и Cassandra с 3,0%. Oracle отставал от этих репортеров баз данных всего на 1,8%, а пользователи CouchDB, Berkeley DB, Microsoft SQL Server, Redshift, Firebase, Elasticsearch и InfluxDB объединили нашу категорию Other на 2,4%.
Хотя эти цифры могут шокировать, нельзя забывать о росте популярности MySQL, MongoDB и PostgreSQL. Итак, как этот опрос сравнивается с наиболее известным источником тенденций системы управления базами данных? Рейтинг DB-Engines – Отчет о популярности Trend ставит этих лидеров в пятерку лидеров, но Oracle по-прежнему занимает первое место, а Microsoft SQL Server – третье.
Хотя мы ожидали увидеть гораздо большее присутствие пользователей баз данных Oracle, их представительство было низким на крупнейшей в мире выставке разработчиков.
Использование одной базы данных и использование нескольких баз данных
За последние десять лет использование нескольких типов баз данных значительно возросло по сравнению с традиционной стратегией, когда все яйца складываются в одну корзину. Сколько так? Почти половина организаций, с которыми мы говорили, на самом деле используют более одного типа базы данных для своих приложений, чем одну базу данных! 44,3% сообщили, что используют несколько баз данных, а 55,7% работают с одной:
Тенденции баз данных в 2019 году – SQL против NoSQL, Лучшие базы данных, Использование одной или нескольких баз данных.
SQL и NoSQL несколько комбинаций баз данных
Итак, зная, что почти половина наших респондентов объединяют несколько баз данных для поддержки своих продуктов, какие типы систем управления базами данных они используют вместе? Это меньше шок, 75,6% использования нескольких типов баз данных состоит из комбинации баз данных SQL и NoSQL. Это подтверждает тот случай, что для многих организаций один размер подходит не всем. Хотя у вас может быть предпочтение по сравнению с SQL по сравнению с NoSQL, нельзя отрицать тот факт, что оба они предлагают явные преимущества другого. Вместо того чтобы ограничивать вашу организацию одним типом базы данных, развивайте (или разрабатывайте) свою стратегию данных для совместимости, чтобы эти мощные системы управления базами данных могли дополнять друг друга и заполнять пробелы в ваших потребностях в данных!
Использование базы данных SQL + NoSQL: 75,6%
Использование базы данных SQL + SQL: 14,6%
Использование базы данных NoSQL + NoSQL: 9,8%
Самые популярные множественные комбинации типов баз данных
Если вы пользователь с одним типом базы данных, который рассматривает возможность добавления другого типа базы данных в ваш микс, этот раздел может представлять большой интерес – такие базы данных, как SQL, так и NoSQL, наиболее часто используются вместе.
Очевидный победитель с более чем 1/3 использования нескольких типов баз данных – это комбинация MySQL и MongoDB. Хотя MongoDB часто считается альтернативой MySQL, две базы данных хорошо работают вместе при правильном проектировании. Вторым по популярности сочетанием были MySQL и PostgreSQL вместе. Эти две базы данных SQL являются явными конкурентами, но могут совместно использоваться для хранения различных наборов данных. Как вы можете видеть на приведенном выше графике раздела, представление MySQL и PostgreSQL на 9,76% составляет большую часть использования SQL + SQL в нескольких базах данных.
MySQL + MongoDB: 34,15%
MySQL + PostgreSQL: 9,76%
MongoDB + PostgreSQL: 7,32%
MongoDB + Redis: 7,32%
MySQL + MongoDB + PostgreSQL: 4,88%
MySQL + MongoDB + PostgreSQL + Redis: 4,88%
Наиболее трудоемкая задача управления базой данных
Итак, теперь, когда мы знаем, какие системы управления базами данных, типы и комбинации использования наиболее популярны, давайте посмотрим, что тратит наше время на управление базами данных. Как известно любому, кто ранее управлял базой данных, существует множество задач, связанных с обеспечением работоспособного развертывания. Таким образом, мы не были удивлены, увидев столь разнообразный ответ на наш самый трудоемкий вопрос управления базой данных.
Мониторинг занял первое место с 12,6% от наших респондентов, едва опередив резервные копии, управляя дисковым пространством, масштабированием и объединением таблиц, которые все заняли второе место с 11,6% каждый. Автономным номером три было поддержание и перераспределение изменений между представлениями и хранимыми программами на уровне 8,7%, и снова связь под номером 4 с 7,2% для каждой очистки и настройки базы данных. Обновления заняли пятое место с 6,5%, а дюжина других задач составила 11,6% в другой категории, включая миграции, запросы, сравнение, настройку и репликацию.
Наиболее важные метрики отслеживаются для производительности базы данных
Несмотря на то, что мы увидели самые разные ответы на самую важную задачу управления базами данных, наиболее важная метрика для отслеживания производительности имела трех значимых лидеров.
Время ответа на запрос было не только самым отслеживаемым показателем, но и большинством с 51,8% ответов! Мы ожидали, что это приведет к 30,8% из отчета «Задача управления PostgreSQL, который отнимает больше всего времени», который мы составили в октябре 2018 года, но значительно расширился, когда мы расширили этот вопрос до всех систем управления базами данных. Скорость запросов – это чрезвычайно важный показатель, который нужно отслеживать на постоянной основе, чтобы вы могли определить медленные запросы, которые могут повлиять на производительность вашего приложения. Многие администраторы баз данных используют инструмент Slow Query Analyzer для выявления проблемных запросов, просмотра того, с каким запросом он связан, понимания их запросов по временному диапазону и поиска самых популярных запросов, вызывающих нагрузку на чтение в вашей системе, для идентификации тех запросов, которые не проиндексированы.
Второе место заняла достоверность с 18,2% респондентов. Излишне говорить, что хотя перебои в работе происходят реже, чем медленные запросы, если ваши базы данных выйдут из строя, это окажет самое серьезное влияние на вашу производительность. Вот почему крайне важно внедрить инфраструктуру высокой доступности для ваших производственных развертываний, чтобы поддерживать ваши базы данных в оперативном режиме, если в одном из ваших центров обработки данных произойдет сбой.
Затем память заняла третье место с 8,2% ответов. Чем больше у вас памяти, тем лучше должна работать ваша база данных. Как понимание, так и мониторинг использования памяти должны занимать важное место в вашем списке, так как нехватка или исчерпание памяти приведет к тому, что ваша база данных будет читать и записывать данные на диск, что значительно медленнее.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.