一个erlang数据库模式生成器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个erlang数据库模式生成器相关的知识,希望对你有一定的参考价值。

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

答案

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

另一答案

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

另一答案

看看SumoDB

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

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

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

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

支持一些本机域事件,这些事件在创建,更新,删除实体时通过gen_event:notify / 2自动分派。此外,当创建架构并删除给定类型的所有实体时。本文介绍了事件。

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

支持基于unsing find_by / 5和find_all / 4函数的多个字段进行排序(asc或desc)。例如,[{age,desc},{name,asc}]]将按年龄和名称进行排序。

通过sumo_changeset支持文档/模型验证(请查看Changeset部分)。

另一答案

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

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

以上是关于一个erlang数据库模式生成器的主要内容,如果未能解决你的问题,请参考以下文章

使用python脚本,读取excel表格生成erlang数据

从带有 ASCII 数据包大小标头的 Erlang 活动模式的套接字接收数据包

Erlang:创建磁盘模式

Erlang 模式匹配顺序

Erlang函数与模式匹配

在erlang中列出尾部模式匹配