阅读背景:

随着云计算越来越流行,关系型DBs会死吗?

来源:互联网 

While computer programming evangelists predicting the future of Cloud Computing to be very bright, is there a chance for relational databases to be on their way out?

尽管计算机编程的鼓吹者们预言云计算的未来将是非常光明的,但关系数据库是否有机会走向灭亡呢?

What are the DBs that are more suitable for Cloud Computing?

什么是更适合云计算的DBs ?

9 个解决方案

#1


4  

Here's a good article that may answer some of your questions. It features a good comparison between RDBMS systems and the ones usually used for cloud storage infrastructure:

这里有一篇很好的文章可以回答你的一些问题。它将RDBMS系统与通常用于云存储基础设施的系统进行了很好的比较:

https://www.readwriteweb.com/enterprise/2009/02/is-the-relational-database-doomed.php

https://www.readwriteweb.com/enterprise/2009/02/is-the-relational-database-doomed.php

#2


4  

The relational database model has a firm mathematical basis in relational algebra. This makes it easy to reason about, to extend, and to use properly (in theory). Even if database access patterns change significantly as a result of these new APIs and uses, it's likely that a relational database will form the underlying implementation for this reason.

关系数据库模型在关系代数中具有坚实的数学基础。这使我们很容易推理、扩展和正确地使用(在理论上)。即使数据库访问模式由于这些新的api和使用而发生了显著的变化,出于这个原因,关系数据库可能会形成底层实现。

#3


1  

No, RDBMSs will always have a place because of their functionality. Not just on their own, but also as backbones to other systems (like OODBMSs).

不,由于rdbms的功能,它们总是具有一定的地位。不仅是他们自己,也是其他系统(如OODBMSs)的骨干。

#4


0  

Relational databases are still relevant, both for localized storage (such as application-specific storage) and for server storage.

关系数据库仍然是相关的,既适用于本地化存储(比如应用程序特定的存储),也适用于服务器存储。

#5


0  

The cloud computing platforms that I've seen each have a relational database offering. So, I don't see cloud computing really changing the picture in reference to database types being used.

我见过的云计算平台都提供关系数据库。因此,我认为云计算并没有真正改变正在使用的数据库类型。

However, something will eventually replace the databases that we're all used to. The question is whether that will be a higher-level version of RDBs or something different. Another aspect of that question is how long will it take for the current crop of RDBs to fade out? (I don't have an answer for either.)

然而,某些东西最终会取代我们都习惯的数据库。问题是,这将是RDBs的高级版本还是其他版本。这个问题的另一个方面是,目前的RDBs需要多长时间才能淡出?(我也没有答案。)

#6


0  

Clouds go poof still these days, so I don't think so anytime soon.

近来乌云密布,所以我认为不会很快。

#7


0  

I don't think that cloud computing will kill RDBMSs. Something else might though.

我不认为云计算会杀死rdbms。别的可能。

First, what type of storage engine a given application uses does not (or should not) depend on where it is running (the cloud or a specific server), but rather on how it needs to store the data.

首先,给定应用程序使用的存储引擎类型不(或不应该)取决于它运行的位置(云或特定的服务器),而是取决于它需要如何存储数据。

Second, as far as I can tell the only reason people think RDBMSs are on their way out is because they don't scale as well as non-relational DBMSs (such as document-oriented DBMSs like CouchDB) which can more easily be distributed into the cloud. However, there is no reason that RDBMSs cannot become more cloud-friendly in the future. As an early example, look at Drizzle:

其次,就我所知,人们认为rdbms正在消失的唯一原因是,它们没有像非关系型dbms(如面向文档的DBMSs,如CouchDB)那样能够更容易地分布到云中。然而,没有理由说rdbms不能在未来变得更适合云计算。作为一个早期的例子,看看毛毛雨:

The Drizzle project is building a database optimized for Cloud and Net applications. It is being designed for massive concurrency on modern multi-cpu/core architecture.

毛毛雨项目正在构建一个针对云和Net应用程序的数据库。它是在现代多cpu/核心体系结构中为大规模并发设计的。

So no, I don't think that cloud computing will kill RDBMSs. They will just be forced to adapt. What might kill them, however, is if an existing alternative, or a new one, becomes as robust and easy to use as RDBMSs. What I mean is a solution that has both completely solid software (betas not allowed) and is easy for programmers to switch to. They give out degrees to people who understand RDBMSs. Because of all the assisting software (such as ORMs like ActiveRecord, SQLAlchemy, and whatever the .NET folk use I'm assuming), using RDBMSs has become easy even for people who don't know what the first normal form is. So I think that until there is a way for people to use (for instance) a DODBMS just as easily, RDBMSs will continue to dominate. I'm also not saying that is necessarily bad. Again, which DBMS you use should depend on your data, not what people say is cool and better.

