НовостиСобытияКонференцииФорумыIT@Work
Идеи и практики автоматизации:

Блог

Избавьте нас от SQL-серверов!

Сергей Бобровский
15.02.2012 10:49:06

Вот такой крик души множества девелоперов зафиксировал опрос компании Couchbase. 1300 программистов из США, Европы и Азии высказались о стимулах перехода на NoSQL-СУБД.

Надо прежде всего отметить, что Couchbase -- поставщик одной из самых популярных опенсорсных NoSQL-систем, поэтому ее опрос (как минимум его стиль и направленность) в определенной степени ангажирован.

И тем не менее было крайне интересно ознакомиться с его результатами.



Основная масса, почти половина опрошенных недовольна негибкостью РСУБД и невозможностью менять схему БД на лету. Напомню, что NoSQL-серверы хранят не таблицы, а иерархические документы свободной структуры (как правило, в формате JSON/BSON), в которых, впрочем, общие для всех поля можно индексировать и работать с ними так же, как и с полями реляционных таблиц.

Более трети недовольны проблемами с масштабируемостью РСУБД, а NoSQL-системы способны почти линейно наращивать свои возможности подключением бэк-серверов в горячем режиме. Более высокая в сравнении с РСУБД производительность достигается активным применением схем "субд-в-памяти" и мощными модулями кэширования, эксплуатирующими простоту архитектуры, и соответственно способность без проблем поддерживать БД из миллиардов документов на весьма ограниченных аппаратных ресурсах.

Стоимость важна значительно меньше -- как справедливо отмечает Андрей Колесов, сейчас она играет малую роль на фоне общих проектных затрат (в опросе так же -- цена актуальна лишь для 16% респондентов), но NoSQL как раз отличаются еще и крайне простой инсталляцией, а то и полным ее отсутствием: просто скачай exe-файл и запусти (для обновления и перехода к новой версии просто перезапиши экзешник), и нуль-администрированием.

В дополнение к Couchbase -- в феврале вышла версия не менее популярного свободного NoSQL-сервера MongoDB 2.1, среди нововведений которого поддержка агрегации в SQL-стиле group by.

Упомяну и минусы NoSQL-подхода, о которых Couchbase не говорит:
- сложность поддержки ненормализованных данных;
- трудоемкость создания сложных запросов, отсутствие JOIN-соединений и, как следствие, большой объем ручного программирования;
- нестандартность, слабая интеграция; нету единого языка запросов типа SQL, каждую NoSQL-СУБД надо изучать с нуля.

Но -- отклики разработчиков в отношении РСУБД весьма показательны:

“Replace as much as possible of Microsoft SQL Server”
“My hope is that I can finally stop using MySQL in 2012”
“Free us from Oracle? Increase performance?”
“Help us deploy new features faster without having to manage SQL patch scripts and migrations”
“Allow us to shard billions of documents across multiple commodity servers”

Комментариев: 12

Только зарегистрированные и авторизованные пользователи могут добавлять комментарии

Андрей Губанов
15.02.2012 17:37:03

Не хотелось бы доказывать очевидное. Очевидное для меня, но неочевидное для автора и, возможно, некоторых читателей (потму что не вижу возражений).

Поэтому порекомендую почитать (хотя бы просто, как беллетристику) книгу однофамильца автора: Стив Бобровски "Oracle Database XE для Linux. Эффективное использование (+ CD-ROM)". В точности оно же есть для Windows, если требуется.

Да, и еще - "просто скачай exe". Собственно, это и говорит об уровне и организаторов, и участников опроса.

15.02.2012 19:54:31

Спасибо огромное за ценное замечание, обязательно им воспользуюсь. Книжку Стива по Oracle я впервые читал где-то в начале 90-х, когда участвовал в крупнейшем на то время внедрении Oracle в России для, не поверите, системы автоматизации выборов.

15.02.2012 18:28:49

А можно ссылку на сам опрос?
А то есть подозрение, что он из серии опросов "разоблачителя" Георгия Шатрова: "опрос пользователей Linux ярко продемонстрировал невостребованность продуктов Microsoft"

15.02.2012 19:55:26

За опросом лучше обратиться непосредственно к его авторам.

16.02.2012 09:13:28

Послали так послали... smile:)

Я просил всего лишь ссылку на исходную статью, откуда, в частности, вы взяли картинку, которая в тексте.

16.02.2012 10:44:56

