問題タブ [leveldb]
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.
haskell - LevelDB データベースからすべてのキーを取得する
すべてのビットコイン ブロックのハッシュを収集するスクリプトを作成しています。プログラム bitcoind は、特定の設定が変更された場合、すべてのブロックのメタデータを LevelDB データベースに保存します。メタデータの各セットのキーはブロックのハッシュであり、通常はブロックの識別子として使用されます。基本的に、各ブロックからメタデータ (トランザクション ID) の特定の部分を取得しようとしています。私が書いているスクリプトは Haskell ですが、必要に応じていつでもシェル コマンドを実行できます。私の問題を大まかに言えば、これを行う最も簡単な方法が、すべてのブロック ハッシュ (キー) を見つけてから、bitcoind を呼び出してそれぞれのメタデータを取得することかどうかはわかりません。LevelDB データベースからすべての値を直接取得する方法があれば、それも同様に機能します。これを行う最も簡単で効率的な方法は何ですか?
nosql - LevelDB にはキーの最大長制限がありますか?
LevelDB キーにキーの長さの制限はありますか?
URLをキーにしてデータを保存したい。したがって、このURLは非常に非常に長くなる可能性があります。
c - C のエントリ数と重複キー leveldb
キーを上書きしない良い戦略は何ですか?
同じキーでPut操作を 2 回実行するとします。現在、エラーは発生しませんが、古い値を上書きします。
古い価値観を維持したい。
1 つのオプションは、上書きか挿入かを確認するためだけに、 Putごとに追加の読み取りを行うことです。ただし、この場合、最初の要素については、データベースのサイズも確認する必要があります。私の str は増分文字列であるため、同じコードの次の反復では同じキーが異なる str になります。
android - 再起動すると、FileChannel.map() で Galaxy S4 の外部ストレージに書き込まれたファイルが破損します
次の問題があります。
私たちの Android アプリは、LevelDBを使用してデバイスの外部ストレージにファイルを書き込みます。LevelDBは内部的mmap
に書き込みに使用します。これまでのところ、問題はSamsung Galaxy S4でのみ発生します。ファイルは問題なくストレージに読み書きされます。しかし、デバイスの再起動後、ファイルが破損しています。
誰かが似たようなことを経験しましたか?
問題があるかどうかを確認するために小さなデモアプリを作成しmmap
ましたが、実際には問題があるようです。デモ アプリには、アプリに同梱されている画像と、画像の下にあるボタンが表示されます。
ボタンが押された場合
FileChannel.map()
イメージは(と同等mmap
)を使用して外部ストレージに書き込まれます。- 画像は外部ストレージから読み込まれ、ボタンの下に表示されます。
ボタンが 1 回押され、画像が外部ストレージに書き込まれた後、アプリは画像の 2 つのコピーを表示します。これは、アプリを再起動した後でも機能します。ただし、Galaxy S4 の再起動後、外部ストレージのファイルが破損し、最初の画像のみが表示されます。
注: この問題は、ファイルが を使用して書き込まれた場合には発生せず、 Galaxy S4FileOutputStream
でのみ発生します。
LevelDBを使用してこの問題を回避する方法を誰かが知っていれば、それは素晴らしいことです。
問題を簡単に再現できるように、デモ アプリのコードを次に示します。
main.xml
StartActivity.java
scala - Scala SBT および JNI ライブラリ
Scala
ライブラリを介して leveldb データベースを使用する単純なアプリを作成していleveldbjni
ます。私のbuild.sbt
ファイルは次のようになります。
AnObject
は、データベースの作成を担当します。残念ながら、プログラムを実行すると、フードの下でエクスプロイトするライブラリjava.lang.UnsatisfiedLinkError
によって生成された が返されます。hawtjni
leveldbjni
このエラーは、scala コンソールからも簡単にトリガーできます。
ライブラリがjarファイルから正しく抽出されているため、何が起こっているのか理解できませんが、何らかの理由でロードされていません。
問題はおそらく sbt が使用するクラスローダに関連していると思いますが、私は比較的 scala に慣れていないのでわかりません。
アップデート
何が犯人なのか、誰が犯人なのかはまだわかりません。とにかく、次のコマンドを実行できるため、ライブラリは実際に見つかり、正しくロードされています。
エラーは、ドキュメントinit()
によると、定数フィールドとして注釈が付けられたすべての静的フィールドを定数値で設定する責任がある関数が原因です。次のように入力することで、例外を引き続きトリガーできます。hawtjni
jms - Mule の ActiveMQ で LevelDB 永続性を実装するにはどうすればよいですか?
Mule で JMS ActiveMQ の levelDB を使用してメッセージ データ (ロギングなど) を永続化できますか? 「トランザクション」プロパティによって行われますか?
JMS トランザクション、XA トランザクションなどが見つかりました。しかし、そこにある値の使用法を理解できません。
例: JMS トランザクションの場合、Actions = ALWAYS_BEGIN、BEGIN_OR_JOIN、ALWAYS_JOIN、JOIN_IF_POSSIBLE を取得しました。
これらのアクションの用途は何ですか? :S
ありがとう。
c++ - leveldb ソース コード、db_impl.cc が純粋仮想関数「DB::Delete」を実装する理由
統計と実装は次のとおりです。
統計:
virtual Status Delete(const WriteOptions& options, const Slice& key) = 0;
埋め込む:
Status DB::Delete(const WriteOptions& opt, const Slice& key) {
WriteBatch batch;
batch.Delete(key);
return Write(opt, &batch);
}
go - レビゴの使い方
go で leveldb を使用したいのですが、次のコマンドで構築しようとしているlevigoツールを見つけます。
github.com/jmhodges/levigo を入手してください
その後、エラーで失敗しました:
次に、実行しようとします:
CGO_CFLAGS="-I/path/to/leveldb/include" CGO_LDFLAGS="-L/path/to/leveldb/lib" go get github.com/jmhodges/levigo
動作せず、ほぼ同じエラーが報告されます。誰が何が起こったのか、それを修正する方法を知っていますか? ありがとうございました。