一个erlang数据库模式生成器

时间:2009-12-16 23:14:50

标签: database hibernate erlang schema

有没有办法可以从erlang应用程序生成数据库模式,就像我可以用hibernate做的那样。

4 个答案:

答案 0 :(得分:1)

我认为你的意思是Mnesia,如果是这样的话,你并不真正理解Mnesia数据库的本质。它的设计和实现是“无模式的”。您可能会编写一些非常混乱的丑陋代码,这些代码走遍了Mnesia数据库,并试图记录其中的各种记录,但这实际上是徒劳的。如果要在Mnesia中存储记录,则已经在.hrl文件中具有定义记录的“模式”。

答案 1 :(得分:0)

对于erlang中的sql数据库,没有什么比nhibernate更好的了。

答案 2 :(得分:0)

签出SumoDB

概述 sumo_db为您提供了一种定义数据库模式的标准方法,而与数据库的实现无关(mongo,mysql,redis,elasticsearch等)。

您的实体将行为封装在代码(即模块中的函数)中,并在sumo:doc()实现中进行陈述。

sumo是主要模块。它将相扑内部记录转换为您自己的状态。

每个存储区都由一个工作进程池管理,每个进程都使用一个模块来实现sumo_store并调用实际的数据库驱动程序(例如sumo_store_mnesia)。

支持某些本地域事件,这些事件在创建,更新和删除实体时通过gen_event:notify / 2自动调度。同样在创建模式时以及在删除给定类型的所有实体时。本文介绍了事件。

在使用find_by / 2和delete_by / 2函数时提供完全的条件逻辑支持。您可以在此处找到有关此条件逻辑运算符的语法的更多信息。

支持在不使用find_by / 5和find_all / 4函数的情况下基于多个字段进行排序(升序或降序)。例如,此[{age,desc},{name,asc}]]将按年龄降序排序,按名称升序排序。

通过sumo_changeset支持文档/模型验证(请查看“更改集”部分)。

答案 3 :(得分:0)

如果要在Erlang中寻找Java休眠类型的对象到SQL映射框架,则可能必须编写自己的映射模块。一种选择是将Erlang记录映射到SQL。任何框架都必须确保类型映射。这是指向Erlang ODBC映射http://erlang.org/doc/apps/odbc/databases.html#type

的链接

作为ETS的扩展,Erlang的ETS和Mnesia非常灵活且高效地管理记录。如果无法选择这两个数据库,则可能必须实现记录映射的方法