免责声明:这是一个广泛的问题,因此可以将其移至其他来源(如果管理员认为合适).
所有酷的孩子似乎都在丢弃关系数据库,而不是他们的Nosql对手.每个人都有自己的理由,从扩大问题到简单地处于科技潮流的边缘.而且,我不是在质疑他们的动机.
然而,我感兴趣的是,任何Nosql转换是否已经在关系丢弃时验证了传统RDBMS的性能(维护)收益.为什么我们想要使用RDBMS,当它存在的核心原因被删除?想到几个原因
> 30年的开发这些系统的学术和工作研究
>结构化查询语言(sql)中的知名语言.
>跨技术的稳定和成熟的ORM支持(Hibernate,ActiveRecord)
显然,在水平缩放很重要的现代世界中,需要确保分片是容错的,在应用程序所需的时间间隔内更新.但是,这些需求不一定是一个存储数据的系统(例如:ZooKeeper).
此外,我承认研究应该致力于Nosql,在这个领域花费的时间将显然导致更好的互联网价值技术.然而,Nosql和传统的RDBMS产品(减去关系)之间的比较将有助于做出业务决策.
更新1:当我提到Nosql数据库时,我在谈论可能不需要固定表模式的数据存储,通常避免连接操作.因此,关于在传统sql RDBMS中删除关系的问题的重点
解决方法
我没有发现表间关系是可扩展性的主要限制器.我定期使用连接查询,如果索引定义良好,可以获得良好的可伸缩性.
可扩展性的更大限制器是同步I / O的成本.一致性和耐用性的要求 – DBMS实际上可靠地保存数据,当它告诉您保存数据时 – 是昂贵的.
几个Nosql产品目前正在流行,通过削弱其一致性和耐用性来保证其默认配置的性能.有很多CouchDB或MongoDB丢失数据的报告.
有些方法可以配置这些Nosql产品对于耐用性的要求更为严格,但是您可以牺牲其令人印象深刻的性能数字.
同样,您可以通过禁用确保数据安全的默认功能,使sql数据库实现高性能,如Nosql产品.见RunningWithScissorsDB.