2009 г.
Тенденции развития универсальных коммерческих СУБД
Марк Ривкин
Сокращенный вариант статьи опубликован в журнале "Открытые системы" N 2, 2009
Содержание
- I. Как предсказать тенденции развития СУБД
- II. Революции не будет
- III. Дюжина тенденций развития
- 1. Виртуализация ресурсов и GRID-технологии
- 2. Встраивание Information Life cycle Management (ILM) в СУБД
- 3. Самоуправление, самодиагностика, самолечение
- 4. Real Application Testing – механизмы промышленного тестирования версий и изменений
- 5. Совершенствование архитектур максимальной доступности
- 6. Включение измерения времени в СУБД
- 7. Поддержка новых типов данных (XML, RFID, Semantic Web, геном, медицина, быстрые LOB и т д)
- 8. Умные механизмы сжатия и дедублирования
- 9. Совершенствование методов защиты данных
- 10. In-memory СУБД реального времени как кэш для коммерческих СУБД
- 11. Облачные вычисления (Cloud computing)
- 12. Машины баз данных
- IV. Заключение
- V. Литература
В настоящее время в мире используется достаточно большое количество универсальных промышленных СУБД. Среди них можно выделить трех несомненных лидеров (как по уровню развития технологий, так и по объему рынка – они вместе занимают более 90% мирового рынка СУБД). Это СУБД первого эшелона – Oracle, Microsoft SQL Server и IBM DB2. Список СУБД второго эшелона довольно велик, сюда относят такие СУБД, как Sybase, Informix, Ingress, Adabas, Interbase, Progress, Postgres, Cache, Linter, Firebird, Teradata и т д
Существуют также небольшие СУБД для нишевых (специализированных) решений и постоянно появляются прототипы новых специализированных СУБД (объектно-ориентированные СУБД, ХML СУБД, СУБД для обработки потоковых данных, СУБД для работы с текстами и т.д.).
Можно ли предсказать тенденции развития этих СУБД на ближайшие годы? Да можно, особенно для СУБД первого и второго эшелона. Предсказывать эти тенденции можно двумя путями: исходя из теоретических исследований и отчетов аналитиков и крупных специалистов в области СУБД или анализируя текущее состояние и планы развития лидеров рынка СУБД.
I. Как предсказать тенденции развития СУБД
Раз в несколько лет собираются группы ведущих специалистов в области СУБД и устраивают обсуждение состояния отрасли, последних исследований в области СУБД. После мозгового штурма создается отчет, в котором перечисляется множество интересных потенциальных направлений развития СУБД. Последним таким отчетом был так называемый Клермонтский отчет (май 2008) [1]. До этого были Лоуэльский отчет 2003, Ассиломарский отчет 1996, отчет собрания в Лагуна-Бич 1989. [2, 3, 4]. C прекрасным переводом этих отчетов на русский язык С Кузнецова можно ознакомиться на сайте citforum.ru.
К сожалению, большая часть этих предсказаний так и остается нереализованной, т.к. производители СУБД имеют ограниченные ресурсы, работают в условиях жесткой конкуренции и определяют список новых возможностей своей СУБД исходя из собственных соображений
Другой (прагматичный) подход к предсказанию тенденций основывается на анализе текущего состояния и планов развития лидеров рынка СУБД (Oracle, DB2, SQL Server). Дело в том, что жесткая конкуренция на рынке СУБД заставляет производителей СУБД тщательно отслеживать новые версии конкурентов и, по возможности, быстро реализовывать их в следующих версиях своих продуктов, иначе на рынке не выжить. Поэтому анализ состояния и перспектив развития таких СУБД, как IBM DB2 9.5 и следующая версия Cobra, MS SQL Server 2008 и Oracle 11.1 и 11.2 позволяет делать более реалистичные предсказания тенденций развития универсальных коммерческих СУБД.
II. Революции не будет
Однако, прежде чем говорить о тенденциях развития этих СУБД, надо понять, будут ли они существовать в дальнейшем и не умрут ли в ближайшем будущем. Дело в том, что в последние несколько лет появилась целая серия статей Майкла Стоунбрейкера и Ко, в которых провозглашается грядущая революция в области СУБД и предсказывается скорая кончина универсальных коммерческих СУБД [5, 6, 7, 8]. Переводы и пересказы этих статей можно найти у С Кузнецова [9]. Стоунбрейкер обосновывает это тем, что современные универсальные коммерческие СУБД постоянно увеличивают свой функционал без переписывания ядра, в результате чего становятся очень сложными (никто сегодня не знает и не использует весь имеющийся функционал), громоздкими, медленными и дорогими. Он предсказывает, что грядет эпоха специализированных СУБД (потоковых, XML, научных, для обработки текстов и т д), которые вытеснят существующие универсальные СУБД, в первую очередь, за счет своей быстроты и компактности. Иллюстрируется это на примере нескольких стартапов (StreamBase, Vertica, ASAP, H-Store), которые показывают для специализированных решений (потоковая обработка, хранилища данных, научные исследования) производительность на 1-2 порядка выше, чем в современных промышленных дисковых СУБД.
Однако при ближайшем рассмотрении оказывается, что многие из этих поразительных результатов не совсем корректны. Так, при тестировании СУБД Vertica с поколоночным хранением данных используется огромная таблица (с более чем 200 колонками) из которой выбирают всего несколько колонок. Понятно, что при таком подходе традиционная СУБД работает намного медленнее, но любая операция выборки записей с разумным числом полей из этой таблицы на Vertica будет очень долгой. Автор этой статьи сам в свое время участвовал в разработке СУБД с векторным (по столбцам) хранением данных (проект АРИУС) и знает, сколько вычислительных ресурсов необходимо чтобы разбить таблицу на векторы, а потом из них по ссылкам собрать записи, и сколько длится обновление группы полей в такой записи.
Такие же некорректности есть и в других примерах. Так, Стоунбрейкер предлагает пожертвовать журналами транзакций, отказаться от одновременной работы пользователей, отказаться от случайных (Ad Hock) запросов, работать с базами, умещающимися целиком в оперативной памяти, всю логику приложения реализовывать внутри СУБД (в виде хранимых процедур) и т.д. Все это ради достижения высокой производительности за счет надежности, масштабируемости, безопасности и т.д.
Конечно, такой подход вполне допустим для специализированных приложений, и эти прототипы могут иметь свои ниши и использоваться в специализированных проектах, но универсальных коммерческих СУБД, предназначенных для создания серьезных бизнес приложений они не вытеснят, так что в ближайшее время революции не будет.
Дело в том, что хотя производительность СУБД и важна, но пользователи выбирают СУБД, ориентируясь на совокупность характеристик. Обычно учитываются такие характеристики, как обеспечение высокой надежности и непрерывности работы, масштабируемость, безопасность, простота управления, простота разработки, возможность работы с большими БД, поддержка специальных схем, алгоритмов и типов данных (DW, OLTP, XML, GIS, тексты и т.д.), поддержка стандартов, поддержка национального языка. Кроме того, очень важна распространенность данной СУБД в стране, наличие и возможность обучения специалистов (администраторов, разработчиков), наличие большого числа удачных внедрений СУБД для приложений похожего типа (references) и т.д. Здесь специализированные СУБД конкурировать с лидерами рынка не могут.
Еще одним важным аспектом является то, что заранее очень трудно сказать, какой функционал СУБД понадобится заказчику в будущем. Сегодня он работает только с алфавитно-цифровой информацией, а завтра ему понадобится обработка в том же приложении документов, видео- или гео-информации. Часто мы видим, что системы, надежность работы которых вначале казалась не очень важной, вдруг становятся определяющими (конвейер остановился, т.к. система учета и контроля въезда/выезда транспорта дала сбой). Поэтому в большинстве случаев навряд ли при выборе СУБД можно себе позволить заранее отказаться от какого-то функционала.
Более того, уходит в прошлое время, когда приложение работало только с одним типом данных. Например, уже мало осталось чисто ГИС-систем. Система должна хранить не только карты и координаты объектов (ГИС-информацию), но и алфавитно-цифровые данные, описания состояния объектов, изображения объектов, документацию по объектам и т.д. Т.е. нужны универсальные СУБД, использовать несколько специализированных СУБД в этих случаях очень сложно и дорого.
При выборе СУБД заказчик, в первую очередь, ориентируется на опыт и рекомендации коллег по бизнесу. Неспециалисту сегодня сложно провести детальный анализ и выбор СУБД. А коллеги используют универсальные коммерческие СУБД. Учет опыта и рекомендаций коллег по бизнесу в своей стране или в родственных областях бизнеса за рубежом часто определяет выбор. И здесь также малоизвестные специализированные СУБД проигрывают лидерам рынка.
Ну и конечно, важна надежность и известность фирмы-производителя СУБД. Сколько раз мы были свидетелями ухода с рынка производителей ПО, после чего приходилось переписывать все приложения, теряя время и деньги. Исходя из всех этих соображений, заказчики и разработчики приложений, как правило, выбирают не просто СУБД, а платформу для разработки большого числа разнородных приложений.
Что касается сложности и избыточного функционала универсальных СУБД – это, по-моему, не проблема. В каждый момент времени разработчик и администратор изучают и используют только тот функционал, который им нужен. Незнание объектно-ориентрованного подхода, работы с XML и текстом или средств администрирования кластера не мешают развернуть и использовать систему. Когда этот функционал понадобится, его можно легко освоить и начать использовать. Знать все и сразу не нужно.
Да, по мере появления нового функционала требования к оборудованию (память, процессоры, место на диске) растут, но они не так важны. Оборудование сегодня развивается настолько быстро, что намного опережает скорость роста требований СУБД. Я бы заметил, что новые версии ОС (особенно Windows) гораздо быстрее ужесточают требования к оборудованию, чем СУБД.
По мере развития ПО СУБД мы можем видеть, что требуется довольно много времени, чтобы важные новые возможности начали работать эффективно, быстро, надежно, без ошибок. Технологии становятся все сложнее и сложнее. Например, компания Oracle уже около 10 лет совершенствует реализацию средств работы в кластере (архитектура shared anything), IBM много лет “вылизывает” свой прекрасный оптимизатор запросов и т.д. Т.е. требуется время, ресурсы, которых у мелких стартапов нет, чтобы довести до ума сложные новые технологии. Только лидеры рынка могут позволить себе вкладывать в это огромные деньги, тем самым увеличивая разрыв. С нуля нельзя сделать хороший универсальный коммерческий продукт, а вот новые идеи и технологии, порожденные в стартапах, лидеры рынка умеют быстро воспринимать и реализовывать в своих продуктах, оставив стартап позади (или купив его вместе с технологией).
История развития СУБД показала, что часто выживают не те производители, которые первыми реализовали новые идеи, а те, кто имеет более мощный и агрессивный маркетинг. Побеждают не лучшие технологии, а деньги, маркетинг, правильная стратегия развития. И здесь лидеры рынка тоже сильнее. Они просто не допустят революции в области СУБД. Имея большие финансовые ресурсы и большое число разработчиков, лидеры быстро добавят новый функционал в свои СУБД, если надо, перепишут даже часть ядра. Поэтому конкурировать с ними сложно. Единственное, что может повлиять на судьбу универсальных СУБД – это революционные изменения в оборудовании, которые могут привести к кардинальному изменению внутренней архитектуры СУБД (например, отказ от дисков и появление быстрой дешевой оперативной флеш-памяти или драматическое увеличение скорости передачи данных по сетям, превращающее множество разбросанных по всему миру компьютеров в один суперкомпьютер (сеть как компьютер)). Но это нам в ближайшие 5-7 лет не грозит.
Так что кризиса пока нет, и можно смело предсказывать тенденции развития универсальных коммерческих СУБД
Как уже упоминалось выше, появление важных новых возможностей у одного из конкурентов заставляет остальных немедленно их реализовать. Однако ситуация с разработкой новых возможностей у разных производителей выглядит по-разному. При анализе новых возможностей последних версий СУБД DB2 и особенно MS SQL Server видно, что большинство из них были реализованы у Oracle недавно или несколько лет назад. (Раньше эту пальму первенства держала IBM.) Автору довелось поговорить с разработчиками из лабораторий IBM в Торонто, и на вопрос, почему они планируют реализовать в новой версии СУБД (тогда это был Viper) эти функции, а не иные, они ответили, что действуют по запросам пользователей. Понятно, что пользователи СУБД в своих запросах опираются на личный опыт (эксплуатация ограниченного круга своих приложений) или на то, что увидели у конкурентов. Поэтому такой подход к разработке (а он очевидно актуален и для Microsoft) заставляет их все время догонять лидера. Microsoft приходится еще сложнее, т.к. приходится параллельно реализовывать отсутствующий функционал в области безопасности и работы с большими БД.
В свою очередь, компания Oracle, имея СУБД с достаточно развитым функционалом, может себе позволить исследования по новым направлениям и реализацию принципиально новых подходов, таких как Enterprise GRID [10], машина баз данных, измерение времени в БД, Real Application Testing и т.д. Поэтому при определении тенденций развития мы будем ориентироваться на достижения лидеров рынка и, в первую очередь, Oracle 11g.
Понятно, что каждая новая версия СУБД реализует несколько сотен крупных и мелких новых возможностей. Поэтому выбор будет достаточно субъективен, возможно, другие аналитики и специалисты расставили бы акценты по-другому. Я постарался из всего множества направлений отобрать дюжину, на мой взгляд, наиболее важных тенденций. Конечно же, список не полон, и тенденции не равнозначны по важности и сложности, но я постарался выделить основные тенденции. Прогноз не может быть на неограниченный срок. Я думаю, что эти тенденции будут актуальны на ближайшие годы (на 2–3 версии СУБД) – это приблизительно 5–7 лет.
Содержание Вперёд