我经常使用关系型数据库,并决定try 其他可用的类型.

这个特别的产品看起来很好,很有前途:http://neo4j.org/

有人使用过基于图形的数据库吗?从可用性的Angular 来看,优点和缺点是什么?

您在生产环境中使用过这些吗?是什么要求促使您使用它们?

推荐答案

我在以前的工作中使用了一个图形数据库.我们没有使用neo4j,它是在伯克利DB之上构建的内部设备,但它是类似的.它被用于生产(现在仍然如此).

之所以使用图形数据库,是因为系统存储的数据和系统对数据的操作正是关系数据库的弱点,也正是图形数据库的强项.系统需要存储缺乏固定模式并通过关系链接在一起的对象集合.要对数据进行推理,系统需要执行许多操作,这些操作将是图形数据库中的几次遍历,但这在SQL中将是相当复杂的查询.

图模型的主要优点是开发速度快,灵活性强.我们可以快速添加新功能,而不会影响现有部署.如果潜在客户想要导入一些他们自己的数据,并将其移植到我们的模型之上,通常可以由销售代表现场完成.当我们设计新功能时,灵活性也很有帮助,使我们不必try 将新数据挤入僵化的数据模型中.

拥有一个奇怪的数据库让我们建立了很多其他奇怪的技术,给了我们许多秘诀,让我们的产品有别于我们的竞争对手.

主要的缺点是我们没有使用标准的关系数据库技术,当您的客户是企业级的时候,这可能是一个问题.我们的客户会问,为什么我们不能只在他们的大型Oracle群集上托管我们的数据(我们的客户通常拥有大型数据中心).其中一个团队实际上重写了数据库层以使用Oracle(或PostgreSQL,或MySQL),但它比原来的稍慢.至少有一家大型企业甚至有甲骨文专用政策,但幸运的是甲骨文买下了Berkeley DB.我们还必须编写很多额外的工具--例如,我们不能只使用Crystal Reports.

我们的图形数据库的另一个缺点是我们自己构建它,这意味着当我们遇到问题(通常具有可伸缩性)时,我们必须自己解决它.如果我们使用关系数据库,供应商在十年前就已经解决了这个问题.

如果您正在为企业客户构建产品,并且您的数据符合关系模型,请尽可能使用关系数据库.如果您的应用程序不适合关系模型,但它适合图形模型,请使用图形数据库.如果它只适合其他东西,那就用它.

如果你的应用程序不需要适应当前的blub体系 struct ,可以使用图形数据库、CouchDB、BigTable,或者任何适合你的应用程序并且你认为很酷的东西.这可能会给你带来优势,而且try 新事物也很有趣.

无论你 Select 什么,除非你真的喜欢构建数据库引擎,否则不要自己构建数据库引擎.

Database相关问答推荐

包含接受Cassandra中多个数据的语句

Postgresql 服务器:允许访问私有网络内的远程连接,而不是外部网络

什么时候需要手动重新分析 PostgreSQL 中的表?

将数据集上传到 Hub 时停止运行时会导致什么?

如果我使用存储过程,我对 SQL 注入免疫吗?

时间数据库设计,有一个转折(live vs draft rows)

数据库排序规则更改问题 (SQL Server 2008)

Mysql - 在所有数据库中查找表

便携式(PHPPass)密码哈希.我应该使用它们吗?

nodejs和数据库如何通信 ?

每个请求可以多次查询 MongoDB 吗?

与号 (&) 处的 XML 错误

是否有任何用于 NoSQL 数据库架构迁移的工具?

在单个 postgres 查询中多次调用 `now()` 是否总是给出相同的结果?

将 .csv 文件导入 Android 中的 Sqlite

使用 PHP 和 MySQL 开发测验Web 应用程序的数据库设计

Sqlite 和 Python - 使用 fetchone() 返回字典?

限制 SQL JOIN

数据库 EAV 优点/缺点和替代方案

无需安装的轻量级 SQL 数据库