Архив

Архив раздела ‘СУБД’

Жизнь после MySQL: выбираем замену для популярной СУБД. Статья для журнала Хакер

Статья написана специально для журнала Хакер и опубликована на сайте журнала (в несколько сокращенной и отредактированной версии). Ниже я публикую свой оригинальный вариант,  без правок или ограничения на объем материала.

Oracle, купив Sun, подготовило закат солнца вручную, медленно убивая самую лучшую СУБД в мире – MySQL. Но что делать, если очень хочется быстрой и свободной базы, но без  призрака оракла за спиной?

Твой любимый форум работает на MySQL (на мускуле, если кратко), а на работе или в вузе крутиться система учета чего-либо, написанная твоими друзьями под пиво и за получение зачета? И тоже на мускуле? Да в вебе тысячи и миллионы сайтов используют MySQL как базу данных. Но что будет теперь, когда ненавистный и глубоко противный истинным опен-сорсникам Oracle купил многострадальную Sun, а заодно и наш с тобою любимый мускул? От неудачников, кинувших даже ЦРУ, не стоит ждать качественного развития свободных проектов. Да-да, я отвечаю за базар – первым проектом молодой компании Oracle была разработка по заказу разведчиков какой-то учётной системы, за которую на конкурсе другие компании просили под 2 млн, а молодой Ларри Элисон заносчиво запросил за все жалкие 300 тысяч. Стоит ли говорить, что проект был провален, зато компания получила стартовый капитал и начала свое восхождение. Хотя уже поздно бить тревогу, все пацаны давно в курсе, что лучший (читай – наименее ущербный) движок для хранения данных в мускуле – это InnoDB, права на который у Oracle были давным давно. Так что, если ты сейчас чешешь репу, что бы выбрать взамен MySQL, ты удачно открыл журнал, я расскажу, чем можно заменить поделие империи зла. Но не беги с криками «да ваш мускул г…, бери слона (PostgreSQL) и будет все зашибись» - сейчас столько кода написано с поддержкой мускула, и зачастую в виде единственной базы данных, что переписать или искать замену себе дороже, а часто просто невозможно. Хорошо, если это форум или блог, обычно там сразу поддержка нескольких систем, а если что-то самописное и заточенное под возможности именно MySQL? Так что задача у нас с тобой самая что ни на есть простая – сохранить мускулы, но прокачав их так, чтобы не зависеть от старшего тренера и его стероидов. Oracle, конечно же, выступила с заявлением,  что все в порядке и будут развивать все по старому, но никто как всегда не поверил. Даже быстрый выпуск версии 5.5, которую многие ожидали, не дал положительных результатов – старые баги как были, так и остались, но по маркетинговым заявлением все ОК.

Разработчики и идеологи самого мускула далеко не дураки и сами предвидели ситуацию, что после поглощения всем будет не очень сладко, поэтому некоторые решили покинуть от греха подальше компанию и основать свои проекты, прихватил тогда еще свободные коды MySQL. Таким образом, сейчас есть несколько проектов, которые взяли за основу оригинальный сервер, но постепенно дописывали или переписывали все, до чего могли дотянуться. И первым делом – освободились от бремени InnoDB, правами на который обладает тот самый Oracle. На замену ему выкатили несколько движков, основной из которых – MariaDB. Читать далее...

NoSQL: А ты уже отказался от SQL? Статья в журнал Хакер

16 января 2010 Comments off

128

Статья написана специально для журнала Хакер и опубликована на сайте журнала (в несколько сокращенной и отредактированной версии). Ниже я публикую свой оригинальный вариант,  без правок или ограничения на объем материала.

Первым кинь камень в того, кто скажет, что делать новый суперпроект надо с SQL базой данных.

Скажи честно, тебе ведь интересно, как устроены внутри все эти суперсайты, на которых висишь сутками ты и еще сотни миллионов человек сразу? Ну, это я говорю о Facebook и нашем вКонтакте, Google, Amazon, ebay, Twitter и десятки других сайтов, которые самые посещаемые в мире. Если ты делал уже сайты, то знаешь, что большинство веб-сайтов просто странички на PHP вместе с базой данных мускула (MySQL). База данных нужна для всего – там и новости и товары из магазина, статьи и  комментарии, и даже самое вкусное – логины и пароли пользователей, которые взламываются за пару секунд. Ты же даже не мыслишь о том, что сделать сайт без применения базы данных вообще – я говорю о реальном сайте типа форума или социальной сети, ну, на худой конец, магазин хакерских программ?

База данных – вширь и ввысь

В реальности так и есть – очень многие большие дядьки разработчики и архитекторы также думали, что без базы не обойтись, продолжая делать все более и более мощные сайты. Но потом все столкнулись с тем, что, сколько ни тужься, не придумывай всяких хаков и умных штучек, а базы данных плохой выбор, если у тебя сто миллионов посетителей. Ага, они тоже слышали о кластерах и распределенных системах, или даже об облачных вычислениях (можно почитать и у нас). Если надо, чтобы больше людей скачало новый порно-ролик Берковой, достаточно поставить еще пару серверов и скопировать на них файлы. А вот базы данных так просто не работают. Тут и появилась проблема масштабирования. Каждый решает ее по-своему.