所以,我不认为云计算会扼杀rdbms。他们将被迫适应。然而,如果现有的替代方案或新的替代方案变得像rdbms一样健壮且易于使用,那么可能会扼杀它们。我的意思是,这个解决方案既具有完全可靠的软件(不允许使用betas),又便于程序员进行切换。他们向理解rdbms的人颁发学位。由于所有的辅助软件(比如ActiveRecord、SQLAlchemy等orm,以及我假设的。net民间应用),使用RDBMSs变得很容易,即使对于不知道第一种正常形式是什么的人来说也是如此。所以我认为,除非有一种方法可以让人们使用(例如)DODBMS,否则rdbms将继续占据主导地位。我也不是说那一定不好。再说一次,你使用的DBMS应该取决于你的数据,而不是人们所说的“酷”和“更好”。

#8


0  

A quote from the article :

引用这篇文章:

"The inherent constraints of a relational database ensure that data at the lowest level have integrity. Data that violate integrity constraints cannot physically be entered into the database. These constraints don't exist in a key/value database, so the responsibility for ensuring data integrity falls entirely to the application. But application code often carries bugs. Bugs in a properly designed relational database usually don't lead to data integrity issues; bugs in a key/value database, however, quite easily lead to data integrity issues."

关系数据库的内在约束确保了最低层的数据具有完整性。违反完整性约束的数据不能物理地输入到数据库中。这些约束不存在于键/值数据库中,因此确保数据完整性的责任完全落在应用程序上。但是应用程序代码经常带有错误。适当设计的关系数据库中的错误通常不会导致数据完整性问题;但是,键/值数据库中的错误很容易导致数据完整性问题。

What this means to me is that RDBMS's are doomed, and hotshot new technologies are facing a great and brilliant future, to the same extent that users aren't anywhere near interested in the correctness of their data.

这对我来说意味着RDBMS已经注定了,而热门的新技术正面临着一个伟大而辉煌的未来,就像用户对数据的正确性没有任何兴趣一样。

IMHO.

恕我直言。

#9


0  

There's nothing wrong with relational databases for applications that need to query more structured data (e.g., "How many people bought product XYZ, on this date, paid more than $100, but less than $150?"). There are potentially significant architectural issues that will need to be addressed as these systems scale and grow. Once your DB outgrows the one machine you started on and/or traffic/requests begin to overload available resources, then (if you still want to keep your relational database) you have to start adding layers. Thankfully today, there are many more options available then in previous years... including caching, map and reduce, and other functionality - but these add-on layers do add complexity and maintenance overhead. In one sense I'd consider these engineered "band-aids" which will most likely solve the scalability and distribution problems with a relational DB today, but longer term? Who knows. I also see these popular layers today - all of which are basically trying to emulate functionality already available in object DBs, giving developers a "virtual object DB" layer that they can use with their object languages to do things faster and more efficiently, and get past the growth and performance obstacles. So I guess my overall opinion is, relational DBs became the defacto DB probably mostly due to how (relatively) easy it was to query a database, and get results back to the one client/app using it. As volumes have grown though, and application complexity is exponentially greater today, I think more developers will decide to bite the bullet, learn the syntax for object DBs (which is actually about as standardized today as relational DBs), and just skip all the middleware and layers that only emulate functionality that one could get natively in an OODBMS. I've seen OODBs that simply get installed on any number of servers, and automatically distributing data as needed, and giving the developer a single view of any size federation of databases... Seems to me the best solution as systems become more distributed, to get a DB that can has native distributed architecture. Anyway, just a thought.

对于需要查询更多结构化数据的应用程序来说,关系数据库没有什么错(例如,“有多少人在这一天购买了产品XYZ,支付了100美元以上,但还不到150美元)。随着这些系统的规模和发展,可能会有一些重要的体系结构问题需要解决。一旦您的DB超出了您启动的一台机器,/或流量/请求开始超载可用的资源,那么(如果您仍然想要保持关系数据库),您必须开始添加层。值得庆幸的是,今天有比往年更多的选择……包括缓存、映射和减少,以及其他功能——但是这些附加层确实增加了复杂性和维护开销。从某种意义上说,我认为这些经过设计的“创可贴”将最有可能在今天解决关系数据库的可扩展性和分发问题,但更长期?谁知道呢。我今天也看到这些受欢迎的层——所有这些都基本上已经可以在对象DBs模仿功能,给开发人员提供了一个“虚拟对象DB”层,他们用对象可以使用语言来做事情更快和更有效率,并得到过去的增长和性能障碍。因此,我的总体观点是,关系DBs成为事实上的DB可能主要是由于查询数据库(相对而言)非常容易,并且使用它将结果返回给一个客户端/应用程序。容量虽然有所增加,和应用程序复杂性指数更大的今天,我认为更多的开发人员将决定咬紧牙关,学习对象的语法DBs(这实际上是关系DBs)一样标准化的今天,就跳过所有中间件和层,只有模仿功能,可以得到在OODBMS。我见过oodb简单地安装在任意数量的服务器上,并根据需要自动分发数据,并为开发人员提供任意大小的数据库联合视图……在我看来,随着系统变得越来越分布式,获得一个具有本地分布式体系结构的DB是最好的解决方案。无论如何,只是一个想法。


分享到: