0

次数 6 の多項式 ( など) が大量にありx^6 + 2*x^5 + x^4 + x^3 + x^2 + 1、いくつかの追加情報と共にテキスト ファイルに保存されています。合計金額が を超えてい400 000 000ます。それらはすべて整数係数を持っています。

それらを効率的に保存し、ストア内の多項式を高速検索したいと考えています。複数のクライアント機能は必要ありません。データを保存し、同じマシンで操作したいと考えています。

私には、古典的な DB タスクが好きなようです。だから今、私はこれのためのエンジンとしていくつかのDBを考えています。

  1. 私の場合、どのDBが最も効率的な選択ですか? sqliteは十分に効率的ですか?
  2. 多項式を格納するための最も効率的な方法があるとしたら? 列を持つテーブル、a0, a1, a2 ... a6, add_infoまたは文字列のシリアル化のようなシリアル化"5,3,5,6,1,2,3"、または一部の DB に配列データ型がある可能性がありますか? 完全一致検索だけでなく、こんなことget all polynomials with a6 = 3get all uniq a5 for polynomials with a6 = 3.
4

1 に答える 1

3

おそらく、4 億行の SQLite よりも強力なデータベースを使用したいと思うでしょう。MySQL、Postgres、SQL Server、および Oracle (たとえば) には、より適切に機能する無料バージョンがあります。Stack Overflow は特定の製品を推奨するサイトではありません。SQLite に関するあなたの特定の質問に応えて、これを取り上げます。そして、この目的には SQLite が適しているかもしれません。

基本的なデータ構造は、係数ごとに 1 つずつ、7 列の整数を含む多項式 ID になります。

クエリの例に基づいて、各係数に個別のインデックスが必要になります。例えば:

create index idx_polynomials on polynomials(a6);

値をシリアライズしたくないでしょう。これにより、このデータをリレーショナル データベースに格納するメリットの多くが失われ、インデックスを使用できなくなります。

于 2014-07-30T12:14:26.717 に答える