6

私はCouchDBとCouchAppでしばらく遊んでいます。私が取り組んでいる新しいウェブサイトプロジェクトにそれを使用することを計画しています。

  1. スケーラビリティの観点から、私はCouchAppのアイデアが大好きです。

    欠点は、サーバー側のコードがない場合、クライアント側で実行するのが難しいことがいくつかあることです(oAuth認証など)。ある時点で、何らかの説明のサーバー側コードが必要になると確信しています。その後、Node.jsを見ることができると思いますが、現時点ではそうではありません。

  2. ページが別のサーバーから提供されているときにCouchDBを純粋にバックエンドソリューションとして使用することも最適ですが、ここでの欠点は、クロスドメインの問題により、組み込みのCouchDBAPIを簡単に使用できないことです。

では、これら2つの欠点のいずれかに対する解決策はありますか?

どういうわけかCouchAppからサーバー側のコードを提供できますか(PHPでも勝ちます)、または別のサイトを使用してページを提供できますが、クロスドメインの問題を克服できますか?

私は本当にソリューションを可能な限りクリーンに(そしてスケーラブルに)維持しようとしています。CouchDBの優れた点の1つは、超シンプルで超高速のAPIであるため、ラッパーを使用したくありません。パフォーマンス/スケーラビリティを妨げません。

ご意見をお待ちしております。

4

2 に答える 2

16

CouchDBはHTTPベースのAPIを使用するため、サーバー側のコード(node.js、PHPなど)をCouchAppと「組み合わせる」方法はいくつかあります。

オプションを3つのカテゴリに分類します。

  1. まず、2層アーキテクチャが現在のアーキテクチャです。CouchDBから提供されるブラウザ+CouchAppです。これは、ブラウザーとCouchDBが提供できるものだけを必要とするアプリに最適なソリューションですが、電子メールの送信、画像のサイズ変更、または必要のない別のデータベースからのデータの取得が必要になるとすぐに、別の層が必要になります。 HTTP API(MySQL、MongoDBなど)があります。
  2. 次に、3層アーキテクチャーです:ブラウザー+ Apache / PHP(または同様のスタック)+CouchDB。これは、より「従来の」オプション(つまり、LAMP)です。これは、CouchDBに徐々に移行する場合は問題ありませんが、長期的には、すべてを2番目のHTTPサーバー(おそらくプロキシとして)またはPHPなどのサーバー側スクリプト言語を介してルーティングする必要があるという面倒な作業になる可能性があります。
  3. 最後に、そして私のお気に入りは、2.5層アーキテクチャーです:ブラウザー+CouchDB+外部または_changesフィードベースの「アクション」。この場合、PHP(または同様のもの)はCouchDBの一種のサービスプロバイダーとして機能します。アクションは、PHPに特定のタイプのドキュメントとその変更(つまり、画像のアップロード、電子メールメッセージドキュメント)の_changesフィードを監視させるか、CouchDBをセットアップして_externalハンドラーを「ping」してドキュメントをさらに処理することができます。またはその添付ファイル。これは基本的に、couchdb-luceneが更新を監視し、更新が発生したときまたは定期的にアクションを実行することによって機能する方法です。

_changesフィードと_externalハンドラーの詳細については、以下をご覧ください。

その価値については、今週水曜日にPHPとCouchDBWebキャストでこれらの3つのオプションについて説明します。あなたの質問は、ウェブキャストの最後の議論への貴重な追加になるでしょう。

あなたのCouchAppがどうなるか、そしてあなたが上記の問題をどのように解決するかを知りたいです。

于 2010-11-14T05:22:18.157 に答える
1

BigBlueHatからのすばらしい回答ですが、追加できるオプションがもう1つあります。

クロスドメインの問題を克服することで、あらゆる種類のWebサーバーからページを提供できるようになり、ブラウザーがCouchDB(別のサーバー上にある可能性があります)と直接対話できるようになります。

ブラウザによって適用されるクロスドメイン制限は、回避するのはそれほど難しくありません。私が知っている2つの主な方法は、JSONPとCORSです。

JSONPは、各リクエストを「スクリプト」リクエストとして偽装します(スクリプトリクエストはクロスドメインルールから除外されるため)。GETでのみ機能し、POSTやPUTなどでは機能しません。あなたはjQueryでそれを行うことができます。

CORSは「クロスオリジンリソースシェアリング」であり、サーバー(この場合はcouchdb)に実装する必要がある単なる特別なHTTPヘッダーであり、ブラウザに問題がないことを通知します。別のドメイン。私はこれをテストしました、そしてそれは働きます、しかしセキュリティ問題があるかもしれません-私はよくわかりません。

だから...それが良い考えかどうかはわかりませんが、CouchDBを使用してクロスドメインの制限を(少なくとも部分的に)克服することは技術的に可能です。このタイプのセットアップを使用してシステムを構築した人はいますか?

于 2011-08-10T15:17:59.577 に答える