Pull to refresh
  • by relevance
  • by date
  • by rating

Map/Reduce своими руками — Apache CouchDb

Website development *
Логотип CouchDb Предупреждаю — мой взгляд совершенно не претендует на какую бы то ни было объективность. Но реляционные базы данных меня никогда, мягко говоря, не вдохновляли.

Нет, я вполне понимаю когда у вас действительно приложение ориентировано на обработку и хранение больших массивов данных. Ну, ERP-системы, всякие хранилища, статистика там, «в прошлом месяце продали сто тыщ карандашей, в этом двести».

С другой стороны, в большинстве случаев, когда речь идет о десктопных (или веб-) приложениях, где не нужно ворочать миллионами примитивных записей,  а приложение работает с относительно высокоуровневыми, сложными объектами, суть «дизайна и проектирования баз данных» заключается в повторении двух действий:

Читать дальше →
Total votes 71: ↑69 and ↓2 +67
Views 5.4K
Comments 61

Про использование MongoDB и CouchDB в продакшене

Lumber room
Просмотрел списки инсталляций MongoDB и CouchDB.

MongoDB используют как минимум два крупных сервиса, это SourceForge и Disqus, а вот в списке CouchDB я вообще не нашел ничего достаточно крупного, по моему там все небольшие наколеночные сайтики. Поправьте меня, если я не прав.

Вот список для MongoDB, а вот для CouchDB.

Как по вашему, что из них больше готово для продакшена?
Total votes 7: ↑5 and ↓2 +3
Views 2.2K
Comments 11

Обзор NoSQL систем

NoSQL *
Беспрецедентные объемы данных заставляют разработчиков и бизнес приглядываться к альтернативам реляционных баз данных, используемым вот уже более тридцати лет. В совокупности все эти технологии известны как «NoSQL базы данных».


Основной проблемой является то, что реляционные базы данных не могут справляться с нагрузками актуальными в наше время (мы говорим о high-load проектах). Есть три конкретные проблемных области:
  • горизонтальное масштабирование при больших объемах данных, например как в случае Digg (3 терабайта для зеленых значков, отображаемых, если ваш друг сделал dugg на статье) или Facebook (50 терабайт для поиска по входящим сообщениям) или eBay (2 петабайта в целом)
  • производительность каждого отдельного сервера
  • не гибкий дизайн логической структуры.
Читать дальше →
Total votes 101: ↑98 and ↓3 +95
Views 50K
Comments 67

Видео с OpenSQL Camp o MySQL и не только

MySQL *
В ноябре этого года, в Портланде, США прошла конференция OpenSQL Camp посвященная опенсорс СУБД.
Совершенно случайно наткнулся на видео докладов и спешу ими поделиться. Общий уровень конференции, как мне показалось, достаточно высок, так что советую посмотреть. Часть видео, к сожалению, в плохом качестве. Все презентации, конечно же, на английском.
Читать дальше →
Total votes 5: ↑5 and ↓0 +5
Views 1.2K
Comments 4

CouchDB сегодня

NoSQL *


Что такое CouchDB для вас? Вероятно любой, кто хоть немного интересуется популярной нынче темой NoSQL, прекрасно знает общие детали: это такая симпатичная игрушка с map/reduce-запросами, которые пишутся на JavaScript, с которой можно работать, гоняя JSON по HTTP-протоколу, а также не исключено, что слышали, что она fault-tolerant, тобишь не ломается вообще. Дальше этого обычно дело не идёт, в результате CouchDB отправляется в delicious в общую кучу со всякими MongoDB, Cassandra, Hadoop и т.п.

Примерно такого мнения придерживался и я вплоть до недавнего времени, пока не возникла острая необходимость переосмыслить архитектуру текущего проекта (упёршегося лбом в свою реляционную БД) и пересесть на документную базу данных, которая бы умела map/reduce. После того, как более пристально взгялнул на CouchDB, я понял, что он уникален в своём классе, его не следует ставить в один ряд с упомянутыми продуктами. Идеи, которые заложены в CouchDB настолько концептуальны, что способны в корне перевернуть представление о разработке веб-приложений.

О том, что же меня так впечатлило, постараюсь рассказать под катом.
Читать дальше →
Total votes 147: ↑142 and ↓5 +137
Views 21K
Comments 110

Точка сбора NoSQL

NoSQL *
Приветствую!

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

