MySQL: подсистемы хранения сторонних разработчиков

Сторонние подсистемы хранения для базы данных MySQLПоскольку MySQL предоставляет API для подключаемых подсистем хранения, с 2007 года появилось великое множество подсистем хранения, предназначенных для разных целей. Некоторые из них устанавливались на сервер, но большинство были продуктами сторонних разработчиков или проектами с открытым исходным кодом. Здесь мы обсудим часть подсистем хранения, которые, по нашему мнению, являются довольно полезными и все еще остаются актуальными.


Оглавление статьи[Показать]


 

 

Подсистемы хранения OLTP

Разработанная компанией Percona подсистема хранения XtraDB, интегрированная в Percona Server и MariaDB, является модифицированной версией InnoDB. Ее усо­вершенствования направлены на увеличение производительности, масштабируемо­сти и операционной гибкости. Она может заменить InnoDB, так как способна читать и записывать файлы данных, совместимые с InnoDB, и выполнять все запросы, которые может выполнять InnoDB.

Существует несколько других подсистем хранения OLTP, похожих на InnoDB в ключевых вопросах, например в обеспечении соответствия ACID и MVCC. Од­ной из них является подсистема РВХТ, разработанная Полом Маккуллахом (Paul McCullagh) и компанией Primebase GMBH. В ней совмещаются репликация на уров­не подсистемы, ограничения внешнего ключа и сложная архитектура, что делает ее пригодной для хранения на твердотельных накопителях и позволяет ей эффективно управлять большими значениями, например типа BLOB. РВХТ широко применяется как подсистема совместного хранения и входит в состав MariaDB.

TokuDB использует новую структуру индексов, называемую fractal trees (фракталь­ные индексные деревья), которая не привязана к кэшу. По этой причине индексы не замедляют работу, когда их размер превышает объем памяти, не устаревают и не фрагментируются. TokuDB позиционируется на рынке как подсистема хранения больших данных, поскольку имеет высокие коэффициенты сжатия и может под­держивать множество индексов на больших объемах данных. На момент написания книги TokuDB представляет собой ранний релиз и имеет существенные ограничения конкурентности. Эти особенности делают подсистему отличным вариантом для ра­боты с аналитическими наборами данных с интенсивной записью новых данных, но все может измениться в следующих версиях.

RethinkDB изначально позиционировалась как подсистема хранения, предназна­ченная для твердотельных накопителей, хотя, похоже, с течением времени она стала менее узкоспециализированной. Ее отличительной особенностью можно назвать при­менение работающей только на запись, копирующей только при записи структуры данных с использованием индексов, упорядоченных на основе В-деревьев. Эта под­система все еще находится на ранней стадии разработки, и у нас не было возможности внимательно посмотреть на нее и оценить ее работу.

Подсистема Falcon продвигалась на рынок как следующее поколение транзакци­онной подсистемы хранения данных для MySQL в то время, когда компания Sun поглощала MySQL АВ, но работа над ней давно прекращена. Джим Старки (Jim Starkey), главный архитектор Falcon, основал компанию для создания новой облач­ной NewSQL СУБД NuoDB (прежнее название NimbusDB).

 

Подсистемы хранения, ориентированные на столбцы

По умолчанию MySQL ориентируется на строки. Это означает, что данные каждой строки хранятся в одном месте и сервер при выполнении запросов ориентируется на строку как на рабочую единицу. Но при очень больших объемах данных более эффективным может быть ориентирование на столбцы. Это позволяет подсистеме извлекать меньше данных в ситуациях, когда строка целиком не нужна, а столбцы хранятся отдельно друг от друга, и их можно сжимать более качественно.

Ведущей подсистемой хранения, ориентированной на столбцы, является Infobright, которая хорошо работает с очень большими объемами данных (десятки терабайт).

Она спроектирована для использования в тех случаях, когда требуется аналитиче­ский подход или работа с хранилищем данных. Подсистема хранит данные в сильно сжатых блоках. А также хранит набор метаданных для каждого блока, что позволяет ей пропускать блоки или даже выполнять запросы, просто просматривая метаданные. Все дело в том, что Infobright не поддерживает индексы — при таких огромных раз­мерах они бесполезны, а блочная структура представляет собой своего рода квазиин­декс. Подсистема хранения требует пользовательских настроек сервера, потому что части сервера должны быть перезаписаны для работы с данными, ориентированными на столбцы. Некоторые запросы не могут быть выполнены подсистемой хранения в режиме, ориентированном на столбцы, поэтому сервер возвращается в режим, ори­ентированный на строки, что замедляет работу. Infobright существует как в версии с открытым исходным кодом, так и в коммерческой.

