| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
Apache mod_ndb - MySQL кластер с доступом через HTTP и Ajax
Приветствую наших читателей. В сегодняшнем мире Ajax и сложных интернет-приложений построение высокопроизводительной архитектуры с одной стороны, способной обслуживать тысячи и миллионы запросов, и обеспечение взаимодействие с другими сервисами, как в рамках своей системы, так и интеграция со сторонними приложениями, используя базовые стандартные протоколы, как ни когда актуальна, согласитесь. Для решения первой задачи применяют различные методы и подходы, но основным считается сначала применение различного рода оптимизации (поясню, что здесь и далее речь идёт о СУБД MySQL), потом переходим к использованию расширенных но эксклюзивных возможностей нашей СУБД (вроде partition tables), репликация, но в конце концов мы приходим к использованию кластерной архитектуры, как, наверное, единственного решения для высоких нагрузок и обеспечения доступности. Но вот со второй задачей уже сложности. И чем дальше мы углубляемся в особенности конкретной СУБД, чем больше возможностей и скрытых настроек применяем, тем сложнее и нетривиальность будет получить доступ к нашей системе извне, как нашим же собственным программам, так и в случае интеграции и агрегации с другими сервисами. Не побоюсь постулировать тот тезис, что система, не готовая и не открытая к взаимодействиям с другими сервисами, максимально прозрачно, доступно и стандартно, обречена на закрытое существование. А поэтому мы сразу поставим себе задачу обеспечить прозрачное и быстрое соединение различных сервисов с нашей базой данных. Сама база будет строится на основе кластера MySQL, который ранее был доступен только коммерческим пользователям, но с версии 5.0 уже интегрирован в основную ветку и доступен в бесплатном релизе Community Edition. Так что же такое этот mod_ndb? Если кратко - это модуль к популярному веб-серверу Apache (поддерживается как версия 1.3.х, так и 2.2.х, и, конечно, для серьёзной работы вторая предпочтительнее из-за её расширенной работы с потоками), который позволяет напрямую подключатся к MySQL Cluster API, и работать с базой данной через HTTP запросы, возвращая данные сразу в виде JSON или в другом понятном вызывающей стороне формате. Модуль принимает запросы HTTP GET, POST и DELETE, при этом на стороне сервера можно предварительно обрабатывать полученные данные любым образом, используя, к примеру, Apache subquery API, в этом случае можно описывать логику обработки в скриптах на языках PHP/Perl. Для начала работы необходимо установить базу данных и настроить кластер, поддерживаются версии сервера 5.0 и 5.1, потом настроить веб-сервер Apache, в котором, в конфигурационных файлах следует описать обработчик запросов, подключить модуль mod_ndb, а также в его конфигурациях описать все параметры для доступа к кластеру. Вот здесь проявляется различие между версиями Apache - каждый процесс сервера, который подключается к кластеру, требует NodeID, а нодов в типичном кластере не так и много (обычно два или три), поэтому для обхода ограничения следует использовать многопоточную реализацию Apache 2.х, где будет использоватся только один общий процесс, подключённый к кластеру. Далее в конфигурации описываются варианты доступа и форматы ответа сервера, к примеру, мы хотим получать именно JSON. Пользователь, подключающийся к серверу, совсем не получает полного контроля и возможности исполнять любые запросы, совсем нет. Он только обращается к предварительно сконфигурированным специальным URL, которые, в свою очередь, уже берут из конфигурации соответствующие запросы, подставляют туда нужные данные и производят операции наб базой (выполняют необходимые SQL запросы, часто не только простые, но и сложные, с под-запросами и транзакциями). В этой же конфигурации прописан и формат ответа - причём, вариантов конфигурации есть очень много - здесь и обычный XML, JSON и HTML, и двоичный, и "чистый" (raw) без обработки, и даже особые варианты сразу форматирование, вроде HTML-ссылок и другие варианты (это все отлично описано в документации, в разделе Mod ndb formats). Кроме этого, мы уже упоминали, что можно создавать обработчики на обычных языках, встроенных в веб-сервер - поддерживаются PHP, Perl и Ruby. Правда, эти возможности, судя по описанию, так как используются расширенные возможности сервера Apache, то эта возможность будет доступна только для версий 2.х. Вот кратко и все. Ничего вам не напомнило? Если нет, делаю подсказку - в прошлом ещё году мы писали о разработке программистов из Нью-Йорк Таймс, DBSlayer, который также позволяет взаимодействовать с базой данных посредством обычных запросов через HTTP. В принципе, можно вспомнить ещё и гораздо более экзотические варианты, вроде специальной СУБД CouchDB, которая позиционируется сразу как готовая для работы с веб-приложениями и в составе оных. Таким образом мы прямо наблюдаем расширение возможностей уже ставших привычным нам инструментов. Причём, расширение идёт, с одной стороны, в сторону взаимодействия с другими сервисами и программами, с другой - к применению уже ставших стандартом де-факто протоколов и форматов данных. Можно, конечно, спорить о нужности или применимости каждой разработки в каждом конкретном случае, но то, что эти возможности полезные и помогают при разработке серьёзных больших и открытых систем - без сомнения. Например, этот же mod_ndb можно применить в качестве основы для такой себе веб-ориентированной базы данных, даже можно создать что-то на подобии Amazon EC. А если использовать прозрачную возможность сразу получать данные в формате JSON, и вспомнить, что существуют такие мощные AJAX фреймворки, для построения интерфейса веб-приложений, как ExtJS, в которых есть мощнейшие компоненты для таблиц (с встроенным редактированием, сортировкой и другими возможностями). И представьте, что такой визуальный компонент получат данные от модуля mod_ndb, сразу в нужном формате JSON, а все действия, которые нужно производить над базой (которые приводят к её изменению) делаются через этот же API. Мы получим отличнейшую систему администрирования, по удобству и даже красивости она будет на несколько порядков превосходить тот же phpMyAdmin, вместе с тем приблизится вплотную к десктопным утилитам, вроде тех же официальных MySQL Administrator или MySQL Query.
Рубрика: MySQL
Вышел MySQL 5.1.30, первый стабильный рели....
После публикации 29 тестовых версий анонсирован первый стабильный релиз MySQL 5.1, пригодный для промышленной эксплуатации и обеспечивающий увеличение производительности для "тяжелых" SQL запросов, по сравнению с MySQL 5.0, примерно на 15-20%. Главные новшества появившиеся в MySQL 5.1:
Подробнее... |
Рубрика: MySQL
| Добавлено: 28.11.2008
Тестирование параллельных программ.
Тестирование параллельного программного обеспечения представляет собой более сложную задачу по сравнению с тестированием последовательной программы. Программист должен знать о подводных камнях при тестировании параллельного кода, имеющихся методологиях и инструментарии.
Подробнее... |
Рубрика: Тестирование
| Добавлено: 28.11.2008
Архитектура AMD64 (EM64T).
Аннотация. В статье кратко рассматривается архитектура AMD64 компании AMD и ее реализация EM64T компании Intel. Описаны особенности архитектуры, ее возможности, достоинства и недостатки.
Подробнее... |
Рубрика: Архитектура AMD
| Добавлено: 27.11.2008
Остальные статьи: |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|