問題タブ [in-memory]

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 投票する
6 に答える
5771 参照

algorithm - アルゴリズム: 膨大な数の非常にまばらなビット配列。使用するエンコーディング

私には特別なニーズがあり、最も重要な懸念事項は次のとおりです。

  • インメモリ
  • 非常に低いメモリフットプリント
  • 速度

これが私の「問題」です。メモリ内に、非常にまばらなビット配列を大量に格納する必要があります。これらのビットセットは「追加のみ」であり、主に交差に使用されます。巨大とは、200 000 ビット配列という意味です。

各ビットセットの範囲は [0...16 000 000] です。

取得した実際のデータを含む「のみ」10 673 ビット配列を使用して事前テストを実行したところ、次の結果が得られました。

関連する数値を見ると、明らかに圧縮されたビット配列を使用する必要がありますが、それは問題ではありません。ビット配列が「追加のみ」であることを考えると、扱いやすいままです。

オンになっているビット配列のビットは、グループ化されていますが、完全ではありません。そのため、同じ領域でいくつかのビットがオンになる傾向があります (ただし、通常は連続してオンになるわけではないため、オンになっているビットには RLE が適していません)。

私の質問は、どのような圧縮を使用するのですか?

最初のアプローチをここに置くべきか、それとも自分の質問への回答に置くべきかはわかりません。

基本的に、非常に愚かなエンコーディングを使用した「最悪のケース」のシナリオを想像しました。

  • 1 ビット: オンの場合、次の 5 ビットは「スキップ」を計算するために必要なビット数を決定します。オフの場合、最適化: 次の 5 ビットは、文字どおり (つまり、「オン」または「オフ」) に取りすぎるビット数を決定します。 '、スキップなし) [これは、他の表現よりも効率的であると判断された場合にのみ切り替えられるため、開始時には常に最適化されます (サイズに関して)]

  • 5 ビット: 次のビットがオンになる前にスキップできるビット数

  • x ビット: スキップ

例を次に示します。ビット配列には 3 ビット セットがあり、最初のビットは 3 098 137、2 番目のビットは 3 098 141、3 番目のビットは 3 098 143 です。

最初のビットは、ビットをスキップすることを示しています。次の 5 ビット (常に 5) は、スキップするビット数を伝えるために必要なビット数を示します。 22 ビットは、3 098 137 にスキップするように指示します。1 ビットオフは、ビットをスキップしないことを伝えます。次の 5 ビット (常に 5) は、伝えます。 「そのまま」読み取るビット数 6 ビット: オフ、オフ、オフ、オン、オフ、オン 3 098 141 および 3 098 143 がオンなどを意味します。

これらのビット配列の驚くべきスパース性を見ると、これは非常にサイズ効率が良いようです。

そのため、そのエンコーディングを使用して、サンプル データを取得し、「最悪の場合」のシナリオを計算しました (まだアルゴリズムを書いていないので、最初にここからいくつかの入力を取得したいと思います)。また、5 ビットが常に最大値 (24 ビット) に設定されますが、これはもちろん起こりません。

私は、「最悪の最悪」のケースが何であるかについて、非常に大まかな概算を得るためにそれを行いました.

とても嬉しい驚きでした:

データは実際のデータであり、すべてのデータが類似しているため、さらに悪いことに、200,000 ビットの配列を約 240 MB に格納できることがわかっています。これは問題ありません。

実際のエンコーディングはそれよりもはるかに少ないと確信していますが、まだ実際に書いていないので、(非常に簡単に)「最悪のケース」しか計算できないため、そのケースのみを示します。

これをよりサイズ効率的にする方法に関するヒント/アイデア(これらは非常にまばらなビット配列であり、数十万個あり、メモリ内にある必要があり、「追加のみ」になることを覚えておいてください) ?

「追加のみ」のケースについて

基本的に、私は1つの成長する「広がり」(範囲ですが、「広がり」は私が理解している実際の用語です)と、いくつかのビットセットを持つ多くのビット配列を持っています。範囲がたとえば 0 から 1 000 000 になると、すべてのビット配列は 0 から 1 000 000 になります。範囲が 1 000 001 まで大きくなると、すべてのビット配列も 1 ビットずつ大きくなります。ただし、これらのビット配列のほとんどは末尾に「0」が追加され、ビット配列の約 4 ~ 8 には末尾に「1」が追加されます。ただし、どのビット配列に 0 または 1 が追加されるかを事前に予測することはできません。

したがって、すべて同じサイズで、すべて非常にまばらで (ビットセットの < 0.5%)、範囲の拡大に伴ってすべて「成長」しているビット配列がたくさんあります (したがって、それらはすべて常に成長しています)。同じレートで)。


ジュディの配列は素晴らしいです。しかし、私は数年前にそれらについて読みましたが、そのことは「私の頭の上」にありました。Judy 配列は C のみの 20KLOC ライブラリであり、私はそれを再実装するつもりはありません。しかし、彼らは素晴らしいです。