InfiniDB от Calpont — еще одна подсистема хранения данных, ориентированная на столбцы. Она доступна и в коммерческой версии, и в версии с открытым исходным кодом. InfiniDB предоставляет возможность делать запросы через кластер. Однако среди наших знакомых никто не использовал ее для работы.

Кстати, если вы хотите приобрести СУБД, ориентированную на столбцы, но не име­ющую отношения к MySQL: мы оценили также LucidDB и MonetDB. Результаты эталонного тестирования и наше мнение о них вы найдете в MySQL Performance Blog, хотя с течением времени они, вероятно, несколько устареют.

 

Подсистемы хранения, создаваемые сообществом разработчиков

Полный список подсистем хранения данных от сообщества разработчиков насчи­тывал бы десятки или даже сотни систем, если бы мы принялись скрупулезно перечислять их. Однако можно с уверенностью сказать, что большинство из них обслу­живают очень узкие ниши и практически неизвестны или используются малым количеством людей. Мы просто упомянем некоторые из них, так как большинство из них не видели в работе. {tip title="Caveat emptorl' content="Покупатель, будь бдителен! (Лат.)"}Caveat emptorl'/tip}

  • Aria. Aria, ранее называемая Maria, разрабатывается командой, создавшей MySQL, и позиционируется как преемница MyISAM. Она доступна в СУБД MariaDB. Мно­гие из ее инструментов, которые изначально были заявлены, похоже, были отложе­ны ради улучшения других частей сервера MariaDB. На момент написания книги, пожалуй, стоит охарактеризовать ее как защищенную от сбоев версию MyISAM, имеющую также несколько других усовершенствований, среди которых возмож­ность кэшировать данные (а не только индексировать) в собственной памяти.
  • Groonga. Это подсистема хранения данных с полнотекстовым поиском, которая, как утверждается, обеспечивает точность и высокую скорость.
  • OQGraph. Эта подсистема хранения от Open Query поддерживает операции с графами (думаем, в виде «найдите кратчайший путь между узлами»), которые нецелесообразно или невозможно выполнять в SQL.
  • Q4M. Реализует очередь внутри MySQL с поддержкой операций, которые для самой SQL являются довольно сложными или невыполнимыми в рамках одной инструкции.
  • SphinxSE. Эта подсистема хранения предоставляет интерфейс SQL для полно­текстового поискового сервера Sphinx, о котором мы подробнее поговорим в при­ложении Е.
  • Spider. Разделяет данные на несколько сегментов, эффективно реализуя прозрач­ное сегментирование, и выполняет запросы параллельно в различных сегментах данных, которые могут быть расположены на разных серверах.
  • VPForMySQL. Эта подсистема хранения поддерживает вертикальное разбиение таблиц с помощью своего рода прокси-подсистемы хранения. То есть вы можете нарезать таблицу на несколько наборов столбцов и хранить их отдельно друг от друга, но использовать в запросах как одну таблицу. Разработчик тот же, что и у подсистемы Spider.

 

Вас заинтересует / Intresting for you:

Модель развития базы данных My...
Модель развития базы данных My... 1142 просмотров Ирина Светлова Thu, 10 Jan 2019, 12:29:03
Подсистемы (движки) хранения в...
Подсистемы (движки) хранения в... 2115 просмотров Дэйзи ак-Макарова Wed, 04 Aug 2021, 18:11:43
MySQL: специфические движки дл...
MySQL: специфические движки дл... 1475 просмотров Ирина Светлова Mon, 07 Jan 2019, 12:57:57
Обзор версий MySQL - какой рел...
Обзор версий MySQL - какой рел... 8558 просмотров Ирина Светлова Fri, 05 Feb 2021, 17:19:41
Войдите чтобы комментировать

Обсудить эту статью

INFO: Вы отправляете сообщение как 'Гость'