Хабраюзеров, писавших на эту тему, я прошу переносить свои топики. Блог понемногу наполняется и ждет ваших новых интересных статей — MongoDB, CouchDB, Cassandra, Redis, Cache — все, что угодно.

Добро пожаловать!
Total votes 63: ↑58 and ↓5 +53
Views 1.8K
Comments 45

Реляционные базы данных обречены?

NoSQL *
Translation
Примечание переводчика: хоть статья довольно старая (опубликована 2 года назад) и носит громкое название, в ней все же дается хорошее представление о различиях реляционных БД и NoSQL БД, их преимуществах и недостатках, а также приводится краткий обзор нереляционных хранилищ.

image
В последнее время появилось много нереляционных баз данных. Это говорит о том, что если вам нужна практически неограниченная масштабируемость по требованию, вам нужна нереляционная БД.

Если это правда, значит ли это, что могучие реляционные БД стали уязвимы? Значит ли это, что дни реляционных БД проходят и скоро совсем пройдут? В этой статье мы рассмотрим популярное течение нереляционных баз данных применительно к различным ситуациям и посмотрим, повлияет ли это на будущее реляционных БД.
Читать дальше →
Total votes 125: ↑101 and ↓24 +77
Views 145K
Comments 131

CouchApp: JavaScript приложения в CouchDB

NoSQL *
Sandbox
Когда-то давно, когда я практиковался в написании хранимых процедур, триггеров, курсоров под MSSQL, мне не давала покоя мысль о приложении, где вся бизнес-логика крутится на уровне БД, а presentation tier просто дергает базу и отвечает за отрисовку полученных результатов. С тех пор прошло много моих девелоперских лет, но возможности для реализации данной идеи так и не встретилось… до тех пор, пока я не наткнулся на CouchDB.

Я думаю, что многие уже слышали о NoSQL базах данных и в том числе о Couch DB. Здесь я хочу рассказать о замечательной возможности встраивать JavaScript-приложения в CouchDB, название которым CouchApp.

Читать дальше
Total votes 27: ↑27 and ↓0 +27
Views 6.2K
Comments 7

MapChat

Website development *
Новогодние праздники прошли, у многих некоторых из нас наступили долгожданные новогодние дни отдыха. Пользуясь вашим свободным временем, хочу рассказать о проекте, которым я занимался последний месяц.
О проекте и использованных технологиях
Total votes 32: ↑31 and ↓1 +30
Views 1.4K
Comments 27

16 практических советов по работе с CouchDB

NoSQL *
Где-то год назад при разработке нашего проекта мы дошли до некой точки развития, когда или начинается кропотливая настройка и оптимизация MySQL-сервера, или начинается опять же кропотливое изучение запросов, которые идут в БД. Так получилось, что именно тогда был бум статей про MongoDB, CouchDB и прочие NoSQL базы данных и соблазн попробовать их на живом проекте был крайне велик.

При выборе главную роль сыграла фраза «CouchDB предназначен именно для веба», а также то, что для доступа не требовались никакие прослойки — доступ осуществляется по любимому мной REST, а API выглядит очень простым и изящным. Вдобавок к этому CouchDB имеет крайне удобный веб-интерфейс для администрирования Futon, чего на тот момент не было у MongoDB, а также железную устойчивость к падениям.

Забегая вперед скажу, что выбор полностью себя оправдал — мы избавились от огромного количества проблем при разработке и проектировании БД, код проекта сильно упростился и стал гораздо лучше структурирован, но самое главное — тот самый поворот в сознании, который нам дал CouchDB. За это время я лично набил множество шишек при разработке и хотел бы поделиться опытом с Хабрасообществом. Эти советы не для начинающих — это советы по использованию CouchDB на живом production.
Читать дальше →
Total votes 56: ↑55 and ↓1 +54
Views 15K
Comments 45

Наши проекты: DNS хостинг с блекджеком и плюшками

SmsCoin corporate blog
Продолжая серию статей о наших проектах, сделаем скачок и расскажем о нашей последней разработке: проекте DNS хостинга, основное назначение которого — предложить максимум возможностей за разумную стоимость. Статья рекомендована к прочтению всем владельцам доменов и интернет-ресурсов. В конце — бесплатные ваучеры всем желающим.

Предыстория


