22 Ноября 2024, 06:35

NewSQL

Автор Zhek@Ch, 10 Июля 2011, 23:25

« предыдущая тема - следующая тема »

0 Пользователей и 1 Гость просматривают эту тему.

Zhek@Ch

10 Июля 2011, 23:25 Последнее редактирование: 10 Июля 2011, 23:26 от Zhek@Ch
[size="3"]Проект, призваный решить проблемы, с которыми столкнулся Facebook, используя MySQL [/size]

Майкл Стоунбрейкер (Michael Stonebraker), один из основоположников теории баз данных, принимавший участие в разработке архитектуры СУБД Ingres, Informix, PostgreSQL, SciDB и VoltDB, рассуждая о масштабировании СУБД, упомянул, что поддержание огромной и сложной реализацией MySQL в Facebook "хуже, чем смерть" и есть только один выход из сложившейся проблемы - сделать невозможное и переписать весь код. Эта проблема касается и многих других web-компаний, которые начинают с малого, а затем увеличиваются до огромных размеров.

В настоящее время, чтобы справится с нагрузкой, которую создают 750 миллионов пользователей, Facebook оперирует четырьмя тысячами экземпляров MySQL (используется шардинг, т.е. разнесения данных по серверам, отталкиваясь от определенного признака, например, первой буквы логина) и девятью тысячами установок memcached. Facebook даже ведёт специальную страницу MySQL@Facebook, где отслеживаются работы по поддержанию работы баз данных компании.

Широко известная проблема MySQL состоит в том, что эта СУБД никогда не предназначалась для обработки огромных объёмов данных и большого количества транзакций. Стоунбрейкер добавляет, что MySQL, как и другие основанные на языке SQL БД, потребляет слишком много ресурсов на накладные дополнительные операции БД (например, для поддержки многопоточности и поддержания корректного выполнения запросов в рамках ACID). Данные требования и расходы не мешают работе при небольших объёмах данных, но быстро начинают препятствовать нормальному функционированию при их увеличении.

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

Стоунбрейкер при поддержке компаний Xeround, Clustrix, NimbusDB, GenieDB и его собственной компании VoltDB занимаются разработкой open source проекта NewSQL, который имеет значительно более высокую производительность, чем обычные SQL DB, при этом гарантирует выполнение требований ACID. NewSQL пока находится на стадии проектирования, ещё даже не принят язык запросов - решается вопрос о выборе между синтаксисом похожим на Java и синтаксисом, напоминающим обычные SQL-запросы. По мнению создателей NewSQL традиционный SQL устарел, слишком усложнен и имеет немало проблем, к тому же объектно-ориентированные СУБД уже не будущее, а настоящее. Для упрощения миграции будут разработаны конвертеры SQL в NewSQL и NewSQL в SQL, при этом они смогут транслировать запросы на лету, обеспечивая возможность запуска старых приложений без изменения.