Куда движутся Реляционные СУБД (RDBMS)?

Всем привет! Я давно ничего не писал, но щас прямо руки зачесались. Поэтому, решил набросать мега очевидную заметку, в которой вы вряд ли найдете что-то новое про классические базы, но, вдруг…

Наверное, если вы в Айти не первый год, вы и так знаете, что происходит с базами данных. Примерно 10 лет назад стали дико популярными NoSQL базы. Сначала это были простые key value хранилища. Потом, индустрия поняла, что этого мало — и начали появляться специализированные решения: графовые базы данных, документные, а потом и вовсе — NewSQL. Тут же стали появляться и транзакции (ещё и ACID!), которые якобы ие были нужны (но, конечно же, это не всегда так).

Реляционные базы данных тоже не стояли на месте. Всем было понятно, что если не начать постепенно двигаться на встречу NoSQL/NewSQL базам, то можно проиграть рынок хранилищ. Так, в PostgreSQL уже несколько лет постоянно добавляют не совсем классические фичи. Все они сконцетрированы вокруг типа JSONB. В этом году, так и вообще туда добавили xPath для поиска по Json — крайне мощная вещь.

В целом, о том, что происходит с Pg, лучше всего расскажет один из создателей этой БД. Наверное, все поняли о ком речь — это Олег Бартунов. Он докладывает много всего интересного, на каждом HighLoad++. Например, можно посмотреть доклад — Postgres vs Mongo — https://www.youtube.com/watch?v=SNzOZKvFZ68

Честно презнаться, с MySQL я практически не работаю. Наверное, самое большое мое общение с этой СУБД — это данный блог на WordPress. В целом, в информационном пространстве MySQL присутствует. О ней постоянно пишут и Percona в своем блоге, и Uber (знаменитая история миграции с Postgres на MySQL). Однако все новости в основном про две вещи.

Первая новость — про MySQL протокол. Думаю, все уже познакомились с идеей — берем API классической БД, строим поверх неё NewSQL и легко продаем это решение, так как миграция супер дешевая. Ровно так делает амазоновская Aurora (MySQL протокол), или CockroachDB (частично реализовано Postgres API).

Вторая новость — про то, как готовить MySQL в кластере. В этой базе есть и Master-Master, что очень вкусно для, в целом, реляционной БД с ACID. Готовых решений для HA кластеров довольно много. Например, крайне популярное (из-за серьезного факапа на проде 😀 ) решение от гитхаба — https://github.com/github/orchestrator

В общем то, ни о чем другом про MySQL я не слышу. А оказывается база развивается и сама по себе. Сегодня неожиданно познакомился с целым семейством Json-related функций: JSON_OBJECT(), JSON_MERGE() и другими. Оказывается, пацаны не готовы отпустить Postgres в конкуренции на рынке NoSQL, и вполне себе пилят современные фичи. Неождиданно, но крайне приятно. Конкуренция — путь к успеху!

Категории: Программирование