1

私は現在、ユーザー トランザクションをログに記録するためのさまざまなオプションについて少し調査しています。現在、トランザクションが XML メッセージの形式で送信される設計になっています。SQL をデータベースとして使用し、各 XML メッセージ/トランザクションは 4 つのフィールド (GUID を使用する主キー、トランザクションの種類、トランザクションが発生したときのタイムスタンプ、および XML 全体を含むフィールド) を持つテーブルに格納されます。トランザクション中にエラーが発生した場合、元の XML メッセージは、トランザクションのタイプとエラーが発生したタイミングに基づいて取得され、XML メッセージで送信されたデータを評価できます。

ただし、この設計を使用すると、データベースのクエリに非常に長い時間がかかることがわかります。毎日ログに記録されるトランザクションの数が原因であるかどうかはわかりません (数十万のトランザクションになる可能性があります)。したがって、私は自分の状況でより効率的な他の種類のデータベース アプリケーションがあるかどうかを調査してきました。選択肢はたくさんありますが、どこから始めればよいかわかりませんでした。mongodb についてはかなりの数の議論がありましたが、それが私がやろうとしていることに当てはまるかどうかはわかりません。私が調査できるデータベース オプションの種類について、どなたかご提案いただけますか?

4

2 に答える 2

0

このdbスキームを組み込みます:

id, parentid, text
1, 0, 'test'
2, 0, 'test2'
3, 1, 'test child'
4, 3, 'test child child'

次に、ツリーをxmlとして再帰的に再構築します

于 2013-06-11T02:19:33.833 に答える
0

xml を格納する BLOB/TEXT フィールドは可変長であるため、MySQL インスタンスは動的な行形式を使用している可能性があります。

トランザクション メタ データ テーブル内の PK への外部キー リンクを含む XML データを保持する別の関連テーブルを作成します。こうすることで、BLOB/TEXT に格納された XML データがクエリに影響を与えることなく、クエリを実行してメタ データのレコードを検索できます。結合を利用する別のクエリを介して、必要な場合にのみ XML データにアクセスします。

見る:

http://dev.mysql.com/doc/refman/5.5/en/optimize-blob.html

SOの詳細はこちら:

TEXT/BLOB を同じテーブルに格納するかどうか

于 2013-06-11T02:24:41.907 に答える