したがって、これらすべてを比較的単純なままにしておきたいと思いますが、これは、非常にまばらなビット配列の特別な「追加のみ」のプロパティを見てそれほど大げさではありません。

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

r - Rでメモリ内ファイルを読み書きする方法はありますか?

R を使用して大きな DNA シーケンス ファイル (fastq ファイル、それぞれ数ギガバイト) を分析しようとしていますが、これらのファイルへの標準の R インターフェイス (ShortRead) はファイル全体を一度に読み取る必要があります。これはメモリに収まらないため、エラーが発生します。一度に数 (千) 行を読み取り、それらをメモリ内ファイルに詰め込み、ShortRead を使用してそのメモリ内ファイルから読み取る方法はありますか?

R 用の Perl の IO::Scalar のようなものを探しています。

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

windows - エンタープライズ向けのWindowsインメモリキャッシュ

Windowsのエンタープライズで使用するためのmemcachedアナログを知っていますか。商用のメモリ内キャッシュシステムはありますか?

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

java - Javaのメモリ内ファイル構造?

xsd / xmlドキュメントの解析、Javaクラスの構築とコンパイル、jarクラスとwarsへのパッケージ化、DBでの永続化、OSGiとしてのデプロイなど、リソースを使って多くのことをその場で行う必要があります。

私が使用しているライブラリ/APIのほとんどは、メモリ内でこれらすべての中間タスクを実行できますが、のみで動作する「特別な」ライブラリもありますjava.io.File。そして、私には何も残っていませんが、JavaEE環境では良くない実際の一時ファイルとディレクトリを使用しています。

ノードが拡張されているメモリ内ファイル構造のライブラリ/ソリューションが必要だとjava.io.File思います(私が見ているように)。既知/類似のライブラリへのリンクをドロップしてください。コメントは大歓迎です。

ありがとう!

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

java - 2D テーブル構造をメモリに格納するための適切なデータ構造は何でしょうか?

基になるデータベースから読み取っている 2D テーブル構造があり、それを格納するために使用する最適なインメモリ データ構造は何か疑問に思っています。どこで、さらに読み取り、操作などのためにアクセスできます。

0 投票する
1 に答える
820 参照

model - Jenaフレームワークを使用してオントロジーに基づいてメモリ内モデルをロードする方法は?

Jenaフレームワークを使用したオントロジーから、オントロジーで定義されたものとまったく同じセマンティクスを取得するモデルをロードする方法を考えています。 オントロジーモデル、クラスなどで作業する可能性を提供するJeanオントロジーAPIについて知りました。

次に、次の例を示します。

することが可能です:

ただし、次のようにOntClassまたはResourceを通過せずに、DigitalCameraクラス/インスタンスを直接取得するために検索しています。

次に、そのカメラの特定のプロパティを検索するときに、そのカメラに直接アクセスして、DSLのようなデータのセマンティクスに焦点を合わせ続けることができます。イエナは、どんなオントロジーを表すこの種の専用の(生成された?)フレームワークを提案しますか?

ありがとう

0 投票する
2 に答える
528 参照

sql - クラウド データベースへの移行

私の組織 (サービスとしてのソフトウェア組織) が、既存のディスクベースの DB の一部をインメモリのクラウドベースの DB モデル (データセンターでホストされている) に移行する可能性を評価しています。

最もスムーズな方法は、動的 SQL を実行できるクラウド DB を見つけることですが、クラウド DB は基本的にオブジェクト モデル ベース (つまり SQL なし) であることがわかりました。

RDBMS の一部をクラウドベースの DB に移行した経験のある人はいますか? もしそうなら、あなたはどのような道を歩みましたか?

0 投票する
2 に答える
632 参照

.net - メモリ内の WCF / アセンブリ バインド

WCF を使用してメモリ内でアセンブリを呼び出すオプションはありますか?
現在、basicHttp バインディングを介して複数のサービスを異なるサーバーにデプロイしています。単一のマシン インストールでは、サービスへのメモリ内呼び出しを実行するだけで十分です。サービスをローカルでホストする必要なく (名前付きパイプではなく)、インプロセスで使用できるバインディングはありますか?

エンドポイントの場所は、たとえば次のようになります。

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

sql - リレーショナル DB インメモリ?

Redis について単純な質問があります。そのパフォーマンスの鍵がメモリ内にあることである場合、通常の SQL データベースでそれを行うことはできませんか?

0 投票する
1 に答える
6675 参照

derby - メモリでApacheDerbyを使用する場合の警告

メモリ内でApacheDerbyを使用する単体テストがいくつかあります。私の接続URLは次のとおりです。jdbc:derby:memory:srf.derby;create=true

毎回、としてマークされたメソッド@Transactionalが終了すると、ダービーの警告が表示されることを発見しました

それはなぜです?私が間違っているのは何ですか?

ありがとうございました