Вы думаете, что я эту картинку нарисовал сам или взял из какого-нибудь мутного форума? ))
http://www.couchbase.com/press-releases/couchbase-survey-shows-accelerated-adoption-nosql-2012

Я же написал в самом начале: "опрос (как минимум его стиль и направленность) в определенной степени ангажирован", поэтому ссылка на Шатрова совершенно не в тему.

16.02.2012 11:09:29

Цитата
Вы думаете, что я эту картинку нарисовал сам или взял из какого-нибудь мутного форума? ))

Ничуть, Сергей, ваши статьи меня обычно радуют своей объективностью. Пусть и не со всеми выводами в них я согласен.
Но данный опрос (точнее его результаты) слишком уж контрастирует с тем, что я наблюдаю вокруг (мнения коллег) и с моими собственными выводами, что мне захотелось все-таки понять - откуда такое.

Собственно как я и предположил - опрос включал именно людей использующих или планирующих начать использование NoSQL систем. Так что, все вполне четко и закономерно.

Цитата
поэтому ссылка на Шатрова совершенно не в тему

Приношу свои извинения - это я в запале.

17.02.2012 10:46:59

Эмоции понятны, но где не личные мнения, а факты? smile:)

У меня, например, на одном из серверов работают вместе MS SQL Server и MongoDb. Так на схожих наборах из сотен тысяч записей микрософтовский сервер заметно проигрывае NoSQL по а) совсем простым запросам и б) совсем сложным запросам. И это еще я не прикрутил MapReduce, а то бы выигрыш вообще в разы получился.

Конечно, тяжелые РСУБД зрелые, много дополнительной функциональности, и для КИС/корпоративного учета, где табличные данные хорошо доводятся до 3нф, сегодня подходят лучше. А NoSQL лучше для стартапов, agile-проектов, быстрого прототипирования, онлайновых/веб/мобильных проектов.

17.02.2012 11:19:59

Цитата
У меня, например, на одном из серверов работают вместе MS SQL Server и MongoDb

Какого типа задача?
Какой разброс запросов (т.е. различных, а не однотипных)?
Какой процент выборок/вставок данных?
Как обеспечивается атомарность?

17.02.2012 15:43:25

Какого типа задача?
Условно: система массового видеонаблюдения, когда в реальном времени в индексируемом видеопотоке надо распознавать его смысл (типа, какую галку за кого в бюллетене человек поставил smile:-) ), что сильно грузит процессор и формирует много неструктурированных данных (текстовые логи работы движка распознавания, которые надо сразу вытаскивать из БД и анализировать эээ "внутри" запросов на лету).

Почему используется несколько типов БД: разные заказчики, разные СУБД, и для сервера приложений приходится реализовывать к ним разные внутренние интерфейсы доступа. Кстати, по трудозатратам реализации этого интерфейса, MS SQL Server ну совсем уныл получается (правда, интерфейс к нему реализовывал не я).

Какой разброс запросов (т.е. различных, а не однотипных)?
Невысокий.

Какой процент выборок/вставок данных?
Когда несколько сотен одновременных пользователей, совсем усредненно 70/30. От конкретного проекта зависит, но сильного перекоса в какую-либо сторону нету.
Кстати, из доков, стандарные ТТХ для NoSQL примерно такие: по времени 10 выборок равны 7 вставкам.

Как обеспечивается атомарность?
Штатными средствами. Но обеспечить ее полностью не удается в силу специфики больших объемов (десятки гиг) как сырых данных для движка аналитики, так и его неструктурированной выдачи.
Вот например про атомарность в MongoDb
http://joydevel.blogspot.com/2011/08/mongodb.html

19.02.2012 07:17:49

Понял, спасибо за подробный ответ.
Да, у вас весьма специфическая задача. Я с подобной не сталкивался ни разу, но из того, что вы описал и правда похоже, что NoSQL должна справляться лучше.

Цитата
, по трудозатратам реализации этого интерфейса, MS SQL Server ну совсем уныл получается

А вот это можно слегка подробнее? Вы имеете в виду работу с blob-ами или что?

20.02.2012 10:52:28

Имеется в виду, что некоторую специфическую функциональность трудно даже хранимыми процедурами реализовывать, приходится писать дополнения, для SQL Server вроде использовали SQL API ++.
А MongoDb доступна в исходных текстах, с ней попрощеsmile:)

Только зарегистрированные и авторизованные пользователи могут добавлять комментарии