Все началось с того, что год назад мы задумались о повышении надежности нашей системы и для общего процесса оптимизации потребовалось, чтобы наш DNS хостинг поддерживал достаточно низкий TTL, скажем 5 минут. К сожалению, ResellerClub, где зарегистрированы наши домены и держится DNS зона, не дает такой возможности. В поисках альтернативы стало понятно, что с помощью системы доменных имен можно не только балансировать трафик между серверами, но и, например, фильтровать его во время DDoS-атаки. В прошлом году мы провели анализ предложений и даже опубликовали результат наших исследований и проверок на Хабре.

В процессе изучения рынка пришло понимание, того что по факту существует 2 типа предложений: простейший вариант DNS хостинга за адекватную цену (1-3 доллара в месяц) и DNS хостинг с массой дополнительных возможностей вроде гео-таргетинга, но по достаточно высоким ценам. Также существует вариант простенького хостинга по большим ценам, но его, по понятным причинам, мы не рассматривали. Вот чего не нашли — так это DNS хостинга, предлагающего все возможности и по адекватной цене. Поэтому мы решили создать велосипед такой проект самостоятельно.



Анализ


К разработке проекта мы подошли серьезно и начали с более детального анализа конкуренции. Основная масса предложений сводилась к пакету (1 домен + до 100 записей + до миллиона запросов) за 1-3 доллара в месяц. С технической стороны в большинстве вариантов предлагается поддержка популярных типов записей, обычный Round-robin, минимальный TTL в районе 1-5 минут. Количество серверов, обслуживающих конкурентные платформы, варьируется от 1 до 15 (за исключением Route 53 от Амазон).

Аналогичная услуга, но уже с поддержкой гео-таргетинга, продвинутой балансировкой, API и другими приятностями стоит уже намного дороже и, например у dyndns, начинается с 195 долларов. Посчитав себестоимость некоего пакета, мы пришли к выводу, что такой же набор услуг в пакете (1 домен + 100 записей + 1 миллионов запросов) мы можем предлагать всего за 2 доллара.

Как же свершить это чудо?
Читать дальше →
Total votes 19: ↑18 and ↓1 +17
Views 8.4K
Comments 24

Групповой чат на основе OpenStreetMap (MapChat)

Self Promo
В появившееся «свободное» решил уделить внимание некоторым своим старым проектам.

И попал под эту «раздачу» уже афишировавшийся на хабре mapchat.

Список основных изменений:
  • Переход с Google Maps на OpenStreetMap. (Для большинства городов России OpenStreetMap предоставляет намного более детальные карты, чем Google ).
  • Точки-чаты теперь могут располагаться более точно на карте
  • Google +1 кнопка
  • Мелкие фиксы багов

Всем заинтересовавшимся предлагаю «поболтать» у Библиотеки им. Ленина в г. Москва
Total votes 6: ↑4 and ↓2 +2
Views 639
Comments 14

Будущее CouchDB

NoSQL *
Translation
Примечание. Этот пост в блоге Дэмиена Каца, создателя CouchDB, вызвал широкий резонанс. В конце данного топика опубликован ответ одного из многочисленных оппонентов Каца, мнение которого кардинально противоположно автору.

Каково будущее CouchDB? Это Couchbase.

Удивлены? Спросите, как же Apache CouchDB? Что ж, это отличный проект. Я основал его, написал первые версии почти полностью самостоятельно, потратил огромное количество нервов, пота и крови на него. Я очень им горжусь и тем влиянием, которое у него было. А сейчас я и команда Couchbase готовы двигаться дальше. Конечно, CouchDB — отличная система, но мы делаем его наследника: Couchbase Server. Продукт и проект с похожими возможностями и задачами, но более быстрый, более масштабируемый, более подходящий и для пользователей, и для разработчиков. И, определённо, не часть Apache.
Читать дальше →
Total votes 29: ↑27 and ↓2 +25
Views 8.2K
Comments 5

Архитектурный изьян CouchDB

NoSQL *
Моя любимая тема в программировании — копаться в негативных эффектах, которые преподносят нам самые, на наш взгляд, тривиальные операции.

Один из таких вопросов — удаление записей в базе данных. Данная операция, по мнению большинства программистов, ускоряет работу с базой и делает её компактнее. Фокус состоит в том, что это неправда. И если с реляционными базами это неправда только отчасти, то с NoSQL это может быть полнейшим враньём.

Вот о такой проблеме в Apache CouchDB мы и поговорим далее.
Картинка в тему:

Читать дальше →
Total votes 85: ↑67 and ↓18 +49
Views 5.1K
Comments 57

