問題タブ [large-data]
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.
java - 結果クエリをメモリにロードする方法はありますか?
巨大なデータベース (21 億行) があり、統計結果を抽出するために計算を実行する必要があります。私の理解では、このデータベースで直接計算を実行することが賢明でないことは明らかです。
私が今やろうとしているのは、テーブルの一部をメモリにロードすることです (100 万行と言います)。行ごとに反復せずに ResultSet のデータのチャンク全体をメモリにロードする方法がわかりません。
何か案が?
database-design - データベース設計 - 大規模フィールド
たとえば、ブログに記事のリストがあるとします。各記事には 1 つの画像があり、各画像には 1 つのサムネイルがあります。
記事のリストを表示すると、それぞれがサムネイルで表示されます。単一の記事を表示するときは、フルサイズの画像で表示されます。
これは、記事ごとに 3 つの大きな (サイズ不明の) データ項目 (画像、サムネイル、テキスト) があることを意味します。
これらの設計の長所と短所は何ですか:
- 記事テーブルにはサムネイル列と画像列が含まれます
- 記事テーブルには、サムネイル列、別のテーブルに保存された画像が含まれます
- サムネイルと画像を 1 つの個別のテーブルに保存
- 独自の個別のテーブルに保存されたサムネイルと画像
- サイトには、画像とサムネイルが保存されているフォルダーへの書き込みアクセス権があり、データベースには URL/ファイル名が含まれています
(私が考慮していないものはありますか?)
それが違いを生むのであれば、私はそうすべきではないと思いますが、サイトは Postgres または MySql を使用して Ruby/Rails で作成されます。
php - 高性能多層タグフィルタリング
アーティスト、アルバム、トラックの大規模なデータベースがあります。これらの各アイテムには、接着剤テーブル(track_attributes、album_attributes、artist_attributes)を介して割り当てられた1つ以上のタグがあります。各アイテムタイプに適用できるタグは数千(または10万)あります。
私は2つのタスクを実行しようとしていますが、クエリを適切に実行するのに非常に苦労しています。
タスク1)特定のタグ(提供されている場合)のあるアルバムで、特定のタグ(提供されている場合)を持つアーティストによって、特定のタグ(提供されている場合)を持つすべてのトラックを取得します。タグのセットは存在しない可能性があります(つまり、トラックタグのみがアクティブで、アーティストまたはアルバムタグはありません)
バリエーション:結果は、トラックではなく、アーティストまたはアルバムごとに表示することもできます
タスク2)前のフィルターの結果に適用されるタグのリストと、それぞれにタグが付けられているトラックの数を取得します。
私が求めているのは、アプローチの一般的なガイダンスです。一時テーブル、内部結合、IN()を試しましたが、これまでのすべての努力の結果、応答が遅くなりました。私が求めている結果の良い例はここで見ることができます:http ://www.yachtworld.com/core/listing/advancedSearch.jsp、タグの層が1つしかないことを除いて、私は3つを扱っています。
テーブル構造:
編集私はPHPを使用していますが、スクリプトで並べ替えやその他のhijinxを実行することに反対していません。私の一番の関心事は、戻りの速度です。
python - Python: list.sort(cmp=myfnc) を使用したメモリ効率の良いリスト
このコードを改善する最善の方法は何ですか:
python のリストは numpy 配列に比べて多くのメモリを消費します (6800MB 対 700MB) が、nympy.array には cmp 引数を持つソート機能がありません。
cmp 関数を使用してメモリ使用量を改善したり、numpy の配列をソートしたりする他の方法はありますか?
更新:私の現在の解決策は、整数の巨大な配列をソートし、ソート後にPythonに返すC関数(SWIGと共有)です。
しかし、Python を使用して巨大なデータセットのメモリ効率の良い並べ替えを実装する方法があることを願っています。何か案は?
c# - Parallel.ForEachは、大きなオブジェクトで列挙可能なものを操作する場合、「メモリ不足」例外を引き起こす可能性があります
画像がデータベースに保存されているデータベースを、ハードドライブ上のファイルを指すデータベースのレコードに移行しようとしています。このメソッドを使用してデータをクエリするParallel.ForEach
プロセスを高速化するために使用しようとしていました。
しかし、OutOfMemory
例外が発生していることに気づきました。列挙型のバッチをクエリして、クエリの間隔を空けるためのオーバーヘッドのコストを軽減することを知ってParallel.ForEach
います(したがって、クエリの間隔を空けるのではなく、一度に一連のクエリを実行すると、ソースの次のレコードがメモリにキャッシュされる可能性が高くなりますアウト)。この問題は、返されるレコードの1つが1〜4 Mbバイトの配列であり、キャッシュによってアドレス空間全体が使い果たされていることが原因です(ターゲットプラットフォームは32ビットであるため、プログラムはx86モードで実行する必要があります)マシーン)
キャッシュを無効にする方法や、TPLのサイズを小さくする方法はありますか?
これは、問題を表示するためのサンプルプログラムです。これは、x86モードでコンパイルして、時間がかかるか、マシンで発生していない場合に問題を表示する必要があります。アレイのサイズが大きくなります(マシン1 << 20
で約30秒かかり、4 << 20
ほぼ瞬時に発生しました)
hibernate - Hibernate ストアド プロシージャの呼び出しが OutOfMemory につながる
Hibernate の名前付きクエリを使用して、非常に大きなデータセット (200 万行以上) を返すストアド プロシージャを実行しています。DB は Oracle 11g です。
例えば:
Query query = session.getNamedQuery(procName);
hibernate のドキュメントからわかるように、 http: //docs.jboss.org/hibernate/core/3.3/reference/en/html/querysql.html に記載されているように setFirstResult/setMaxResult を使用することはできません。
100,000 行のような小さなデータセットでは、すべて問題ありません。ただし、1,000,000 でテストするとすぐに OutOfMemory エラーが発生します。
query オブジェクトから、listIterator を取得します。データは 1 回だけフェッチされたと仮定し、listiterator ( query.list().listIterator()
)を反復処理します。
第 2 レベルのキャッシュが構成されていません。これらの設定は、Oracle ストアド プロシージャを扱うときに役立ちますか。
query.setCacheMode(org.hibernate.CacheMode.IGNORE);
query.setFetchSize(1000);
query.scroll(org.hibernate.ScrollMode.FORWARD_ONLY);
基本的に、Hibernate でストアド プロシージャを使用して大規模なデータセットの取得を管理するにはどうすればよいですか。
百万の感謝
grails - データベースのスライスを使用せずにビューに大きなリストを表示する方法は?
複数のテーブルからの複数の反復と計算によって大きなマップを生成するサービスがあります。私の問題は、データが複数のテーブルから取得され、データに対してさまざまな変更が行われるため、ページネーション オフセットを使用してデータをスライスできないことです。これを画面に表示するには; 10 ~ 20,000 レコードのマップをビューに送信する必要がありますが、この大規模なデータセットでは問題があります。現時点ではページネーションを行っていますが、これは非常に遅く非効率的です。私が考えたのは、テーブルにダンプして毎回クエリを実行することですが、同時ユーザーに対処する必要があります。
私の質問は、データベースのスライス (オフセット、最大) を使用できない場合に、このリストを表示するための最良の方法は何ですか?
私はgrails 1.0.3データテーブルとjqueryを使用しています
php - ループをリファクタリングしますか?
200,000を超えるユーザーデータセットをループして30,000の製品をフィルタリングしたいのですが、このネストされた大きなループを最適化して最高のパフォーマンスを得るにはどうすればよいですか?
更新:どうもありがとう。はい、データはmysqlにあります。以下は、主な構造体です。
1つのSQLを使用してすべてをフェッチする方法がわかりません。
php - INSERT IGNORE または INSERT WHERE NOT IN
私は 900 万行のテーブルを持っていますが、その膨大なサイズのために、このすべてのデータを処理するのに苦労しています。
私がやりたいことは、データを上書きせずに IMPORT a CSV をテーブルに追加することです。
このようなことをする前に。INSERT if not in(select email from tblName where source = "number" and email != "email") INTO (email...) VALUES ("email"...)
しかし、またサーバーがクラッシュするのではないかと心配しています。10,000 の行をテーブルに挿入できるようにしたいのですが、それが source = "number" のテーブルにない場合に限ります。
それ以外の場合は、メール列で一意に使用されます。
要するに、2 つのことをチェックして、テーブルに重複を導入することなく、できるだけ早く INSERT を実行したいと考えています。email != "email" AND source != "number" then insert into table の場合、それ以外の場合は何もしません。また、エラーレポートも必要ありません。
私の言葉遣いが悪く、質問が少しばかげて申し訳ありません。
バックアップをダウンロードして、問題が発生した場合はアップロードして、データでテストすることができなかったことに苦労しています。私は大規模なデータセットが嫌いです:)
お時間をいただきありがとうございました -BigThings
java - java: 非常に大きな木?
目的は、非常に大きな木を構築することです。非常に大きいとは、数ギガバイトに収まる数億のノードを意味します。
問題は、一般的なデータ構造のオーバーヘッドが大きすぎることです。「ノード」オブジェクトと子「マップ」を持つ余裕はありません。非常にコンパクトな方法でメモリに直接エンコードする必要があります。
したがって、内部でオブジェクトを使用せずに、キーと値として整数を持つツリーのメモリ効率の良い実装が存在するかどうか疑問に思っていました。ハッシュ スペース = エントリあたり平均 15 バイト) これにより、外部マッピング int<->keys および int<->values を使用してツリーを検索できます。
誰?
PS: 内部でオブジェクトを使用すると、少なくとも 5 倍のスペースが使用されます: 8 つの参照 + 4 つの余分なハッシュ スペース + 16 のオブジェクト ヘッダー + 8 つのキー ref + 8 つの値の参照 + 8 つの親の参照 + 8 つの子の参照 + (16 + x) for children map obj = エントリあたりほぼ 76+x バイト。(たとえば、デフォルトの実装では、エントリごとに約 100 バイトが必要でした)