-6

私は当然フロントエンドの人ですが、データベース設計とバックエンド開発者がここ数日私の興味をそそり、非常に混乱しています。頭が痛くならないように、これらの概念を十分に理解したいと思います。

私はアクティブレコードのようなORMを扱うことに慣れています。レールを介してユーザーオブジェクトを想像すると、人のテーブルの行に関連している人のオブジェクトを想像します。基本的にわかりました。

だから、mongodbのような非リレーショナルデータベースは、「ビッグデータで高速」であるだけでなく、oop言語での開発をより自然にするためにクールでもあることを読みました(なぜですか?)。次に、ほとんどのデザインパターンはおそらく真にリレーショナルではないことも読みました。わかりました、これは私が迷子になるところです。

1)リレーショナルデザインと非リレーショナルデザインの基本的な例は何ですか?2)上記と同様に、構造化データと非構造化データの例は何ですか(これは上記の言い換えですか?)

ですから、私が(私がすぐに知らないうちに)感じていることを考えると、私がモデル化しようとしたほとんどすべてのタイプのプロジェクトはリレーショナルでした。しかし、多分私は技術よりもセマンティクスを使用しているだけです。たとえば、投稿やコメント。相互に関係しています。そこにユーザーを追加します。最近のほとんどのアプリには、他のデータ/オブジェクトを介して到達するのに常に役立つデータがあるようです。それは関係的ですね。

あまり一般的ではない何かを説明する何かはどうですか。

ワークアウトトラッカーアプリを作成していたとしましょう。ユーザー、エクササイズ、ワークアウト、ルーチン、log_entriesがあります。

ワークアウトをグループ化するルーチンを作成します。トレーニングは、エクササイズのグループです。エクササイズのログエントリを通じて、担当者と体重を記録します。これはリレーショナルデータですか、それとも非リレーショナルですか?モンゴはこれをモデル化するのに最適ですか、それともひどいですか?

統計のようなものが関係してくると聞きました。それは上記の例にどのように影響しますか?人々は通常どのような統計について話しますか?

ユーザーの体重、身長、体脂肪など、他のものの追跡を追加したとしましょう。それは物事にどのように影響しますか?

ご理解のほどよろしくお願いいたします。

編集:誰もが一方のためにもう一方のために開発する方が簡単かもしれない理由を説明できますか?mongoのようなものを使用しているのは、「ge it」すると「クリック」が増えるだけでなく、移行を実行する必要がないためです。

もう1つ、ORMのような抽象化を使用する場合、それは本当に重要ですか?もしそうならいつ?私にとっての初期値は、データのクエリとオブジェクトのモデリングのしやすさです。それを簡単にできるものは何でも、私は満足しているでしょう。正直なところ、データをモデル化しようとすると、頭を悩ませることがよくあります。

4

1 に答える 1

0

よし、ちょっとやってみよう...

(免責事項: 私は非リレーショナル データベースの実務経験がほとんどないため、これは少し「関係中心」になります。)

リレーショナル データベースは、「クッキー カッター」(テーブル) を使用して、多数の均一な「クッキー」(これらのテーブルの行) を生成します。非リレーショナル データベースでは、"Cookie" をどのように形成するかについて自由度が高くなりますが、セット ベースの SQL の力が失われます。静的型付けと動的型付けに少し似ています。

1) リレーショナル デザインと非リレーショナル デザインの基本的な例は何ですか?

タプルは属性の順序付けられたリストであり、リレーションは同じ「形状」のタプルのセットであり、テーブルはリレーションの物理的な表現です。このパラダイムに当てはまるものがあれば、それは「リレーショナル」です。

金融取引はリレーショナルになる傾向がありますが、(たとえば) テキスト ドキュメントはそうではありません。その間には多くの灰色の領域があります。

2)上記と同様に、構造化データと非構造化データの例は何ですか(これは上記の言い換えですか?)

知らない。「構造化」をどのように定義しますか?

最近のほとんどのアプリには、他のデータ/オブジェクトを介して到達するのに常に役立つデータがあるようです。それは関係性ですよね?

もちろん。リレーショナル データベース自体には「ポインタ」はありませんが、外部キーは本質的に同じ役割を果たします。通常、JOINS は FK を介して行われますが、いつでも適切な方法でデータを JOIN できます。

ワークアウト トラッカー アプリを作成していたとしましょう。ユーザー、エクササイズ、ワークアウト、ルーチン、log_entries があります。

これは、リレーショナル モデルにうまく適合するように見えます。

ユーザーの体重、身長、体脂肪などの追跡を追加したとしましょう。それは物事にどのように影響しますか?

おそらく、追加の列やテーブルが必要になるでしょう。これはまだ私に関連しているように見えます。

人々が通常話している統計は何ですか?

おそらく彼らは、コストベースのクエリオプティマイザーがより良い実行計画を選択するのに役立つインデックス統計について話しているのでしょうか?

どちらか一方を開発する方が簡単な理由

仕事に適したツール、覚えていますか? データの構造が事前にわかっていて、それがリレーショナル モデルに適合する場合は、リレーショナル データベースを使用します。

また、リレーショナル データベースは、多くのユーザーが同時にアクセスする膨大な量のデータの管理に非常に優れている傾向があります (これは、一部の非リレーショナル データベースにも当てはまる場合があります)。

もう 1 つ、ORM のような抽象化を使用する場合、それは本当に重要なのでしょうか?

ORM は、簡単なことを簡単にし、難しいことを難しくする傾向があります。繰り返しますが、バランスの問題です。私にとって、必要なフィールドを正確に抽出する微調整された SQL を作成できることは、ボイラープレート CRUD を作成する退屈な作業よりも優れているため、ORM はあまり好きではありません。他の人は同意しないかもしれません。

正直なところ、データをモデル化しようとすると、頭を悩ませていることに気づきます。

さて、大きな話題です。時間と労力を惜しまない場合は、ERwin Methods Guideから始めて、以下も参照してください: Use The Index, Luke!

于 2012-07-20T12:17:17.967 に答える