Интересно, а написана ли какая-либо СУБД NoSQL на Ruby?
В 2007 году Энтони Иден играл с RDDB , базой документов, ориентированной на CouchDB. Он все еще хранит копию кода в своей учетной записи GitHub.
Я смутно помню, что в то же время или около того, кто-то еще также играл с базой данных в Ruby. Я думаю, что это было или вдохновлено или реакцией на RDDB.
И последнее, но не менее важное: в stdlib есть библиотека PStore , которая & ndash; в зависимости от вашего определения & ndash; может считаться или не считаться базой данных.
А если нет, то было бы неразумно создавать такой в Ruby?
Самая большая проблема, которую я вижу в Ruby, - это примитивы параллелизма. Резьбы и замки , поэтому 1960-х годов. Если вы хотите поддерживать несколько одновременно работающих пользователей, то вам, очевидно, нужен параллелизм, хотя если вы хотите создать встроенную базу данных в процессе, то это гораздо менее важно.
Кроме этого, есть некоторые не столь звездные реализации Ruby, но это не ограничение Ruby, а этих конкретных реализаций, и оно применимо практически ко всем другим языкам программирования. Rubinius (особенно текущая магистраль разработки, которая добавляет совместимость с Ruby 1.9 и удаляет глобальную блокировку интерпретатора) и JRuby - оба были бы хорошим выбором.
В качестве дополнительного бонуса Rubinius поставляется со встроенной библиотекой актеров для параллелизма, а JRuby дает вам доступ, например, к. Библиотеки параллелизма Clojure или библиотека актеров Akka.
Производительность не особо беспокоит, я думаю. Класс Hash
Рубиниуса, который написан на 100% чистом языке Ruby, работает сравнимо с классом Hash
YARV, который написан на 100% оптимизированном вручную языке C. Это показывает, что код Ruby, по крайней мере, когда он тщательно написан, может быть таким же быстрым, как C, особенно потому, что базы данных имеют тенденцию работать долго и, следовательно, динамические оптимизаторы Rubinius или JRuby (и в последнем случае, в частности, также JVM) (которые компиляторы C обычно делают , а не ) может действительно добраться до работы.