1

データベースは、ほとんどすべてのビジネスアプリケーションで、データとそのデータに対して実行されるトランザクションを格納するために必要です。トランザクションには通常、ミリ秒のオーダーの時間がかかります。同時に、トレーディングアプリケーションでは、まったく受け入れられないのは「レイテンシ」です。では、レイテンシーの上限を必要とするそのようなアプリケーションで行われるトレードオフは何ですか?

たとえば、取引が顧客によって行われた場合、データベースに保存されているいくつかのチェックに合格する必要があり、DBフェッチが必要です。次に、取引はOMS/ORSまたは取引所に渡される必要があります。また、各レイヤーで、ある種のトランザクションデータをデータベースに保存する必要があります。トランザクションの永続性と低遅延のバランスをどのように維持する必要がありますか?

4

2 に答える 2

2

2つのこと:

  • キャッシング:アプリケーションにルールをキャッシュするので、取引ごとにデータベースにアクセスする必要はありません。
  • スレッド化:データベース内のトランザクションデータを格納するコードを別のスレッドに配置します。このように、取引をすぐに取引所にルーティングし、それと並行してデータベース内のデータを安全にすることができます。
于 2011-09-02T09:35:02.530 に答える
0

現在、人々はメモリ内トランザクションシステムを使用しているため、データベースによって得られるネットワーク遅延を削減できます。

低遅延のために考慮できるいくつかの事柄があります

  • Javaで低レイテンシを実現するには、JavaでGCを制御する必要があります。たとえば、オブジェクトを事前に割り当てる(つまり、フライウェイトデザインパターンを使用する)、プリミティブオブジェクトを使用するなど、さまざまな方法があります。構造はプリミティブに基づいています。たとえば、システム全体の辞書を作成して新しいオブジェクトの作成を減らすためにオブジェクトインスタンスを再利用します。これは、stream / socket/dbからデータを読み取るときに非常に適したオプションです。

-競合を減らして、待機のないアルゴ(少し難しい)を使用し、フリーのアルゴをロックしてください。あなたはそのためのたくさんの例を見つけることができます

-インメモリコンピューティングを使用します。メモリは安価で、テラバイトのデータをメモリに保存できます。

-機械的な共感を使用する-lmaxディスラプター、優れたフレームワークを参照する

于 2012-10-10T13:26:15.033 に答える