最近数据库中最流行的趋势似乎集中在非关系型数据库上。为什么呢?这似乎有点违背生产力的原则。例如,对我来说,用关系方式表达数据(使用Django + SQL代码示例)更加合理:
SQL 的威力在于可以用很多种方式表达信息。当然,整个对象关系映射问题确实存在,但我认为这是一种特性而不是问题。使用 SQL,我可以获取给定帖子中所有比昨天旧的不同评论,将它们汇总在一起并生成统计数据。非关系型数据库能否做到相同的事情呢?
使用像 MongoDB 这样的非关系型数据库似乎会严重影响性能,因为你会立即获取整个对象图,而不是最少需要的部分。
有人能向我解释一下使用非关系型数据库的好处吗?
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 这样的非关系型数据库似乎会严重影响性能,因为你会立即获取整个对象图,而不是最少需要的部分。
有人能向我解释一下使用非关系型数据库的好处吗?