web-dev-qa-db-ja.com

リレーショナルデータと非リレーショナルデータの違いは何ですか。

ここが今のところです:MySQLやPostgresなどのリレーショナルデータベースにあるようなリレーショナルデータは、テーブル間にリレーションがあるため、リレーショナルであることを知っています。これが、RDBMSに厳密なスキーマがある理由です。一方、NoSQLデータベースはより緩いスキーマを提供しますが、それらの関係を失います。しかし、MongoDBは、たとえば、データ間の関連付け(One-To-One、One-To-Manyなど)に対する公式サポート(または少なくとも ブログ投稿 )を提供しています。

現在、プロジェクトに含めるデータがリレーショナルであるかどうか、したがってMongoDBが悪い選択であるかどうかは本当にわかりません。従来のRDBMSよりも特定の理由を使用しない限り、NoSQLデータベースを使用しないでくださいと人々は言い続けています。しかし、特にGraphQLに関しては、MongoDBが本当に好きです。 JavaScriptで作業するので、Mongooseを使用するのが大好きです。一方、私のデータ構造は一種のリレーショナルのように見えます(ユーザーはマシンを持っており、マシンは部屋の中にあり、ユーザーが所有しています)。

私は本当に混乱しています。 MERN/MEVN/MEANスタック、およびNodeでのMongoDBの素晴らしさは誰もが繰り返しますが、私はそれに同意し、私はそれを気に入っています。 。これについてあなたの考えを教えてくれませんか?

3
IchBinGrumpig

リレーショナルデータと非リレーショナルデータに違いはありません。データはデータです。これは、アプリケーションによってアドレス指定されるドメインの基本的な側面です。それを処理するために使用されるテクノロジーに応じて、変化しないか、変化してはなりません。

異なるのは、さまざまなDBMSとそのデータモデルのアフォーダンスです。 Key-Valueシステムで実際にできることは、blobを永続化し、要求されたときにそれを返すことだけです。これらのblobの内容を理解していないため、フィルター処理、結合、または集計を行うことができません。ドキュメントデータベースはこれらのことを実行できますが、(一般に)参照整合性とACIDを忘れます。グラフデータベースを使用すると、データの関連性を簡単に探ることができますが、たとえば、何十億もの同一のトランザクションを合計するのに最適ではない場合があります。

データストレージの各モデルは、データを保持できます。次に、問題はプロジェクトリスクのバランスを取ることになります。 DBMSに何をしてもらいたいのか、アプリケーションで何をしたいのか、そして完全に無視する余裕があるのか​​。これらのテクノロジーのそれぞれにどの程度精通しているか、そしてどれほど生産性が高いか。どのようなライセンス/ハードウェア/サポート/トレーニング/採用費用は、組織が負担する用意があります。

4
Michael Green