2

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

  1. 易于开发——我需要做一个快速的概念验证演示。所以数据库需要有很好的 Eralang 和 Python 适配器。
  2. 我正在开发一个新应用程序,其中我们有很多“连接”数据。有人推荐 Neo4j 用于类似图形的数据。有什么想法吗?
  3. 可扩展性——我们正在研究分布式架构,因此可扩展性很重要。
  4. 目前,性能(以任何形式)并不完全在我的列表中,我认为我们不会很快达到上述任何数据库的限制。

我只是在寻找非 RDBMS 数据库的起点。有什么建议吗?

4

2 回答 2

6

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

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

Mnesia 可以很好地扩展,它的模式可以在数据库运行时进行配置和更改。系统运行时可以移动、复制、更改表格等。通常,它具有构建在 Erlang/OTP 之上的强大系统的所有功能。当你在谷歌上搜索 mnesia DBMS 时,你会得到一些可以告诉你更多信息的书籍和论文。

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

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

于 2011-09-23T14:35:55.417 回答
4
  • 易于开发——我需要做一个快速的概念验证演示。所以数据库需要有很好的 Eralang 和 Python 适配器。

Riak 是用 Erlang 编写的 => 母语是 Erlang

  • 我正在开发一个新应用程序,其中我们有很多“连接”数据。有人推荐 Neo4j 用于类似图形的数据。有什么想法吗?

Neo4j 非常适合“连接”数据。它有 Python 绑定和一些 Erlang 适配器How to Use Neo4j From Erlang。需要注意的是,Neo4j 不是那么容易横向扩展,至少是免费的。但是.. 它是完全事务性的(甚至是 JTA),它将事物持久化到磁盘,它被烘焙到 Spring Data 中。

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

我相信鉴于您的意见,Riak 将是您的最佳选择:

  • 用二郎写
  • 自然分布
  • 非常容易为/使用开发
  • 很多功能(二级索引、虚拟节点、完全模块化、可插拔持久性[LevelDB、Bitcask、InnoDB、平面文件等]、极其可靠、内置全文搜索等。)
  • 有一个非常热情乐于助人的社区,有 Basho 支持
于 2011-09-23T18:48:28.943 回答