問題タブ [storage]
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.
data-structures - サイズの異なる多数のオブジェクトをディスクに格納する
多数 (数十から数十万) のオブジェクトを格納するためのシステムを開発する必要があります。各オブジェクトは電子メールのようなものです。メインのテキスト本文と、サイズが制限されたいくつかの補助テキスト フィールドがあります。ボディのサイズは数バイトから数 KB です。
各アイテムには、それを識別する単一の一意の ID (おそらく GUID) があります。
ストアは、オブジェクトが追加されたときにのみ書き込まれます。よく読まれます。削除はまれです。データはほとんどすべて人間が読めるテキストであるため、簡単に圧縮できます。
I/O を発行し、メモリとキャッシュを管理できるシステムが理想的です。
インデックスをメモリに保持し、それを使用してインデックスをオブジェクトの単一 (および主) キーにマップします。キーを取得したら、ディスクまたはキャッシュからロードします。
データ管理システムはアプリケーションの一部である必要があります。OS サービスに依存したくありません。または個別にインストールされたパッケージ。ネイティブ (C++) が最適ですが、マネージ (C#) も問題ありません。
データベースは当然の選択だと思いますが、これはオブジェクトの検索とメモリへのロードを超高速にする必要があります。私はデータベース技術の経験がなく、一般的なリレーショナル システムではこの可変サイズのデータをすべて効率的に処理できないのではないかと心配しています。
(注、これは私の仕事とは何の関係もありません - これは個人的なプロジェクトです。)
あなたの経験では、従来のリレーショナル DB に代わる実行可能な代替手段は何ですか? または、DBはこれに適していますか?
search - オブジェクト トランザクションを格納および検索する最良の方法は何ですか?
まともなサイズのオブジェクト指向アプリケーションがあります。アプリ内のオブジェクトが変更されるたびに、オブジェクトの変更が DB に保存されます。しかし、これは理想的とは言えません。
現在、トランザクションはトランザクションと一連の transactionLI として保存されます。
transaction テーブルには、who、what、when、why、foreignKey、foreignTable のフィールドがあります。最初の 4 つは自明です。ForeignKey とforeignTable は、変更されたオブジェクトを特定するために使用されます。
TransactionLI には、timestamp、key、val、oldVal、および transactionID があります。これは基本的にキー/値/oldValue ストレージ システムです。
問題は、これら 2 つのテーブルがアプリケーション内のすべてのオブジェクトに使用されるため、かなり大きなテーブルになっていることです。それらを何かに使用するのは遅いです。インデックスは非常に役立ちます。
そのため、このようなことを行う別の方法を考えています。これまでに検討したこと: - これらのテーブルをタイムスタンプのようなものでシャーディングします。- 2 つのテーブルを非正規化して 1 つにマージします。- 上記の 2 つの組み合わせ。- 変更後に各オブジェクトをシリアル化し、subversion に格納するという行に沿って何かを行う。- おそらく他の何かですが、今は思いつきません。
全体的な問題は、トランザクション データを適切に格納および検索するための何らかのメカニズムが必要なことです。ええ、それをリレーショナル データベースに強制的にフィードすることはできますが、実際には、これはトランザクション データであり、それに応じて保存する必要があります。
他のみんなは何をしているの?
api - Microsoft SkyDrive には API がありますか?
Microsoft Skydrive がアカウントごとに 25 GB のストレージに引き上げられるという最近のニュースで、SkyDrive に API があるかどうか知っている人はいますか?
(もしそうなら、ドキュメントはどこにありますか?)
storage - ゲーム地形データベース モデル
私はウェブ用のゲームを開発しています。このゲームのマップは最小で 2000km × 2000km になります。あるレベルの粒度で標高と地形タイプをエンコードできるようにしたいと考えています。たとえば、100m X 100m です。
2000km x 2000km のマップの場合、この情報を 100m 2のバケットに格納すると、20000 x 20000 要素、つまりデータベース内の合計 4 億レコードになります。
この種の情報を保存する他の方法はありますか?
詳しくは
マップ自体が完全に表示されることはありません。ユニットはターン制でマップ上を移動し、プレイヤーはユニットの位置や地域の様子についてフィードバックを受けます。地形によって、速度と移動の禁止が決まります。
マップはゲームに使用され、必ずしもグラフィックや表示の目的で使用されるわけではないと言いたいのだと思います。
.net - データをフラット ファイルに保存するソフトウェア、一般的なエンコード/ファイル形式の手法とは
SQLサーバーを使用してデータを保存するか、xmlファイルを使用することで甘やかされてきました。
xml や CSV 以外のフラット ファイルにデータを格納するための一般的な手法は何ですか。
ファイルを開くと、データがすべてごちゃごちゃになっていることがよくあります。これは、正しくエンコードされていることを意味しますか?
どこかで読める一般的なテクニックはありますか?
storage - 軽量ストアメカニズム
MP3 を整理してタグ付けするための小さなユーティリティを作成しようとしています。
少量のデータを保存する最良の方法は何ですか。さらに重要なことは、クライアント/サーバー環境をインストールする必要のないデータベースが存在するかどうかです。ライブラリを含めるだけで問題ありませんか?
XMLを使えばいいのですが、ファイルサイズが大きくなって扱いづらくなるのが心配です。
ありがとう
編集: 言語を決めていません。プラットフォームとは無関係に決定したかったのです。どちらかを選択する必要があるとすれば、おそらく .NET、2 番目に Java、3 番目に C++ です。
申し訳ありませんが、これは Windows アプリ用です。
linux - 大量のディスク アクティビティが発生しているときに Linux GUI を「使用可能」にする方法
巨大なファイル ツリーをある場所から別の場所にコピーし始めたり、他のプロセスが大量のディスク アクティビティを開始したりすると、フォアグラウンド アプリ (GUI) の速度が大幅に低下します。たとえば、100k ファイルを含む 2GB のファイル ツリーを考えてみましょう。コンソールを開き、cp -r bigtree bigtree2 を実行します。次に、firefox に移動してブラウジングを開始します。Firefoxはほとんど使えません。Firefox のナイス レベルを非常に高い優先度 (-20) に設定しても、非常に遅く、大きな遅延が発生します。
数年前、Solaris ボックスで作業していたときのことを覚えていますが、システムは同様の状況ではるかに優れた動作をしました。
私の HD は PIO ではなく DMA を使用しています。SATAです。atime フラグではマウントされません。
.net - プログラマーの間で OID キー付きブロブ ストアの市場はありますか?
友人が非常に素晴らしいブロブ ストアを開発しました。私はそれを使用する必要があると思いますが、人々がそのようなものに市場があると考えるかどうか、またプログラマーがこの種の決定を下せるようになるかどうか疑問に思っています。デルタを使用したオンライン バックアップをサポートしており、私が知っているどの製品よりもはるかに高速です。厳密なテストを経て、いくつかの非常にニッチなアプリケーションで使用されています。バイナリ ファイル形式を使用している人なら誰でも、代わりにそれを使用したいと思うでしょう。C++ インターフェイスを備えており、.NET シリアライゼーションに適合しています。
SQL BLOB テーブルを水から完全に吹き飛ばします。
考え?
編集:次の理由により優れています:
- とても速いです。
- これは、完全な回復スキャンを備えたトランザクションであり、フラット ファイルよりもはるかに優れています。
storage - アプリケーションに使用するファイル形式とその理由は何ですか?
私が最も興味を持っているのは、データのどの部分も変更される可能性がある、大量のオブジェクト指向データの変更に対するインプロセス (シングル ユーザー) ソリューションです。このようなシステムには、一般的に次のような問題があります。
- 大きなファイルを最初から書き出すのは非効率的です
- xml が冗長すぎる
- SQL BLOB は適切に一致しません
それで、あなたはそれをどのようにしますか?
sql - 最高のパフォーマンスのデータベースストレージメカニズム
(本当に)高性能のインメモリデータベース/ストレージメカニズムを実装するためのアイデアが必要です。20,000以上のオブジェクトを保存する範囲で、各オブジェクトは5秒ごとに更新されます。 FOSSソリューションが欲しいのですが。
私の最良の選択肢は何ですか?あなたの経験は何ですか?
私は主にJavaで作業していますが、データストアのパフォーマンスが優れている必要があるため、データストアソリューションはJava中心である必要はありません。
また、これらのオブジェクトをクエリできるようにする必要があり、プログラムの起動時にすべてのオブジェクトを復元できるようにする必要があります。