2011-03-07 6 views
0

Était curieux, mais les SGBD NoSQL sont-ils écrits en Ruby?NoSQL DB écrit en Ruby?

Et sinon, serait-il imprudent d'en créer un en Ruby?

+0

Il y a des liaisons de rubis pour MongoDB btw. – YOU

Répondre

4

Était curieux, mais est-ce que n'importe quel SGBD NoSQL écrit en Ruby?

En 2007, Anthony Eden joué avec RDDB, une base de données orientée document inspiré CouchDB. Il garde toujours a copy of the code dans son compte GitHub. Je me souviens vaguement qu'à la même heure ou à peu près, quelqu'un d'autre jouait aussi avec une base de données dans Ruby. Je pense qu'il a été inspiré par ou une réaction à RDDB.

Last but not least, il y a le PStore library dans le stdlib, qui   – en fonction de votre définition   – peut compter ou non comme une base de données.

Et sinon, serait-il imprudent d'en créer un en Ruby?

Le plus gros problème que je vois dans Ruby sont ses primitives de concurrence. Les filetages et les serrures sont donc 1960s. Si vous souhaitez prendre en charge plusieurs utilisateurs simultanés, vous avez évidemment besoin d'une simultanéité, bien que si vous voulez construire une base de données intégrée in-process, cela est moins problématique. A part cela, il existe des implémentations de Ruby qui ne sont pas très stellaires, mais ce n'est pas une limitation de Ruby mais de ces implémentations particulières, et cela s'applique à presque tous les autres langages de programmation. Rubinius (en particulier le tronc de développement actuel, qui ajoute la compatibilité Ruby 1.9 et supprime le Global Interpreter Lock) et JRuby seraient tous deux de bons choix. Comme bonus supplémentaire, Rubinius est livré avec une bibliothèque d'acteurs intégrée pour la simultanéité et JRuby vous donne accès par ex. Les bibliothèques concurrentes de Clojure ou la bibliothèque d'acteurs Akka.

La performance n'est pas vraiment une préoccupation, je pense. La classe Hash de Rubinius, qui est écrite en Ruby pur à 100%, est comparable à la classe Hash de YARV, qui est écrite en 100% C.Cela montre que le code Ruby, au moins lorsqu'il est écrit avec soin, peut être aussi rapide que C, d'autant plus que les bases de données ont une longue durée de vie et donc les optimiseurs dynamiques de Rubinius ou JRuby (et en particulier les JVM) (qui compilateurs C ne généralement pas ont) peuvent vraiment se rendre au travail.

+0

Exactement ce que je cherchais; une réponse à ma question. – gkbii

0

Ruby est trop lent pour tout type de SGBD

c/C++/Erlang sont généralement le meilleur choix.

0

En général, vous ne devriez pas vous soucier du langage de programmation utilisé pour la mise en œuvre d'un SGBD, tant qu'il dispose de toutes les fonctionnalités et qu'il est disponible dans le langage de programmation de votre application. Donc, la vraie question est de savoir si vous avez besoin d'un écrit en Ruby ou disponible pour Ruby.

Dans le premier cas, je doute que vous trouverez un SGBD nativement écrit en Ruby (toute correction de cette déclaration sera appréciée). Dans le second cas, vous devriez pouvoir trouver des bindings/wrappers Ruby pour n'importe quel SGBD décent ou non.

+0

D'accord avec Goran. La plupart des bases de données ont une liaison ruby ​​/ wrapper disponible. Il existe plusieurs liaisons Ruby pour les bases de données SQL/relationnelles. Il existe également des liaisons non-SQL disponibles. Par exemple, il existe plusieurs liaisons Ruby pour l'API paire/valeur de Berkeley DB. Un récent peut être trouvé ici: https://github.com/mattbauer/bdb – dsegleau

Questions connexes