問題タブ [lmdb]

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

multithreading - LMDB では、複数のスレッドが同じデータベースに同時にアクセスできますか?

もちろん、マルチスレッドになるWebアプリケーションでLMDBを使用することを検討しています。

mdb_dbi_open に関する Symas のドキュメントには、「この関数は、複数の同時トランザクションから呼び出すことはできません。この関数を使用するトランザクションは、他のトランザクションがこの関数を使用する前に、(コミットまたは中止のいずれかで) 終了する必要があります」と記載されています。

これは、複数のスレッドが特定のデータベースに同時にアクセス (書き込み) できないことを暗示しているようです。

しかし、概要には、「書き込みは完全にシリアル化されています。一度にアクティブにできる書き込みトランザクションは 1 つだけです。これにより、ライターがデッドロックしないことが保証されます。」これは、私がそれについて心配する必要がないことを暗示しているようです。

私の質問は、書き込みトランザクションをシリアル化する必要がありますか、それとも LMDB が処理してくれるのでしょうか?

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

python - 非分散 db を分散 db にするための手順 [特に lmdb について話す]

私は lmdb を扱っていますが、lmdb は非常に高速です。しかし、問題の 1 つは、lmdb が配布されていないことです。メンテナンスが必要になるたびに、lmdb を停止する必要があり、サイトは数時間使用できなくなります。lmdb を分散型にすること、複製機能を実装することについて研究しています。これまでのところ、私がそれに最も近いのは、netflix によるダイノマイトコード ベースです。
現在、redis と memcache に適用できるという問題がありますが、ジェネリックと表示されているため、lmdb にも使用できます。py -lmdbバインディングを使用して python で lmdb を処理しています。

コードはPythonバインディングでも記述しなければならないため、Pythonの世界でlmdbの観点からアプローチする方法がわかりません。

どんな助けでも大歓迎です。

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

neural-network - 1 つのクラス/ラベルを持つ Caffe convert_imageset

caffe に学習させたい機能が含まれている画像と含まれていない画像から lmdb データセットを作成したいと考えています。
私の質問は、convert_imageset に転送されたテキスト入力ファイルで、機能を含まない画像にどのようにラベルを付ける必要があるかということです。
私はフォーマットが

しかし、機能のない画像にどのラベルを割り当てればよいでしょうか?
たとえば、img1.jpg には機能が含まれていますが、img2.jpg と img3.jpg には含まれていません。テキストファイルは次のようになります-

ありがとう!

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

c# - C++ のイベントを C# で待機 - タスクまたは待機ハンドルとして

私は主に .NET でプログラミングしており、Tasks、ResetEvents などの非同期/同時実行プリミティブが大好きです。今日、初めて C++ プログラムに意味のある変更を加え、ビルド プロセス全体がどのように機能するかを理解しました ( LigthningDB.NET プロジェクトを更新しました)。 0.9.14 に)。しかし、私はまだ C++ の知識が不足しています。

LMDB プロジェクトに (自分のニーズのために) 追加したい新機能の 1 つは、通知システム (Redis に似ています) です。

  • テーブル内のすべてのデータ変更を通知する待機可能なオブジェクトを返すカーソルが必要です。
  • キーまたはキー + 値など、シグナル (データ構造へのポインター) と一緒にデータを取得したい。
  • このオブジェクトはカーソルと共に破棄され、カーソルの一部ですが、カーソルが参照を持つ DB の変更を通知します。
  • これは、いつの日か (または何年か) クロスプラットフォームで動作するはずです。彼らが仕事をするなら、私はどんな汚いWindows固有のハックでもOKです.

典型的なユースケースは、新しいメッセージを待っているライターと N 人のリーダーです。これにより、IPC と高速持続性 2-in-1 が可能になります。LMDB は、異なるプロセスからの同時読み取りをサポートしています (Esent と LevelDB はサポートしていません)。

System.Threadingプリミティブは C++ から利用でき、ブロッキング呼び出しに WaitHandle を使用する方法を理解しています。これを非同期にする方法はありますか? 非同期同期プリミティブに関する優れた一連の記事がありますが、それらはTaskCompletionSource.NET 内でのみ機能する and を使用します。ネイティブ相互運用のために同様のソリューションを作成することは可能ですか?

解決策の 1 つは、変更を 1 つのリスナー/ディスパッチャー (Redis またはRhino.Queuesスタイル) に変換する名前付きパイプまたはソケットである可能性がありますが、パフォーマンスが低下します。すでにメモリ内にあるデータ構造へのポインタ。

もう 1 つのオプションは、リスニング カーソルをキーに移動し、信号を送信することです。信号の後、C# リスナーは、カーソルが更新されたキーに値を持っていることを認識します。この種類はデータ転送部分を解決しますが、WaitHandles を使用するとブロックされます。私の使用例では、ブロックはソケット [割り当て/コピー/遅延] の組み合わせよりも悪いです。

