データベースの最新の流行は、非リレーショナルデータベースに集中しているようです。なんで?それは一種の逆効果のようです。たとえば、データをリレーショナルな方法で表現する方がはるかに理にかなっています(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のような非リレーショナルデータベースを使用すると、最低限必要なものではなく、オブジェクトグラフ全体をすぐに取得できるため、パフォーマンスに大きな影響を与えるように思われます。
非リレーショナルデータベースを使用することの利点を誰かが私に説明できますか?