Читать далее...

Марш против RDBMS или проекты распределенных хранилищ (key-value stores)

candybar2Приветствуем читателей. К сожалению, не было возможности раньше написать, сейчас активно доводим до альфа-тестирования собственный стартап и проектируем новую он-лайн игру. И тема сегодняшней статьи как раз в плане инноваций. Вот вы часто создаете проекты? И, наверное, везде применяете базу данных, в частности, MySQL (а кто-то и PostgreSQL). Но вот что интересно, по опыту да и просто после чтения описания различных архитектур видно, что далеко не везде в проекте нужны ключевые особенности баз данных, во многих случаях базу используют просто как некоторое хранилище обычных данных. Например, в системах кеширования базы обычно не применяются, более того, кеширование как раз используют для того, чтобы избежать лишних запросов. А что используют для кеширования наиболее часто? Memcached. А что это такое? Это распределенная система хранения данных на основе хеш-таблицы. В общих чертах, это просто хранилище пар ключ-значение, над которыми можно производить только основные операции - запись, чтение, удаление и проверку на присутствие. Да-да, нет никаких фильтров, выборок, сортировки, самый максимум - система тегов для выборки одним запросом всех связанных записей. И во многих случаях такого функционала вполне достаточно.

Я отнюдь не фанатик, и в реальных проектах лучшей будет комбинация из обычной, реляционной базы и специализированного хранилища данных. Более продвинутые системы, хранящие не просто пары ключ-значение, а и дополнительную мета-информацию об объекте, уже приближаются по возможностям к базам данных, их иногда называют документ-ориентированными базами (хранилищами), так как единицей информации, над которой происходит работа, является документ и ассоциированные с ними данные. Читать далее...

AGPsource Game Platform — эксперименты с игровым движком, РНР <> JSON <> JDBC

logo3

Приветствуем читателей. Этим постом  я открою новую серию статей, в которых будем обсуждать различные нюансы проектирования и реализации серверной платформы для браузерных игр, которую я разрабатываю. В дальнейшем компоненты будут выложены в виде как отдельных открытых проектов, так и вся платформа (пока политика не определена). И первым делом я хочу поделится с вами своими экспериментами в реализации одной из важнейших серверных подсистем - механизма доступа к базе данных. Сразу скажу, что общая статья с рассмотрением архитектуры всей системы игры будет скоро, пока начнем с отдельных подсистем.

И так, доступ к базе данных. Изначально мы имеем игру, которая написана на РНР, соответственно, если отбросить промежуточные библиотеки, используется либо mysqli или же PDO, который, в свою очередь, опирается теперь на новый драйвер Mysqlnd. К сожалению, на этом уровне внедрить какие-то более продвинутые методики работы с базой сложно.
Читать далее...

MemcacheDB и MemcacheQ — ключевые компоненты высокопроизводительной инфраструктуры


Приветствуем наших читателей. Сначала небольшой анонс - как вы, возможно, знаете, у нас очень скоро знаменательная дата, ведь блогу исполняется год! Поздравлений ещё не принимаем, но думаем, может как то отметить дату. В это время я буду в Киеве (3 - 4 число), так что если у нас есть читатели, которые хотели бы пообщаться лично, возможно сможем вместе что-то придумать. Ну а сегодня мы поговорим о компонентах для высокопроизводительной и масштабируемой архитектуре на основе сервера memcached, а именно - распределённой базе для хранения данных MemcacheDB и системы очередей сообщений MemcacheQ.

Читать далее...

Caucho Resin — сервер приложений Java + PHP корпоративного уровня

5 сентября 2008 7 комментариев

Приветствуем наших читателей. Кстати, у нас произошло небольшое событие - да-да, именно у нас с вами. Если заметили, уже несколько дней счётчик Feedburner, при всех огрехах в работе сервиса за последние месяцы, показывает стабильно количество читателей больше 500. Это достаточно знаковая цифра для меня лично и, наверное, для отдельного блога узкотематической профессиональной направленности тоже. А достаточно скоро у нас будет первый день рождения, но пока ещё рано праздновать... нужно работать. И сегодня я расскажу вам о сервере приложений Caucho Resin.

Для приложений Java, я имею ввиду, веб-приложений, существует уже достаточное количество серверов, которые уже давно разрабатываются и давно вышли на уровень, достаточный для того, чтобы применять их в самых сложных и ответственных случаях. Думаю, всем известны  Apache Tomcat и Jetty - самые известные сервера из списка открытых разработок. Но к этому списку нужно добавить теперь еще и Resin. В ряде тестов его Pro версия превосходит в производительности Tomcat 6, обладая при этом рядом возможностей "из коробки", которых нет в других серверах или они реализуются при помощи сторонних средств. Читать далее...