より良いオプションはありますか?

追加の質問:

  1. ここで自転車を再発明していますか?
  2. .NET プログラムが C/C++ シグナル (存在する場合) を待機する (ノンブロッキング) オープン ソース ライブラリを教えてください。
  3. そのワークフローに LMDB を使用する必要がありますか? 私の優先順位は Windows で、LevelDB をまったく機能させようとして非常に苦労しました (試行をやめました)。LMDB が行うすべてのこと + シグナリングのためのより良い代替手段はありますか?

アップデート

ドキュメントでこの方法を見つけました:

ドキュメントは次のようにThreadPool.RegisterWaitForSingleObject述べています。

待機操作は、スレッド プールのスレッドによって実行されます。デリゲートは、オブジェクトの状態がシグナル状態になるか、タイムアウト間隔が経過すると、ワーカースレッドによって実行されます。...待機スレッドは、Win32 WaitForMultipleObjects関数を使用して、登録された待機操作を監視します。

これらは 2 つの異なるスレッドであり、シグナルがない場合にブロックされるのは最初の待機スレッドだけであるというのは正しいですか?

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

lmdb - LMDB にサブデータベースの制限はありますか?

lmdb キー値ストアのフォーラムが見つからなかったため、ここに投稿します。

サブデータベースに制限はありますか? 同時に開いているサブデータベースの妥当な数はいくつですか?

多くのように見え、モデルが間違っていることを明確に示している〜200のデータベースが必要です。各データベースのIDを改造してキー自体に埋め込み、1つのデータベースのみを保持できると思いますが、キーが長くなり、必要に応じてデータベースを削除することもできません。

ただし、LMDB がすでにキーにある種の内部プレフィックスを使用している場合は興味があります。その問題に対処する方法についての提案は大歓迎です。

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

caffe - Caffe: ブロブに期待される lmdb データ構造を理解する

Caffe でデータがどのように解釈されるかを理解しようとしています。そのために、Minst チュートリアルを参照 しました。入力データの定義を見てみましょう。

mnist_train_lmdb を見て、エントリの 1 つを取得しました (16 進数で表示):

(「7」の数字が見えるように、ここに改行を追加しました。)

今私の質問は、このフォーマットがどこに記述されているのですか? または別の言い方をすれば、最初の 36 バイトが何らかのヘッダーであり、最後の 8 バイトが何らかのラベル対応を持っていると定義されている場所はどこですか?

独自のデータを構築するにはどうすればよいですか? Blob TutorialLayers Definitionも、必要なフォーマットについてあまり教えてくれ ません。私の意図は、画像データではなく、時系列を使用することです

ありがとう!

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

key-value - LMDB の上に永続的な連想配列を実装する

私はキー値ストアを初めて使用します。永続的な連想配列として LMDB を試して、ファイル パスや URL などの長いキーを使用できるようにしたいと考えています。

LMDB はコンパイル時定数 MDB_MAXKEYSIZE=511 を定義し、キーの長さに最大値を課します。

LMDB の上に永続的な長さのキー ディクショナリを実装するには、どの手法を使用すればよいですか? ある種のハッシングと衝突解決?または、2048 などの別の MAXKEYSIZE で再コンパイルしますか? それとも、LMDB はこの仕事には不適切なツールですか?

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

python - .mdb ファイルを numpy または hdf5 に変換する

Linux環境で.mdbファイルをロードし、それらをnumpyやhdf5のようなPythonフレンドリーなデータ構造に変換できるPythonのAPIはありますか?

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

python - Caffe: 単純な線形関数の学習中の損失が非常に大きい

関数を学習するためにニューラルネットをトレーニングしようとしていますy = x1 + x2 + x3。目的は、Caffe をよりよく学び、理解するために Caffe をいじることです。必要なデータは Python で合成的に生成され、lmdb データベース ファイルとしてメモリに書き込まれます。

データ生成のコード:

Solver.prototext ファイル:

カフェ モデル:

取得しているテスト データの損失は です233,655。損失は​​トレーニング データ セットとテスト データ セットの数値よりも 3 桁大きいため、これは衝撃的です。また、学習する関数は単純な線形関数です。コードのどこが間違っているのかわかりません。提案/入力は大歓迎です。

0 投票する
0 に答える
287 参照

python - Caffe: y = x^2 関数を学習できないようです

深層学習フレームワーク Caffe で関数 y = x^2 を学習するようにニューラル ネットワークをトレーニングしようとしていました。これが私のコードです:

データ生成コード:

ソルバー ファイル:

カフェ モデル:

信じられない 10^8 のオーダーのエラーが発生します。ネットは、単一の入力を取り、単一の出力を生成することになっています。入力は [0,255] の範囲の整数で、出力はそれぞれの入力の 2 乗であると想定されます。このような大きなエラーが発生する理由は何ですか?