2009-08-15 6 views
6

Je continue de m'intéresser à Erlang. Je pense à démarrer mon prochain projet web en utilisant Erlang, et à ce stade, la seule chose qui me manquera vraiment chez Ruby on Rails est ActiveRecord.ActiveRecord for Erlang

Existe-t-il une bonne technologie alternative pour Erlang?

Mise à jour: Le plus proche que je suis venu à une solution est à ErlyDB, un composant de ErlyWeb.

ErlyDB est une couche d'abstraction de la base de données générateur pour Erlang. ErlyDB combine les métadonnées de base de données et les métadonnées fournies par l'utilisateur pour générer des fonctions qui permettent d'effectuer des opérations d'accès aux données communes de manière intuitive. Il fournit également une API unique pour travailler avec différents moteurs de base de données (bien que actuellement, seul MySQL est pris en charge), vous permettant d'écrire portable code d'accès aux données.

+0

N'étant pas un utilisateur de ruby, pourriez-vous décrire les fonctionnalités dans ActiveRecord que vous voulez? Est-ce quelque chose qui génère du code à partir d'un schéma SQL? – Christian

Répondre

4

Eh bien, les principaux avantages de ActiveRecord (comme je le vois) sont:

  1. Vous pouvez persister vos objets dans une base de données relationnelle presque transparente.
  2. Vous pouvez effectuer une recherche dans la base de données à l'aide de n'importe quel attribut de vos objets.
  3. Vous pouvez valider des objets en les persistant.
  4. Vous pouvez avoir des rappels sur la suppression, la mise à jour ou l'insertion d'objets.

Avec Mnesia:

  1. Vous pouvez persister des données Erlang absolument transparente.
  2. En utilisant la correspondance de modèle, vous pouvez rechercher la base de données par n'importe quel attribut de vos données ou leur combinaison.
  3. QLC vous donne une interface de requête agréable pour les cas où la correspondance de modèle n'est pas suffisante.

Aucune solution pour la validation et callbacks, mais ...

Alors, qu'est-ce que vous avez d'autre ActiveRecord qui fait défaut dans Mnesia?

+2

Je suppose qu'une partie du problème est que je ne suis pas tout à fait prêt à abandonner mon SGBDR. Je connais les outils, je sais optimiser et dimensionner. Peut-être que c'est juste la peur de l'inconnu. –

+2

Ensuite, faites le grand saut. Ce sera bon pour toi de connaître tous les problèmes quand tu le fais différemment. Il est beaucoup plus facile de faire un bon appel lorsque vous connaissez plusieurs approches. Une boîte à outils plus grande peut parfois s'avérer utile. –

+1

Je me demande si une partie du problème est que Erlang n'est pas vraiment adapté aux applications web pour le moment. –

4

Je ne pense pas qu'il y en ait vraiment au moment de l'écriture. C'est peut-être parce que les types de systèmes écrits en erlang et le type de personnes qui les écrivent n'appellent pas vraiment les bases de données relationnelles. Je vois beaucoup plus de code en utilisant Mnesia, CouchDB, Tokyo Cabinet et d'autres technologies de base de données alternatives. Cela ne veut pas dire que quelqu'un ne voudra pas créer quelque chose comme un enregistrement actif. Ce n'est pas vraiment un besoin pour le moment. Peut-être serez-vous le premier? :-)

1

googling révèle libs/clients/emballages pour CouchDB décrits "ActiveRecord comme les bibliothèques comme CouchFoo", et conseille à éviter:

http://upstream-berlin.com/2009/03/31/the-case-of-activerecord-vs-couchdb/

http://debasishg.blogspot.com/2009/04/framework-inertia-couchdb-and-case-of.html#

à votre commentaire sur « non adapté pour les applications web encore ", je pense que les pièces sont là: mochiweb, canapé, pian, azote, erlyweb. Il y a des outils puissants, des paradigmes très différents, certainement, des rails, django et PHP.

+0

Ce sont des choses vraiment intéressantes et reflètent la pensée que j'ai traversée récemment. Je veux ActiveRecord parce que je suis tellement lié à une façon particulière de penser et de raisonner sur les logiciels. Je regarde beaucoup plus sérieusement CouchDB comme une alternative à MySQL. –

1

Vous pourriez être intéressé par les « BossRecords » de Chicago patron:

http://www.chicagoboss.org/api-record.html

Ils sont tout à fait explicitement calqué sur le modèle Active Record, et utilisent beaucoup de magie du compilateur pour faire la syntaxe grinçant propre. BossRecords supporte save/validate ainsi que has_many/belongs_to associations. Les attributs de votre modèle de données sont rendus disponibles via les fonctions générées (par exemple, "Employee: first_name()").