10gen — ещё один стартап в области Cloud Computing, развивающий концепцию platform-as-a-service

10 августа 2008 4 комментария

Приветствуем наших читателей. На улице дождь и вообще погода радует (радует потому что при солнечном свете прямом достаточно трудно на работе сосредоточиться, поэтому дождливые дни для меня самые рабочие), поэтому сегодня мы поговорим о чём-то высоком... облачном. Да, о новом или, вернее, малоизвестном у нас стартапе, который создал свою платформу для облачных вычислений, хотя и это не совсем уж так точно - это платформа, которая предоставляется как сервис и позволяет получить гибкую и масштабированную среду исполнения для веб-проектов. В чём-то это все похоже на известный всем и уже почти нарицательный Amazon EC2, но и отличается от него существенным образом. Что и как - мы дальше и рассмотрим.

Стартап 10gen предлагает разработчикам свою технологию построения platform-as-a-service, которая позволяет получить гибкую и почти неограниченную по масштабированию платформу (уже сколько раз мы повторили это слово) для развёртывания приложений, которым нужно работать в условиях переменной нагрузки, которая, однако, имеет тенденцию для постоянного роста, которым нужно защищённая и простая платформа, чтобы добавление нового сервера или апгрейд базы данных не вызвал прекращение работы всей системы на несколько часов или суток. Читать далее...

Веб-обзор #14: в помощь игроразработчику, оптимизация и кеширование в Zend Framework, немножко web 2.0 экономики, ExtJS и MySQL, а также фичкаттинг в стартапах.

Приветствую наших читателей. Некоторый перерыв в публикациях был связан с моей командировкой в Киев и последующей срочной работой, впрочем, сейчас я уже могу выкроить время для новой публикации. На этот раз я вспомнил забытой мною рубрике интересных материалов и, посмотрев на открытые вкладки и закладки с тем, что меня заинтересовало, понял, что "забывать дальше" эту рубрику никак нельзя. Ведь сегодня в сети очень много материалов, вместе с этим качественные и интересные ещё нужно поискать. Этим то мы и займёмся. Приятного и, главное, полезного чтения. Читать далее...

ezComponents — исследуем компонент EventLog

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

Сегодня мы оговорим о логах. Если вы разработчик веб-приложений, то во многих случаях лог поможет вам найти причину узких мест в архитектуре, продублировать критически важные места в приложении, а в ряде приложений без системы лога вообще почти невозможно работать. К примеру, такие он-лайн проекты, как игры (имеется ввиду, браузерные), а также любые системы, связанные с финансами - все они требуют производительных и надёжных реализаций системы логирования всех действий.

Кратко объясню, что я имею ввиду. Возьмём, к примеру, он-лайн игру, в которой пользователь может вводить деньги, например, меняя свои WMZ на игровые единицы, ну, допустим, пиастры. Конечно, все стадии этого процесса обрабатываются вашей системой, деньги зачисляются на счёт пользователя. Но что будет, если в процессе транзакции произойдёт непредвиденная ошибка? Даже если вы используете транзакционный движок и данные так и не попадут в основную систему, потому что транзакция обмена не произойдёт, пользователь будет жаловаться в службу поддержки. Для дублирования этого процесса и бОльшей надёжности, а также для случаев расследования различных инцидентов я предпочитаю вести отдельных лог всех событий, кстати,  не только финансовых. В такой лог логично писать все ключевые операции, которые впоследствии пользователи могут оспорить или эти процессы являются ключевыми для вашего сервиса. Не бойтесь - накладные расходы на лог не такие и большие, особенно в свете текущих цен на сервера и дисковое место это вполне оправданная трата. Читать далее...

PersistJS — снова, снова и снова про Сlient Side Storages

Приветствуем наших читателей! Прошу прощения за такой перерыв в ведении блога - я был в командировке и там, а также сразу по приезду, график встреч и работы был такой плотный, что нормально подготовиться к написанию какого-либо материала просто не было. Но теперь спешу исправиться и далее блог будет развиваться в обычном ритме. Спасибо всем, кто оставался нашим верным читателем всё это время!

Сегодня мы снова поговорим о теме клиентских систем хранения данных. Очень уж часто, при разработке современных веб-приложений, нам требуется возможность хранить достаточно большие объёмы данных на стороне клиента, которые бы были доступны при переходе между страницами или даже после обновления окна браузера или перезагрузки компьютера. Традиционно таком качестве выступали cookie, но с развитием веб-технологий их ограничения стали достаточно заметны. Мы уже не раз писали о разных системах Client-Side Storages, вы без труда найдёте их в блоге. Не случайно все новые браузеры содержат или будут содержать, когда выйдут релизные версии, различные механизмы для хранения данных, даже в стандарте HTML 5 предусмотрена более-менее попытка стандартизировать такое хранилище и интерфейс доступа к нему.
Читать далее...

Developers.org.ua