MongoDB/CouchDB
どちらも簡単に始められるのは MongoDB だと思います。列にインデックスを追加したり、カウントなどの操作を呼び出したりできるため、古き良きリレーショナル データベースのような感覚があります。私が知る限り、CouchDB では、そのようなすべての関数に Map-Reduce を使用します。インデックスは、いわゆるビューによって CouchDB で生成されます。
また、MongoDB はデータベース、テーブルの概念を大まかに NoSQL (データの 2 レベル アクセス) にマッピングしますが、CouchDB は 1 レベル (データベース) しか認識しません。
mytable = Connection().mydatabase.mytable # MongoDB
mytable.save(document)
mydb = couchdb.Server()['mydatabase'] # CouchDB
mydb.save(doc)
したがって、CouchDB は、ある種のタイプでドキュメントを選択する必要があるため (または複数のデータベースを使用する必要があるため)、最初は理解するのが少し難しいと思いますが、追加の属性type
は人々が使用するものだと思います。David Zuelke によるこのプレゼンテーションを参照してください。 41ページ。
MongoDB は通常、プログラミング言語に含めることができる API で動作します (ライブラリが存在する場合、ほとんどの言語に存在します)。これらの呼び出しは、バイナリ形式でサーバーに送信されます。一方、CouchDB は REST-API を使用します。
データの構造
ネット上でいくつかのチュートリアルを探すことができます。ブログはドキュメント指向のデータの良い例であるため、彼らはブログに関して何かを説明することがよくあります。
ここで自分自身を少し見てみましょう:type
投稿用のテーブル (または CouchDB を使用している場合) があります。各投稿には、テキスト、いくつかのタグ、日付、コメントを含めることができます。ドキュメント データベースのポイントは、ドキュメント以外のすべてを保存し、リレーショナル データベースが持つこれらすべての関係を保存できることです。
つまり、次のように投稿をモデル化できます。
{type: post,
date: 2012-06-19 22:14:23,
author: user1462192,
text: Welcome to my blog,
comments: [
{author: Aufziehvogel,
date: 2012-06-19 22:14:45,
text: Hello!
},
{author: user1462192,
date: 2012-06-19 22:14:45,
text: Hello, too!
}
],
tags: [welcome, new, interesting]
}
つまり、投稿は次のようになります。
ソフトウェアを開発するときに必ずしなければならないこと。どのデータを保存するかを考えてください。どのように関係しているのかを考えてください。また、ドキュメント指向のデータベースに関しては、データベースにアクセスする方法についても考える必要があります。
大きすぎるため、投稿自体の子要素として保存すべきでないデータがある場合があります。おそらく、著者の名前だけでなく、年齢、登録日などの詳細情報も知っているでしょう...</p>
次に、ユーザーは次のようになります。
{name: Aufziehvogel,
age: 21,
registration: 2012-06-19,
interests: [php, nosql, data-mining, foreign-languages]
}
このデータの一部は変更される可能性があり、非常に大きいため、このデータを各ブログ投稿に添付することは望ましくありません。代わりに、(リレーショナル データベースと同様に) 投稿データにユーザーへの参照を格納します。次に、上記のリンクのプレゼンテーション (p 40-42) にあるように、著者とブログ投稿をマージする必要があります。これにより、必要な作成者がブログ投稿とマージされます。
また、作成者名と ID をそこに保存して、名前を表示し、データベースから「実際の」作成者を取得することなく HTML リンクを生成できるようにすることもできます。
検証中
Zuelke が示していることは、ドキュメント指向のデータベースに関しては、データが整形式かどうかをチェックするのはアプリケーションのタスクであることです。MySQL では、多くのタスク (列、データ型、長さ、UNIQUE キー) をデータベースで実行できますが、ドキュメント指向のデータベースを使用する場合は、アプリケーションで独自に実行する必要があります (ただし、MongoDB には一意のキーのような機能があると思います)。 )。
これにより、適切なコード構造も重要になり、あまりにも多くの場所でデータの形式を気にする必要がなくなります。
もっといろいろ言えると思いますが、それが最初のスタートであることを願っています。