1

これまでの node.js プロジェクトでは、さまざまなコレクションをメモリ内に保持するために構築したクラス (cache.js) を使用していました。データ アクセス レイヤーは、ロジックからデータを抽象化し、後で永続性を簡単に追加できるようにするために使用されます。この dal.js は、すべての CRUD 操作に対して cache.js への同期呼び出しを行います。

今度は、この cache.js の代わりに MongoDB を DAL にフックしたいと思います。問題は、mongoDB + node.js の哲学は、DB をコールバックで非同期に呼び出すことです。

すべてのアプリ (DAL を使用するクラスを含む) を再設計する必要がありますか? 必要なすべての CRUD でコールバックを使用するようにビジネス ロジックを強制するのは、複雑すぎて間違っていますか? KISS を維持するためのベスト プラクティスは何ですか?

4

1 に答える 1

1

スケーラビリティ モデルによっては、メモリ内モデルを定期的に同期することを検討できます。そんな感じ:

var model = {
  x: 5
};

setInterval(function() {
  if (is_model_changed(model)) write_to_db(model); // <-- this can conflict with other changes
  model = read_from_db();
}, 5000);

この場合、データベースへの書き込み時の競合を可能な限り回避するために、おそらく何らかの形式のサーバー アフィニティ (シャード/ユーザーごと) が必要です。

于 2012-07-29T14:56:06.110 に答える