問題タブ [large-data-volumes]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
5 に答える
4309 参照

java - データの大きなリストを処理する方法

たとえば、メモリ制限を超える大量のデータ読み取る必要がある時間の20%がアプリケーションの一部です。メモリ制限を増やすことはできますが、ほとんどの場合必要ない場合は高い割り当てが必要になるため、そうすることを躊躇します。

このようなピーク負荷に達したときに、カスタマイズされたjava.util.List実装を使用してディスクにスプールすることを検討していますが、より軽い状況ではメモリに残ります。

データはコレクションに一度ロードされ、その後繰り返されて処理され、その後破棄されます。コレクションに追加されたら、並べ替える必要はありません。

誰かがそのようなアプローチに関して賛否両論を持っていますか?

このようなリストの実装を提供するオープンソース製品はありますか?

ありがとう!

更新:

  • 生意気ではありませんが、「巨大な」とは、同じハードウェア上の他のプロセスに干渉することなく、割り当てたいメモリの量を超えることを意味します。他にどのような詳細が必要ですか?
  • このアプリケーションは、基本的に、複数のデータベーステーブルからデータをロードし、その上で広範なビジネスロジックを実行するバッチプロセッサです。集計操作は実行されるロジックの一部であるため、リスト内のすべてのデータが必要です。
  • 私はちょうどこの投稿に出くわしました。これは非常に良いオプションを提供します:Javaで同等のSTXXL
0 投票する
5 に答える
4619 参照

mysql - 指定されたリストの行番号を除くすべての行を削除します

基本的にここでやりたいことは次のとおりです。アカウント テーブルがあり、acct_id: (3, 24, 515, 6326, 17) のリストがあります。テーブルに約 100,000 個のアカウントがあると仮定すると、最も効果的な方法は何ですか指定されたリストの account_id を持つ行以外のすべての行を削除しますか?

私は次のようなものを思いつきました:

このクエリは再帰的か何かで遅いと聞きました。私が持っている行の数を考慮してください。それは非常に遅いでしょう。これを行うためのより良い方法は何ですか?

0 投票する
10 に答える
2140 参照

python - Pythonでパターンの最初の出現を1GB以上のデータ文字列で検索する最速の方法

次のようなものと同等であると想定できる任意のデータの 1 ギガバイトの文字列があります。

この文字列 を検索して1_gb_string、固定幅の 1 キロバイト パターンを無限に検索します1_kb_pattern。検索するたびにパターンが異なります。したがって、キャッシングの機会は明らかではありません。同じ 1 ギガバイトの文字列が何度も検索されます。何が起こっているかを説明する簡単なジェネレーターを次に示します。

パターンの最初のオカレンスのみを見つける必要があることに注意してください。その後、他の主要な処理は実行されません。

1GB 以上のデータ文字列に対して 1KB のパターンを照合するために、python の bultin find よりも高速に使用できるものは何ですか?

(文字列を分割して並行して検索する方法については既に認識しているため、その基本的な最適化は無視してかまいません。)

更新: メモリ要件を 16 GB に制限してください。

0 投票する
3 に答える
1515 参照

sql-server - インデックス付きビューに対して大規模な更新を行う

3つの大きなテーブルにまたがるインデックス付きビューがあります。これらのテーブルの2つ(AとB)は、ユーザートランザクションで常に更新されており、もう1つのテーブル(C)には、週に1回更新する必要のあるデータ製品情報が含まれています。この製品テーブルには、600万を超えるレコードが含まれています。

コアビジネスプロセスでは、これら3つのテーブル全体でこのビューが必要ですが、残念ながら、この側面を変更することはできません。負荷がかかった状態でテストして、最も効率的な構成になっていることを確認するために、SQLサーバーMVPを導入しました。ビューで使用される製品テーブルには1つの列があり、毎週更新する必要があります。

現在発生している問題は、テーブルAおよびBに対するトランザクションの量が増加しているため、テーブルCの更新によってデッドロックが発生していることです。

私はいくつかの異なる方法を試しましたが、役に立ちませんでした。1)テーブルCが「WITH(NOLOCK)」というダーティな読み取りになるようにビューを変更できることを望んでいましたが、インデックスビューでは機能が利用できないようです。

2)表Cの新しい列を更新し、プロセスが完了したときに名前を変更することを考えましたが、ビューの依存関係のためにそれを行うことはできません。

3)また、この値を一時的な製品テーブルに書き込み、ビューに対してALTERステートメントを実行して、新しいテーブルを指すようにするというアイデアも楽しみました。ただし、これを行うと、ビューのインデックスが削除され、再作成にかなりの時間がかかりました。

4)毎週の更新を小さなチャンク(一度に100レコード程度)で実行しようとしましたが、それでもデッドロックが発生します。

質問:

a)SQL Server 2005を使用しています。SQLServer2008には、インデックス付きのビューを備えた新しい機能があり、役に立ちますか?インデックス付きビューを使用してダーティリードを実行する方法はありますか?

b)新しいテーブルを指すように既存のビューを変更するためのより良いアプローチ?

ありがとう!

0 投票する
3 に答える
4222 参照

sql-server - 多数の画像を格納するためのSQLServerテーブル構造

SQL Server 2008に大量の画像データを保存するためのベストプラクティスは何ですか?約5ギガのストレージスペースを使用して、約50,000枚の画像を保存する予定です。現在、列を持つ単一のテーブルを使用してこれを行っています。

