0

I plan to write a blog style app, wondering what should i be using for storage.

I intend to go with NoSql solution because doing db schema is boring. and I believe I can do most of the functionality with json structured data.

What would be some considerations when design this? Which NoSql technology fits this purpose more?

Roughly looking mongo/couchdb would do, I am hoping to get some experience based advise.

Appreciate your help!

4

2 に答える 2

1

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 には一意のキーのような機能があると思います)。 )。

これにより、適切なコード構造も重要になり、あまりにも多くの場所でデータの形式を気にする必要がなくなります。

もっといろいろ言えると思いますが、それが最初のスタートであることを願っています。

于 2012-06-19T20:30:27.887 に答える
0

app42 が提供する NoSQL データベースを使用します。 app42 NoSQL の使用方法は次のとおりです。 http://api.shephertz.com/apis/storage.php

于 2013-09-17T11:46:47.827 に答える