CouchDB: история одной аварии

NoSQL *

Хочу поделиться историей, как наш проект слёг на полтора часа, и опытом выяснения причин.

В один прекрасный момент мы понимаем, что часть сайта грузится с 15-минутной задержкой, а другая часть попросту не работает, выдавая 504 ошибку.

Внимание! Поскольку люди любят умничать, и не любят читать — пишу тут. Цель поста — подсказать, как выйти из аварийной ситуации, всё остальное просто лирика, на которой почему-то все заостряют внимание.
Читать дальше →
Total votes 34: ↑26 and ↓8 +18
Views 2.7K
Comments 49

List-функции в CouchDB

NoSQL *
На Хабре часто встречается комментарий о том, что документацию разработчики не дочитывают до конца. Столкнулся с этим сам, когда открыл для себя List-функции в CouchDB.

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

List-функции в design-документах CouchDB нужны для того, чтобы иметь возможность обработать всю базу данных одной функцией. Т.е. это некий аналог Full Table Scan в реляционных базах.
Читать дальше →
Total votes 5: ↑5 and ↓0 +5
Views 1.9K
Comments 2

«Java-Оскар» нашел своего нового обладателя

Jelastic corporate blog Java *
Победители премии Duke's Choice Award 2012 были объявлены командой Oracle в преддверье самого крупного ежегодного события в мире Java – конференции JavaOne в Сан-Франциско, и мы среди них! Проект Jelastic победил в номинации «Технологический лидер». Было очень приятно разделить пьедестал почёта с другими победителями, среди которых Hadoop Project, Parleys.com и Liquid Robotics. Это не только наша победа, это победа всех хабраюзеров, ведь наш проект зародился на Хабре и постоянно развивается благодаря Вашему активному фидбэку. Огромное спасибо за поддержку!

image
Читать дальше →
Total votes 31: ↑29 and ↓2 +27
Views 9.7K
Comments 19

Облачный PHP хостинг теперь и в России

Jelastic corporate blog
Всем привет!

imageС радостью сообщаем, что облачный PHP хостинг Jelastic теперь доступен в России у хостинг провайдера Русоникс. В первую очередь стоит отметить, что платформа обладает такими функциями, как: вертикальное и горизонтальное масштабирование, поддержка различных серверов и баз данных, а также VDS серверов, поддержка Git и SVN, доступны различные PHP расширения, предоставляется возможность изменения конфигурационных файлов, выбор версии PHP и много других полезных и удобных фич.
Читать дальше →
Total votes 49: ↑38 and ↓11 +27
Views 20K
Comments 104

Jelastic плагин для IntelliJ IDEA

Jelastic corporate blog Programming *Java *
Tutorial
imageПривет Хабравчанам! Как и обещали в предыдущем посте, закончили работу над плагином для IntelliJ IDEA. Так что теперь не только любители Eclipse могут разворачивать проекты в облако прямо с IDE, но и пользователи самой интеллектуальной среды разработки для Java. Специальный плагин позволяет логиниться в Jelastic, разворачивать приложения, управлять ими и просматривать логи. Работать с плагином очень легко и удобно, но все же давайте рассмотрим основные возможности с помощью краткой инструкции.
Читать дальше →
Total votes 20: ↑18 and ↓2 +16
Views 12K
Comments 2

Развиваем фронтенд Дневник.ру. Часть первая. Сборка и проверка JavaScript кода

«Дневник.ру» corporate blog Website development *JavaScript *

Вступление


За время существования Дневник.ру (а это более 4-х лет) скопился огромный объем JavaScript кода: часть находилась в отдельном проекте в виде подключаемых файлов, часть определялась прямо на разметке контролов, а часть собиралась прямо в code-behind при помощи StringBuilder. К этому прибавлялись:
  • растущее количество HTTP запросов для получения статичного контента – так, например, на всех страницах только в теге <head> загружалось 11 JavaScript файлов;
  • глобальные переменные, которые иногда перекрывали друг друга;

Решив, что с этим пора что-то делать, мы поставили себе первоочередную задачу: вынести все подключаемые по отдельности файлы из тега <head> в один минифицированный пакет. При этом код делился на сторонний и «наш», который планировалось проверять каким-то синтаксическим анализатором.

В этой статье мы расскажем вам о том, как решили эту задачу.
Читать дальше →
Total votes 28: ↑22 and ↓6 +16
Views 14K
Comments 19
1