建议:noob的非RDBMS数据库

时间:2011-09-23 12:31:20

标签: database erlang non-relational-database

对于基于Erlang,Python的新应用程序,我们正在考虑尝试非RDBMS数据库(仅仅是为了它)。我研究过的一些数据库是Mongodb,CouchDB,Cassandra,Redis,Riak,Scalaris。以下是一个简单要求列表。

  1. 易于开发 - 我需要进行快速概念验证演示。所以数据库需要有适合Eralang和Python的适配器。
  2. 我正在开发一个新应用程序,我们有很多“连接”数据。有人推荐Neo4j用于图形数据。有什么想法吗?
  3. 可扩展 - 我们正在研究分布式架构,因此可扩展性非常重要。
  4. 目前,表现(以任何形式)并不完全在我的名单之上,我认为我们不会很快达到上述任何数据库的限制。
  5. 我只是在寻找非RDBMS数据库的起点。有什么建议吗?

2 个答案:

答案 0 :(得分:6)

我们使用Mnesia构建企业应用程序。 Mnesia处于表格碎片化的模式时表现最佳,因为它没有表格大小限制。 Mnesia在过去的一年中表现良好并且仍在继续。我们平均每个表有大约1500万条记录,在给定的数据库模式中大约有24个表。

我推荐使用mnesia数据库,尤其是在 Erlang.org website 中Erlang 14B03中提供的数据库。我们已经将CouchDB和Membase Server( http://www.couchbase.com )用于系统的某些部分,但mnesia是主要的数据存储(主存储)。备份已经自动化,并且系统可以很好地适应不断增加的数据大小,但是在许多检查点下运行的表。它的分发,自动复制和复杂数据模型使我们能够非常快速地构建应用程序,而无需担心系统的复制,可伸缩性和故障转移/接管。

Mnesia Scales很好,它的架构可以在数据库运行时进行配置和更改。在系统运行时,可以在e.t.c中移动,复制和更改表。通常,它具有基于Erlang / OTP构建的强大系统的所有功能。当您使用google mnesia DBMS时,您将收到大量可以告诉您更多信息的书籍和论文。

最重要的是,我们的应用程序是基于Web的,由Yaws Web服务器(yaws.hyber.org)提供支持,我们对Mnesia的性能印象深刻。它的记录查找速度非常好,系统感觉很轻,但却提供了大量数据。请试试mnesia,你不会后悔。

编辑:要在您的应用程序中快速使用它,请查看给出的答案 here

答案 1 :(得分:4)

  • 易于开发 - 我需要进行快速的概念验证演示。所以数据库需要有适合Eralang和Python的适配器。

Riak是用Erlang编写的=> Erlang本地说话

  • 我正在开发一个新应用程序,我们有很多“连接”数据。有人推荐Neo4j用于图形数据。关于这个的任何想法?

Neo4j非常适合“连接”数据。它有Python绑定和一些Erlang适配器How to Use Neo4j From Erlang。值得注意的是,Neo4j并不像扩展那么容易,至少是免费的。但是......它完全是事务性的(甚至是JTA),它将事物保存到磁盘,它被融入Spring Data。

  • 可扩展 - 我们正在研究分布式架构,因此可扩展性非常重要。 目前,性能(以任何形式)并不完全在我的列表之上,我认为我们不会很快达到任何上述数据库的限制。

我相信给出了您的意见,Riak将是您的最佳选择:

  • 用Erlang撰写
  • 自然分布
  • 非常容易开发
  • 许多功能(次要指标,虚拟节点,完全模块化,可插拔持久性[LevelDB,Bitcask,InnoDB,平面文件等],非常可靠,内置全文搜索等。)
  • 有一个非常热情的有用的社区,Basho支持