数据库中的最新热潮似乎集中在非关系数据库上。为什么?这似乎适得其反。例如,以关系方式表达我的数据对我来说更有意义(Django + SQL中的表示例代码):
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)似乎也会影响性能,因为您会立即获取整个对象图,而不是您最不需要的对象图。
有人可以向我解释使用非关系型数据库的好处是什么?
答案 0 :(得分:5)
关系数据库倾向于进行一组权衡,非关系数据库倾向于做出不同的权衡取舍。对于大规模分布式数据集,非关系数据集有时更有意义。
还有一种感觉,非关系数据库可以消除很多ORM的痛苦,但同样总是存在权衡。在某些用例中,非关系存储可以更快,因为特定层次结构的所有数据可以更紧密地存储在磁盘上。另请注意,非关系数据库仍具有查询功能。
最后,它是针对您的特定用例进行适当的权衡取舍。
答案 1 :(得分:1)
查看Nosql:http://en.wikipedia.org/wiki/NoSQL
这主要是因为可扩展性和性能。