我经常使用关系型数据库,并决定try 其他可用的类型.
这个特别的产品看起来很好,很有前途:http://neo4j.org/
有人使用过基于图形的数据库吗?从可用性的Angular 来看,优点和缺点是什么?
您在生产环境中使用过这些吗?是什么要求促使您使用它们?
我经常使用关系型数据库,并决定try 其他可用的类型.
这个特别的产品看起来很好,很有前途:http://neo4j.org/
有人使用过基于图形的数据库吗?从可用性的Angular 来看,优点和缺点是什么?
您在生产环境中使用过这些吗?是什么要求促使您使用它们?
我在以前的工作中使用了一个图形数据库.我们没有使用neo4j,它是在伯克利DB之上构建的内部设备,但它是类似的.它被用于生产(现在仍然如此).
之所以使用图形数据库,是因为系统存储的数据和系统对数据的操作正是关系数据库的弱点,也正是图形数据库的强项.系统需要存储缺乏固定模式并通过关系链接在一起的对象集合.要对数据进行推理,系统需要执行许多操作,这些操作将是图形数据库中的几次遍历,但这在SQL中将是相当复杂的查询.
图模型的主要优点是开发速度快,灵活性强.我们可以快速添加新功能,而不会影响现有部署.如果潜在客户想要导入一些他们自己的数据,并将其移植到我们的模型之上,通常可以由销售代表现场完成.当我们设计新功能时,灵活性也很有帮助,使我们不必try 将新数据挤入僵化的数据模型中.
拥有一个奇怪的数据库让我们建立了很多其他奇怪的技术,给了我们许多秘诀,让我们的产品有别于我们的竞争对手.
主要的缺点是我们没有使用标准的关系数据库技术,当您的客户是企业级的时候,这可能是一个问题.我们的客户会问,为什么我们不能只在他们的大型Oracle群集上托管我们的数据(我们的客户通常拥有大型数据中心).其中一个团队实际上重写了数据库层以使用Oracle(或PostgreSQL,或MySQL),但它比原来的稍慢.至少有一家大型企业甚至有甲骨文专用政策,但幸运的是甲骨文买下了Berkeley DB.我们还必须编写很多额外的工具--例如,我们不能只使用Crystal Reports.
我们的图形数据库的另一个缺点是我们自己构建它,这意味着当我们遇到问题(通常具有可伸缩性)时,我们必须自己解决它.如果我们使用关系数据库,供应商在十年前就已经解决了这个问题.
如果您正在为企业客户构建产品,并且您的数据符合关系模型,请尽可能使用关系数据库.如果您的应用程序不适合关系模型,但它适合图形模型,请使用图形数据库.如果它只适合其他东西,那就用它.
如果你的应用程序不需要适应当前的blub体系 struct ,可以使用图形数据库、CouchDB、BigTable,或者任何适合你的应用程序并且你认为很酷的东西.这可能会给你带来优势,而且try 新事物也很有趣.
无论你 Select 什么,除非你真的喜欢构建数据库引擎,否则不要自己构建数据库引擎.