2009-08-15 44 views
6

我正在继续钻研Erlang。我正在考虑使用Erlang开始我的下一个Web项目,在这个阶段,我唯一会从Ruby on Rails错过的东西就是ActiveRecord。Erlang的ActiveRecord

Erlang有很好的替代技术吗?

更新: 我来解决最近的是ErlyDB,ErlyWeb的一个组成部分。

ErlyDB是Erlang的数据库抽象层 生成器。 ErlyDB将 数据库元数据和用户提供的 元数据组合在一起,生成的功能可让您以直观的方式执行公用数据访问操作。它 还提供了一个单一的API工作 与不同的数据库引擎 (虽然目前,只有MySQL支持 ),让你编写便携式 数据访问代码。

+0

不是一个红宝石用户,你能描述你想要的ActiveRecord中的功能吗?它是从SQL模式生成代码的东西吗? – Christian 2009-08-17 11:38:16

回答

4

嗯,ActiveRecord的主要优点(在我看来)是:

  1. 您可以在关系数据库中持久化对象几乎透明。
  2. 您可以通过对象的任何属性来搜索数据库。
  3. 您可以在持续对象时验证对象。
  4. 您可以在删除,更新或插入对象时进行回调。

随着Mnesia的:

  1. 你可以坚持任何Erlang的数据完全透明。
  2. 使用模式匹配,您可以通过数据的任何属性或其组合来搜索数据库。
  3. QLC为模式匹配不够的情况提供了一个很好的查询界面。

然而,对于验证和回调,没有解决方案...

所以,你在是缺乏Mnesia的是ActiveRecord的有什么?

+2

我想这个问题的一部分是我没有准备好放弃我的RDBMS。我知道这些工具,我知道如何优化和扩展。也许这只是对未知的恐惧。 – 2009-08-15 07:35:42

+2

然后冒险。如果你以不同的方式去了解所有问题,那将会对你有所帮助。当你知道多种方法时,打个好电话会容易得多。有时候一个更大的工具箱可以派上用场。 – 2009-08-18 03:04:11

+1

我想知道是否Erlang现在还不适合Web应用程序。 – 2009-08-19 05:03:35

4

我不认为在写这篇文章的时候真的有。这可能是因为在erlang中编写的系统种类以及编写这些系统的人员并不真正需要关系数据库。我看到了使用mnesia,CouchDB,东京内阁和其他这样的替代数据库技术的更多代码。

这并不是说有人可能不想创建类似活动记录的东西。这只是尚未真正需要。也许你会成为第一个? :-)

1

一些谷歌搜索揭示了CouchDB的库/客户/包装说明 “的ActiveRecord喜欢像CouchFoo库”,并建议避开:

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#

为您的评论“不还适合网络应用程序“,我认为这些作品在那里:mochiweb,沙发,雅司,氮气,erlyweb。当然,有一些强大的工具,非常不同的范例,从rails,django和PHP。

+0

这真的很有意思,反映了我最近经历的想法。我想要ActiveRecord,因为我非常关注软件的思考和推理。作为MySQL的替代品,我在CouchDB上看得更加认真。 – 2009-08-24 01:22:11

1

你可能有兴趣在芝加哥老板的“BossRecords”:

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

他们很明确地仿照活动记录模式,并且使用了大量的编译器魔法使语法干干净净。 BossRecords支持save/validate以及has_many/belongs_to关联。您的数据模型中的属性通过生成的函数(例如“Employee:first_name()”)提供。