データベース サーバーに完全なデータベースをキャッシュするのに十分な RAM を搭載するのが一般的になっていると思いました。数年前に大流行したメモリ データベースのスペシャリスト ( TimesTenなど、ウィキペディアのページも参照) が使用されていないのはなぜですか。もっと?
時が経つにつれて、ディスクベースのデータベースの使用が減少しているように見えます。たとえば、ほとんどのアプリケーションは現在、従来の合理的なデータベース上に構築されています。多くのサーバーで RAM が空きに近づいているため、逆の結果になると予想していました。
stack-overflow-architecture を読んだところ、ページに次のように書かれているので、これを尋ねています
Stack Overflow のデータベースはほぼ完全に RAM 内にあり、結合の正確なコストは依然として高すぎるため、これは重要です。
しかし、通常の btree の代わりに「ポインタ」と「コレクション」が使用されていれば、これは問題にならないと思います。Btree は、ディスク アクセス速度の制限を回避するのに非常に巧妙です。たとえば、ディスク使用量を減らすために CPU 使用率を交換します。しかし、今ではマッチラムがあります。
ただし、独自に行うように、データベースはまだ必要です
- ロック
- デッドロック検出
- トランザクション ログ
- 回復
- 等
非常に難しいです。
@S.Lott、インデックスの選択、結合の回避、データベースのパフォーマンスの問題の調査に非常に長い時間を費やしていることを考えると。もっと良い方法があるはずです。数年前、「メモリ内データベース」の方が優れていると言われました。だから、私がそのようなものを使う前に、なぜ他の人がそれらをもっと使わないのか知りたい.
(TimesTen は価格が高く ( $41,500.00/Processor )、Oracle の営業担当者と話すのは好きではないので、自分で TimesTen を使用することはほとんどありません。コードを書くことに時間を費やしています。)
以下も参照してください。
アップデート:
私はずっと前にこの質問をしました。最近の Microsoft SQL Serverには、SQL Server エンジンに統合されたメモリ最適化データベース エンジンである「インメモリ OLTP 」があります。安くはありませんが、一部のワークロードでは非常に高速なようです。