問題タブ [couchdb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
couchdb - CouchDB ドキュメントのモデル化の原則
しばらく答えようとしているのですが、わからない質問があります。
CouchDB ドキュメントをどのように設計または分割しますか?
ブログ投稿を例に取ります。
それを行う半「リレーショナル」な方法は、いくつかのオブジェクトを作成することです。
- 役職
- ユーザー
- コメント
- 鬼ごっこ
- スニペット
これは非常に理にかなっています。しかし、私は同じことをモデル化するためにcouchdbを使用しようとしています(それが素晴らしいというすべての理由から)が、非常に困難でした。
そこにあるブログ投稿のほとんどは、これを行う方法の簡単な例を示しています. 彼らは基本的に同じように分割しますが、「任意の」プロパティを各ドキュメントに追加できると言っています。これは間違いなく素晴らしいことです。したがって、CouchDB では次のようになります。
- 投稿 (ドキュメント内のタグとスニペット「疑似」モデル付き)
- コメント
- ユーザー
コメントとユーザーをそこに入れることができると言う人もいるので、次のようになります。
p>とても見栄えが良く、わかりやすいです。また、ユーザーとタグと同じように、すべての Post ドキュメントからコメントのみを抽出してコメント モデルに取得するビューを作成する方法も理解しています。
しかし、「サイト全体を 1 つのドキュメントにまとめてみませんか?」と思います。
p>必要なものを見つけるためのビューを簡単に作成できます。
次に、ドキュメントをより小さなドキュメントに分割するタイミング、またはドキュメント間に「関係」を作成するタイミングをどのように決定しますか?
次のように分割すると、より「オブジェクト指向」になり、値オブジェクトにマップしやすくなると思います。
p>...しかし、リレーショナル データベースのように見え始めます。また、「ドキュメント内のサイト全体」のように見えるものを継承することが多いため、リレーションでモデル化するのはより困難です。
リレーショナル データベースとドキュメント データベースをいつ、どのように使用するかについて多くのことを読んできたので、それはここでの主な問題ではありません。CouchDBでデータをモデル化するときに適用するのに適したルール/原則は何ですか。
もう 1 つの例は、XML ファイル/データの場合です。一部の XML データには 10 レベル以上の深さのネストがあり、ActiveRecord、CouchRest、またはその他のオブジェクト リレーショナル マッパーから JSON をレンダリングするのと同じクライアント (たとえば、Ajax on Rails、または Flex) を使用して視覚化したいと考えています。以下のようなサイト構造全体である巨大な XML ファイルを取得することがあります。それを値オブジェクトにマップして Rails アプリで使用する必要があるため、データをシリアル化/逆シリアル化する別の方法を記述する必要はありません。 :
p>したがって、一般的な CouchDB の質問は次のとおりです。
- ドキュメントを分割するためにどのような規則/原則を使用していますか (関係など)?
- サイト全体を 1 つのドキュメントにまとめてもよろしいですか?
- もしそうなら、任意の深さレベル (上記の大きな json の例や xml の例など) のドキュメントのシリアライズ/デシリアライズをどのように処理しますか?
- それとも、それらを VO に変換しないで、「これらは Object-Relational Map にネストされすぎているので、未加工の XML/JSON メソッドを使用してアクセスするだけです」と判断しますか?
お世話になりました、CouchDBでデータをどう分割するかという問題は、「これからはこうすればいい」と言い切るのが難しかったです。私はすぐにそこに着くことを願っています。
以下のサイト/プロジェクトを調査しました。
- CouchDB の階層データ
- CouchDB ウィキ
- ソファ - CouchDB アプリ
- CouchDB 決定版ガイド
- PeepCode CouchDB スクリーンキャスト
- カウチレスト
- CouchDB README
...しかし、彼らはまだこの質問に答えていません。
couchdb - couchdbの固有の制約
独自の制約を適用するための手法/提案はありますか?はい、一意のキーを作成できますが、キーとキーを変更することはできません。また、このアプローチは複雑な検証(個別の一意のログイン、個別の一意の電子メールなど)には適していません。
たとえば、アカウントには一意のログインと電子メールが必要です。このフィールドからキーを取得すると、不整合が発生します。
見栄えは良いですが:
おっと、ログインできるアカウントが2つあります: "mary"
database - 何のために、どのように使用すればよいですか?
couchdbについてはよく耳にしますが、それに関するドキュメントをいくつか読んだ後でも、なぜそれをどのように使用するのかがわかりません。
この謎を解いてくれませんか?
visual-studio - Visual Studio - データベースにあるソース コードの編集
Apache CouchDB のサーバー エクスプローラーに似たものを構築しています。必要なことの 1 つは、CouchDB では JavaScript 関数である CouchDB ビュー定義を編集できることです。
Visual Studio をトリックして、オブジェクトを使用して JavaScript 関数のコンテンツを取得および保存し、残りの部分は引き続き使用できるようにするにはどうすればよいでしょうか。エディター自体には満足しており、独自のエディター/言語サービスなどを作成するつもりはありません。後者は、このプロジェクトが保証するものよりもはるかに大きな努力になるでしょう
編集
さらに掘り下げた後、私はまだ立ち往生しています。私が知っていることは次のとおりです。IVsUIShellOpenDocument
インターフェースはOpenStandardEditor
、標準のVisual Studioエディターを開くために使用できるメソッドを提供します。パラメータの 1 つとして、このメソッドは、ドキュメント データ オブジェクトの IUnknown インターフェイスへの Pointer を取ります。このオブジェクトは、MSDN 全体の多くの場所で説明されているいくつかのインターフェイスを実装することになっています。
Visual Studio SDK は、ドキュメント データ オブジェクトの「サンプル」実装も提供しますVsTextBufferClass
。このクラスのインスタンスを作成できます。インスタンスへのポインタを に渡すとOpenStandardEditor
、エディタが表示され、正常に動作しているように見えます。
IVsTextBuffer
同じインターフェイス ( 、VsTextBuffer
、IVsTextLines
)メソッドを実装する独自のクラスを実装しようとすると、OpenStandardEditor
成功が返されますが、VS は呼び出し時editor.Show()
にアクセス違反で爆発します。
私の疑いでは、VsTextBufferClass は他のインターフェイスも実装していますが、C# の方法ではなく、古き良き COM の方法で実装しています。私はどれがどれかわかりません。
何かご意見は?
python - 非リレーショナルデータストアのユースケースは何ですか?
1つのプロジェクトでCouchDBを使用し、もう1つのプロジェクトでGAEAppEngineデータストアを使用することを検討しています。リレーショナル関連のものについては、私はpostgresを使用する傾向がありますが、ORMの方がはるかに好きです。
とにかく、どのユースケースが非リレーショナルデータストアに最も適していますか?
python - CouchdB にはどの Python クライアント ライブラリを使用すればよいですか?
私たちが抱えている特定の問題に対する完璧な解決策のように見えるので、私は CouchDB を試し始めています。すべての作業は、従来の依存関係のないまったく新しいプロジェクトで行われることを考えると、どのクライアント ライブラリを使用することをお勧めしますか? また、その理由は何ですか?
使用する OS に重複があれば、これはより簡単になります。FreeBSD のポート コレクションにはpy-simplecouchdbしかありませんが、そのライブラリのプロジェクト Web サイトでは、代わりにCouchDBKitを使用するように指示されています。どちらもCouchDBのみに同梱される Ubuntu には付属していません。これらの 2 つの OS には共通のライブラリがないため、おそらくソースから何かをインストールする予定です (時間があれば、Ubuntu と FreeBSD の関係者にパッケージを提出したいと考えています)。
興味のある方のために、CouchDB を、さまざまなサービス間で受け渡されるデータの便利な中間ストレージの場所として使用したいと思います。メッセージ バス システムを考えてみてください。たとえば、Web ページをダウンロードして解析し、興味深いビットを他のデーモンに送信してさらに処理するデーモンがあります。これらのオブジェクトの多くは、実行時まで正しく定義されていません (「HTML と一連のメタデータ、およびそれに対して実行するいくつかのアクションがあります」)。アドホックなローカル ネットワーク プロトコルにシリアライズしたり、PostgreSQL に貼り付けたりするよりも、この目的のために設計されたものを使用したいと思います。私たちは現在、この役割でNetWorkSpacesを使用していますが、CouchDB のような幅広いサポートやユーザー コミュニティはほとんどありません。
couchdb - Key-Valueストアを理解する
CouchDBやCassandraなどのKey-Valueストアに頭を悩ませようとしています。なぜそれらが有用なのかは理解していますが、MySqlのようなRDBMSをどのように置き換えるかについては、わかりません。
これが私が保存する必要があるものだとしましょう:
次に、青い車をすべて見つける必要があります。
Key-Valueストアは値を使用してキーをどのようにクエリしますか?そのmap-reduceが使用される可能性のある場所をいくつか読みましたが、いくつかのプロジェクトのソースを見ると、例が見つかりません。
私が正しい質問をしているのかどうか教えてください。
python - Pythonで使用するkey:valueストアはどれですか?
そこで、Pythonで使用するためのさまざまなkey:value(valueは厳密に単一の値または場合によってはオブジェクト)ストアを調べており、いくつかの有望なものを見つけました。私は評価段階にあるため、現時点では特に要件はありません。何が良いのか、何が悪いのか、これらがうまく処理できる、またはうまくいかない場合のコーナーケースなどを探しています。すでに試してみた方もいらっしゃると思いますので、調査結果や問題点をお聞かせください。 /等。Pythonを使用したさまざまなkey:valueストア。私が主に見ているのは:
memcached- http ://www.danga.com/memcached/ pythonクライアント: http: //pypi.python.org/pypi/python-memcached/1.40 http://www.tummy.com/Community/software/python- memcached /
CouchDB- http ://couchdb.apache.org/ pythonクライアント:http ://code.google.com/p/couchdb-python/
Tokyo Tyrant- http: //1978th.net/tokyotyrant/ pythonクライアント:http ://code.google.com/p/pytyrant/
Lightcloud- http: //opensource.plurk.com/LightCloud/ Pythonで書かれた、TokyoTyrantに基づいています
Redis- http://redis.io/ pythonクライアント:http://pypi.python.org/pypi/txredis/0.1.1
MemcacheDB- http://memcachedb.org/
そこで、単純なカウントを使用してベンチマーク(単にキーを挿入して読み取る)を開始し、数値キーと「テキストの短い文字列」の値を生成しました。
memcached:CentOS 5.3 / python-2.4.3-24.el5_3.6、libevent 1.4.12-安定、memcached 1.4.2、デフォルト設定、1ギガメモリ、1秒あたり14,000挿入、16,000秒の読み取り。本当の最適化はありません、いいですね。
memcachedbは、1秒あたり17,000〜23,000回の挿入、1秒あたり44,000〜64,000回の読み取りを要求しています。
また、他の人がどのようにスピードを上げているのか疑問に思っています。