如何在Erlang Mnesia中创建和使用(或模拟)多列索引

我查看了Mnesia文档和3本流行的Erlang书籍.似乎只能创建和使用单列主索引和辅助索引.或者也许它只是示例所涵盖的内容?如果我在每个列上创建一个单独的索引,Mnesia是否能够智能地一起使用它们来模拟多列密钥索引搜索?如果是这样,性能会比简单的表扫描好得多?

如果Mnesia不支持多列索引,则鉴于其本机dbms有任何人在Erlang中模拟此功能.

第二个问题:如何模拟约束(参考,检查),触发器和基于事件的通知?

一种方法是将{X,Y}直接存储在具有密钥的“列”中.这使您能够快速搜索结构{_,_}的查询,但是当您只知道元组中的一个值时,这也意味着搜索速度较慢(默认情况下,表是哈希表).

至于你的其他DBMS想要的是:Mnesia并不是为了替代传统数据库,而是为了满足爱立信开发人员编写应用程序时的需求.因此,如果这是您的目标,那么通过将数据存储在传统数据库中可能会更好.

您可以使用mnesia周围的代码添加功能 – 如果这是您想要的.

相关文章
相关标签/搜索