Предложить: База данных не RDBMS для noob - PullRequest
2 голосов
/ 23 сентября 2011

Для нового приложения, основанного на Erlang, Python, мы подумываем попробовать не-RDBMS базу данных (просто ради этого). Некоторые из баз данных, которые я исследовал, это Mongodb, CouchDB, Cassandra, Redis, Riak, Scalaris). Вот список простых требований.

  1. Простота разработки - мне нужно сделать быструю демонстрацию концепции. Поэтому база данных должна иметь хорошие адаптеры для Eralang и Python.
  2. Я работаю над новым приложением, в котором у нас много «связанных» данных. Кто-то рекомендовал Neo4j для графоподобных данных. Есть идеи на этот счет?
  3. Масштабируемость - мы смотрим на распределенную архитектуру, поэтому масштабируемость важна.
  4. На данный момент производительность (в любой форме) не совсем в моем списке, и я не думаю, что мы скоро столкнемся с ограничениями любой из вышеупомянутых баз данных.

Я просто ищу отправную точку для базы данных, не относящейся к РСУБД. Любые рекомендации?

Ответы [ 2 ]

6 голосов
/ 23 сентября 2011

Мы использовали Mnesia при создании приложения для предприятия. Mnesia в режиме, где таблицы фрагментированы, работает наилучшим образом, поскольку не имеет ограничений по размеру таблицы. Mnesia показала хорошие результаты за последние 1 год и продолжает играть. У нас в среднем около 15 миллионов записей на таблицу и около 24 таблиц в данной схеме базы данных.

Я рекомендую базу данных mnesia, особенно ту, которая поставляется в Erlang 14B03 на веб-сайте Erlang.org . Мы использовали CouchDB и Membase Server (http://www.couchbase.com)for в некоторых частях системы, но Mnesia является основным хранилищем данных (первичным хранилищем). Резервные копии очень хорошо автоматизированы, и система хорошо масштабируется против увеличения размер данных, но таблицы, работающие под многими контрольными точками. Его распределение, авто-репликация и комплексная модель данных позволили нам очень быстро создать приложение, не беспокоясь о репликации, масштабируемости и отказоустойчивости / захвате систем.

Mnesia Хорошо масштабируется, и его схему можно настраивать и изменять во время работы базы данных. Таблицы могут быть перемещены, скопированы, изменены e.t.c, пока система работает. Как правило, он обладает всеми функциями мощных систем, построенных на основе Erlang / OTP. При работе с СУБД Google Mnesia вы получите ряд книг и статей, в которых вам будет рассказано больше.

Самое главное, наше приложение основано на Web и работает на веб-сервере Yaws ( yaws.hyber.org ), и мы впечатлены производительностью Mnesia. Его рекордные скорости поиска очень хороши, и система чувствует себя настолько легкой, но отдает много данных. Попробуйте Мнезию, и вы не пожалеете об этом.

РЕДАКТИРОВАТЬ: Чтобы быстро использовать его в своем приложении, посмотрите ответ, данный здесь

4 голосов
/ 23 сентября 2011
  • Простота разработки - мне нужно сделать быстрое демонстрационное подтверждение концепции. Поэтому в базе данных должны быть хорошие адаптеры для Eralang и Python.

Riak написан на эрлангском языке => говорит на эрлангском языке

  • Я работаю над новым приложением, в котором у нас много «связанных» данных. Кто-то рекомендовал Neo4j для графоподобных данных. Есть идеи на этот счет?

Neo4j отлично подходит для "подключенных" данных. Он имеет привязки Python и некоторые адаптеры Erlang Как использовать Neo4j From Erlang . Следует отметить, что Neo4j не так легко масштабировать, по крайней мере, бесплатно. Но ... он полностью транзакционный (даже JTA), он сохраняет данные на диске, он встроен в Spring Data.

  • Масштабируемость - мы рассматриваем распределенную архитектуру, поэтому масштабируемость важна. На данный момент производительность (в любой форме) не совсем в моем списке, и я не думаю, что в ближайшее время мы столкнемся с ограничениями любой из вышеупомянутых баз данных.

Я полагаю, с учетом вашего ввода , Riak будет лучшим выбором для вас:

  • Написано на эрланге
  • Естественно распределенный
  • Очень легко разрабатывать для / с
  • Множество функций (вторичные индикаторы, виртуальные узлы, полностью модульные, постоянство подключаемых модулей [LevelDB, Bitcask, InnoDB, плоский файл и т. Д.], Исключительно надежные, встроенный полнотекстовый поиск и т. Д.)
  • Имеет чрезвычайно страстное и полезное сообщество с Basho, поддерживающим его
...