1

ランダムアクセスとは、ランダムレコードを選択することを意味するものではありません。ランダムアクセスは、配列から値をフェッチするのと同じ方法
で、すべてのレコードを同じ時間でフェッチする機能です。 ウィキペディアから:http://en.wikipedia.org/wiki/Random_access

私の意図は、メモリには大きすぎる文字列の非常に大きな配列を格納することです。
しかし、それでもアレイへの利点またはランダムアクセスがあります。

私は通常MySQLを使用していますが、Bツリーとハッシュのインデックスタイプしかないようです。

そのようなことを実行できない理由はわかりません。
インデックスは配列のようになり、ゼロから始まり、1ずつ増加します。

文字列に従ってインデックスを取得するのではなく、単にそのインデックスによって文字列をフェッチしたい。目標は、パフォーマンスを向上させることです。また、文字列にアクセスする順序を制御することもできません。これは、クライアントから常にインデックスを受け取り、そのインデックスの文字列を返すリモートDBサーバーになります。

これに対する解決策はありますか?

psこれは、メモリに収まらないランダムアクセスコンテナの複製だとは思いませんか?
その質問では、彼はランダムアクセス以外の他の要求を持っているからです

4

2 に答える 2

3

あなたの定義を考えると、データを保存するためにSSDを使用するだけであれば、ランダムアクセスと呼ばれるものが可能になります(つまり、データセット全体で均一なアクセス速度)。シーケンシャルアクセスがランダムアクセスよりも安価であるという事実は、ディスクへのシーケンシャルアクセスがランダムアクセスよりもはるかに高速であるという事実に由来します(そして、どのデータベースもこれを補うのが最善です)。

とはいえ、キャッシュNUMAによりシーケンシャルアクセスが高速になるため、RAMアクセスでさえ均一ではありません。だから、均一なアクセスはとにかく幻想であり、それは疑問を投げかけます、なぜあなたはそもそもそれを持っていることをそれほど主張しているのですか?つまり、ランダムアクセスが遅いとうまくいかないと思うことですが、それでもユースケースには十分な速度である可能性があります。

于 2011-08-22T16:08:01.813 に答える
1

あなたは一定時間について話しているが、あなたはユニークな増分主キーについて言及している。

このようなキーにギャップがない場合を除いて、オフセットとして使用することはできません。そのため、実際のオフセットを検索するには、何らかの構造が必要です。

オフセットでレコードを検索することは、通常、特に便利ではありません。通常、よりわかりやすい方法でレコードを検索する必要があるためです。これには、常にインデックスが含まれます。Bツリーインデックスの検索は最悪の場合のO(log n)であり、これはかなり良いことです。

文字列の配列があると仮定すると、それを固定長レコードのディスクファイルに保存し、ファイルシステムを使用して目的のオフセットを探します。

次に、データベースルックアップに対してベンチマークを行います。

于 2011-08-22T16:33:00.637 に答える