予想総容量の約10%でインサートに時間がかかっているようですので気になります。典型的な画像は約20k〜30kです。このデータを保存するためのより良い論理構造はありますか?または、データの負荷に対応するために、クラスタリングまたはその他のITソリューションを調べる必要がありますか?

0 投票する
5 に答える
1312 参照

python - Python での数値データの固定幅形式ファイルへの高速変換

数値データのみを保持するレコードをフォーマット文字列で固定に変換し、Python でファイルに書き込む最速の方法は何ですか? たとえば、が、、 、、 のrecord属性を持つオブジェクトで構成される巨大なリストであり、頻繁にそれらを外部ファイルにフラッシュする必要があるとします。フラッシュは、次のスニペットで実行できます。idxywt

ただし、私のコードは外部ファイルの生成に多くの時間を費やしており、フラッシュ間で行うべきことを行う時間が少なすぎます。

元の質問を修正します。

複数の「プロデューサー」システムから情報を取得してグローバル レコード セットを追跡し、レコード セットへの変更をリアルタイムまたはほぼリアルタイムで「コンシューマー」システムに中継するサーバー ソフトウェアを作成しているときに、この問題に遭遇しました。前処理された形で。コンシューマ システムの多くは Matlab アプリケーションです。

これまでに受け取ったいくつかの提案を以下にリストします(感謝します)。いくつかのコメントがあります。

  • データセット全体ではなく、変更のみをダンプします:私は実際にこれを既に行っています。結果の変更セットは依然として巨大です。
  • バイナリ (または他のより効率的な) ファイル形式を使用します。Matlab が合理的に効率的に読み取ることができるものにかなり制約があり、それに加えて、形式はプラットフォームに依存しない必要があります。
  • データベースを使用する:私は実際、特に Matlab 側では遅すぎて扱いにくいと見なされている現在のデータベース ソリューションをバイパスしようとしています。
  • タスクを個別のプロセスに分割:現時点では、ダンプ コードは独自のスレッドで実行されています。ただし、GIL のため、同じコアを消費しています。完全に別のプロセスに移動できると思います。
0 投票する
4 に答える
3268 参照

sql-server-2005 - 大量のデータに対してカウント(*)を選択します

レポートに対してこれを実行したいのですが、テーブルに20,000,000のレコードがあり、アプリケーションでタイムアウトが発生します。

私の知る限り、COUNT(*)は全表スキャンを引き起こし、クエリに時間がかかりすぎます。MSSQL 2005を使用している場合、何か助けはありますか?

編集:

プロジェクトリーダーは、クエリは1日だけで役立つと言っていますか?

0 投票する
4 に答える
306 参照

sql-server-2005 - 30,000,000 レジスタをフィルタリングするための SQL Server 2005 の適切なインデックス

トランザクション テーブルのストアド プロシージャに問題があります。ユーザーは、複数の値でトランザクションを検索するための Web フォームを持っています。

プロセスに時間がかかりすぎて、適切なインデックスを設定する方法がわかりません。

ここに私のストアドプロシージャがあります:

0 投票する
6 に答える
1668 参照

java - 1 つの大きなファイルから読み取り、Java で多数 (数十、数百、または数千) のファイルに書き込みますか?

メッセージの種類ごとに約 6,000 個のファイルに解析したい小さなメッセージの大きなファイル (4 ~ 5 GB 圧縮) があります。メッセージは小さいです。タイプに応じて、5 ~ 50 バイトの範囲です。

各メッセージは、固定サイズのタイプ フィールド (6 バイトのキー) で始まります。タイプ「000001」のメッセージを読み取った場合、そのペイロードを 000001.dat などに追加して書き込みます。入力ファイルにはメッセージが混在しています。各出力ファイルに特定のタイプのメッセージのみが含まれる N 個の同種の出力ファイルが必要です。

これらのメッセージを非常に多くの個々のファイルに書き込む効率的で高速な方法は何ですか? できるだけ多くのメモリと処理能力を使用して、できるだけ速く処理したいと考えています。圧縮ファイルまたは非圧縮ファイルをディスクに書き込むことができます。

メッセージタイプのキーと出力ストリームの値を持つハッシュマップを使用することを考えていますが、もっと良い方法があると確信しています。

ありがとう!

0 投票する
4 に答える
5999 参照

javascript - 利用可能なメモリを見つけるJavaScript

すぐに明確にしましょう: これはメモリ リークに関する問題ではありません! ユーザーがデータを入力できるページと、このデータを処理して結果を生成する JavaScript があります。JavaScript は、次のような DIV で増分出力を生成します。

特定の状況下では、計算によって非常に多くのデータが生成されるため、IE8 は次のメッセージで失敗します。

あまりにも多くのデータを処理するときに十分なストレージがありません

問題は、どのくらいのデータが多すぎるかを判断する方法はありますか?

私が言ったように、解決すべきバグはありません。計算で大量の html 要素を作成する必要があるため、これは正真正銘のメモリ不足です。

私の考えは、計算を実行する前に関数を実行して、ブラウザが成功するかどうかを判断することです。しかし、そのためには、一般的な方法で、ブラウザーで使用できるメモリを見つける必要があると思います。

どんな提案でも大歓迎です。