database - 建议: Non RDBMS database for a noob

标签 database erlang non-relational-database

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

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

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

最佳答案

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

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

Mnesia 的扩展性很好,它的架构可以在数据库运行时进行配置和更改。表格可以在系统运行时移动、复制、更改等。通常,它具有构建在 Erlang/OTP 之上的强大系统的所有功能。当您使用 google mnesia DBMS 时,您会得到许多书籍和论文,它们会告诉您更多信息。

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

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

关于database - 建议: Non RDBMS database for a noob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7528963/

相关文章:

Haskell 与 erlang : difference in foldl?

Erlang gen_server : How to catch Errors?

database - 为什么要使用非关系数据库?

java - 无法创建 PoolableConnectionFactory 客户端不支持身份验证

mysql - 如何将两个 SQL 查询合并到一个查询中

debugging - 如何让 Erlang 调试器执行条件中断?

database - 数据库的层次模型和网络模型到底有什么问题?

python - 如何分离数据框中不同列中的数据分组?

android - 游标遍历空行

sql - 用基于规则/声明式的实现替换关系数据库(SQL Server)?