9

数据库的最新热潮似乎集中在非关系数据库上。为什么?好像有点适得其反。例如,以关系方式表达我的数据对我来说更有意义(Django + SQL for tables 中的示例代码):

class Post(models.Model):
    name = models.CharField()
    created = models.DateTimeField(auto_now_create = True)

class Comment(models.Model):
    text = models.TextField()
    post = models.ForeignKey('Post')
    created = models.DateTimeField(auto_now_create = True)

SQL:

create table post (id int primary key auto_increment,
        name varchar,
        created datetime);

create table comment(id int primary key auto_increment,
        text text,
        post_id int,
        created datetime,
        foreign key post_id references post(id));

SQL 的强大之处在于,这些信息可以用 多种方式表达。当然,存在整个对象关系映射问题,但我将其视为一个特性,而不是一个问题。使用 SQL,我可以获取给定帖子中比昨天更早的所有不同评论,将所有这些评论整理在一起,并生成统计信息。非关系数据库也可以这样做吗?

使用像 MongoDB 这样的非关系型数据库似乎也会真正影响性能,因为您将立即获取整个对象图,而不是您最需要的。

有人可以向我解释使用非关系数据库有什么好处吗?

4

2 回答 2

4

看看CAP 定理

以及PACELC 的解释

关系数据库倾向于做出一组权衡,而非关系数据库倾向于做出一组不同的权衡。对于海量分布式数据集,非关系有时更有意义。

从某种意义上说,非关系型数据库可以消除很多 ORM 的痛苦,但也总是需要权衡取舍。在某些用例中,非关系存储可能更快,因为特定层次结构的所有数据都可以更紧密地存储在磁盘上。另请注意,非关系数据库仍然具有查询功能。

最后,它是关于为您的特定用例做出适当的权衡。

于 2011-10-28T22:01:51.553 回答
0

看看 Nosql:http ://en.wikipedia.org/wiki/NoSQL

这基本上是因为可扩展性和性能。

于 2011-10-28T22:06:32.083 回答