虽然计算机编程布道者预测云计算的未来非常光明,但关系数据库是否有机会退出?
更适合云计算的数据库有哪些?
关系数据库模型在关系代数中有坚实的数学基础。这使得推理、扩展和正确使用(理论上)变得容易。即使数据库访问模式由于这些新的 API 和使用而发生了显着变化,关系数据库也可能因此而形成底层实现。
这是一篇很好的文章,可以回答你的一些问题。它很好地比较了 RDBMS 系统和通常用于云存储基础设施的系统:
http://www.readwriteweb.com/enterprise/2009/02/is-the-relational-database-doomed.php
不,RDBMS 将因其功能性而始终占有一席之地。不仅是它们自己,而且还作为其他系统(如 OODBMS)的骨干。
关系数据库对于本地化存储(例如特定于应用程序的存储)和服务器存储仍然是相关的。
我见过的每个云计算平台都有关系数据库产品。因此,我认为云计算并没有真正改变所使用的数据库类型的情况。
但是,某些东西最终会取代我们都习惯的数据库。问题是这将是更高级别的 RDB 版本还是不同的东西。这个问题的另一个方面是,当前的 RDB 需要多长时间才能淡出?(我也没有答案。)
这些天乌云还在,所以我不认为很快就会如此。
我不认为云计算会扼杀 RDBMS。不过可能还有别的东西。
首先,给定应用程序使用什么类型的存储引擎不(或不应该)取决于它运行的位置(云或特定服务器),而是取决于它需要如何存储数据。
其次,据我所知,人们认为 RDBMS 即将淘汰的唯一原因是它们的扩展性不如非关系型 DBMS(例如 CouchDB 等面向文档的 DBMS),后者更容易分布到云端。但是,RDBMS 没有理由在未来变得更加云友好。作为一个早期的例子,看看Drizzle:
Drizzle 项目正在构建一个针对云和网络应用程序优化的数据库。它是为现代多 CPU/核心架构上的大规模并发而设计的。
所以不,我不认为云计算会杀死 RDBMS。他们只会被迫适应。然而,如果现有的替代方案或新的替代方案变得像 RDBMS 一样强大且易于使用,那么可能会扼杀它们。我的意思是一个解决方案,它既有完全可靠的软件(不允许测试版),也很容易让程序员切换到。他们向了解 RDBMS 的人颁发学位。由于有所有的辅助软件(例如像 ActiveRecord、SQLAlchemy 等 ORM 以及我假设的任何 .NET 用户),即使对于不知道第一范式是什么的人来说,使用 RDBMS 也变得很容易。所以我认为,在人们有办法使用(例如)DODBMS 之前,RDBMS 将继续占据主导地位。我也不是说这一定是坏事。再次,
引用文章:
“关系型数据库的内在约束保证了最底层的数据具有完整性。违反完整性约束的数据不能物理地录入数据库中。键/值数据库中不存在这些约束,所以保证数据的责任完整性完全取决于应用程序。但应用程序代码经常带有错误。设计合理的关系数据库中的错误通常不会导致数据完整性问题;然而,键/值数据库中的错误很容易导致数据完整性问题。
这对我来说意味着 RDBMS 注定要失败,热门新技术正面临着一个伟大而辉煌的未来,就像用户对其数据的正确性几乎不感兴趣一样。
恕我直言。
对于需要查询更多结构化数据的应用程序而言,关系数据库没有任何问题(例如,“有多少人购买了产品 XYZ,在这一天,支付了超过 100 美元但不到 150 美元?”)。随着这些系统的扩展和增长,需要解决潜在的重要架构问题。一旦您的数据库超出您启动的一台机器和/或流量/请求开始超载可用资源,那么(如果您仍想保留关系数据库)您必须开始添加层。值得庆幸的是,今天有比前几年更多的选项可用......包括缓存、映射和减少以及其他功能 - 但这些附加层确实增加了复杂性和维护开销。从某种意义上说,我认为这些工程“创可贴” 哪个最有可能解决当今关系数据库的可伸缩性和分布问题,但从长远来看?谁知道。我今天也看到了这些流行的层——所有这些基本上都试图模拟对象数据库中已经可用的功能,为开发人员提供一个“虚拟对象数据库”层,他们可以使用他们的对象语言来更快、更有效地做事,并获得过去的增长和绩效障碍。所以我想我的总体看法是,关系数据库成为事实上的数据库可能主要是因为查询数据库(相对)容易,并将结果返回给使用它的一个客户端/应用程序。不过随着数量的增长,应用程序的复杂性呈指数级增长,我认为更多的开发人员会决定硬着头皮,学习对象 DB 的语法(实际上现在与关系 DB 一样标准化),并跳过所有中间件和层,这些中间件和层只能模拟可以在 OODBMS 中本机获得的功能。我已经看到 OODB 可以简单地安装在任意数量的服务器上,并根据需要自动分发数据,并为开发人员提供任何规模的数据库联合的单一视图……在我看来,随着系统变得更加分布式,这是最好的解决方案,获得可以具有本机分布式架构的数据库。无论如何,只是一个想法。并为开发人员提供任何规模的数据库联合的单一视图......在我看来,随着系统变得更加分布式,以获得可以具有本地分布式架构的数据库的最佳解决方案。无论如何,只是一个想法。并为开发人员提供任何规模的数据库联合的单一视图......在我看来,随着系统变得更加分布式,以获得可以具有本地分布式架构的数据库的最佳解决方案。无论如何,只是一个想法。