Why would I want to use a non-relational database?

你。 提交于 2019-12-06 03:09:56

问题


The latest craze in databases seems to be centered around non-relational databases. Why? It seems kind of counterproductive. For example, it makes much more sense to me to express my data in a relational way (example code in 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));

The power of SQL is that this information can be expressed in so many ways. Sure, the whole object-relational-mapping problem exists, but I look at it as a feature and not as a problem. With SQL, I can fetch all distinct comments of a given post which are older than yesterday, collate all of those together, and generate statistics. Can the same be done for non-relational databases?

It also would seem to really impact performance to use a non-relational database like MongoDB because you would immediately grab an entire object graph, rather than what you minimally need.

Can someone explain to me what the benefits are of using a non-relational database?


回答1:


Take a look at the CAP Theorem

And the PACELC interpretation

Relational databases tend to make one set of trade-offs, and non-relational tend to make a different set of trade-offs. For massive distributed datasets, non-relational sometimes makes more sense.

There is also a sense in which non-relational databases can eliminate a lot of the ORM pain, but again there are always tradeoffs. In some use cases, non-relational storage can be faster, because all the data for a particular hierarchy can be stored closer together on the disk. Also note that non-relational databases do still have query capabilities.

In the end, it's about making the appropriate set of trade-offs for your particular use-case.




回答2:


Look at Nosql : http://en.wikipedia.org/wiki/NoSQL

It's basically because of scalibility and performance.



来源:https://stackoverflow.com/questions/7935281/why-would-i-want-to-use-a-non-relational-database

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!