問題タブ [berkeley-db-je]
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 - Oracle Berkeley DB Java Edition - 二次キーの単一性
単純なエンティティ クラスがあり、一意の名前を含める必要があります。
大幅な修正のため、据え置き書き込みオプションを使用したい。これが私が試したテストとその出力です。
出力
したがって、私の質問は、2 番目のパッケージを配置しているときに例外がスローされたとしても、なぜ 2 つのパッケージがリストされるのかということです。トランザクションを使用せずにこれを回避する方法はありますか?
ありがとう。
java - アプリケーション .jar のリロード中に BDB JE をメモリに保持する
BDB JE はアプリケーションのプロセスで実行されるため、BDB を実行し、常に変化するアプリケーション ロジックと依存関係をリロードできるシステムを構築する最善の方法を見つけたいと考えています。
BDB を別のプロセスで実行するのが理想的ですが、共有メモリを使用して IPC を実行し、帯域幅を維持する必要があります。
私が考えていたもう 1 つの考えは、OSGi を使用してアプリケーション バンドルを更新することでした。
誰でもこれを行うための巧妙なテクニックを持っています。私は BDB JE の組み込みの性質に感謝していますが、自分のケーキを持って食べたいと思っています。
berkeley-db-je - BerkeleyDB JE で個別のセカンダリ キー値を選択する
DPL を使用して Berkeley DB JE をセットアップしています。
文字列のセカンダリ キー フィールドがあり、このキーの個別の値をすべて取得したいと考えています。追加のフィトラーは必要ありません。すべての個別の値が必要なだけです。
すべてのエントリを反復処理してセットに値を追加することもできますが、数十万行から数十のオーダーの値があるため、これは非常に非効率的です。
berkeley-db-je - Berkeley Database Java Edition での主キーの自動インクリメント
Berkeley データベースの主キーを自動インクリメントしたいと考えています。@PrimaryKey(sequence="Id") を使用します。うまくいきました。しかし、別のデータを入力すると、シーケンスが間違っています。例として、database.put を実行したときの主キーは「1」ですが、次回は「101」、次回は「201」です。これは私のコードです。追加するものはありますか。I+ は SequenceConfig を使用しませんでした config = new SequenceConfig(); config.setAllowCreate(true);. 私はそれを使用する必要がありますか。私を助けてください。
@PrimaryKey(sequence="ID")
長いID; 文字列名;
java - クラスをロードできなかったか、永続的ではありません: Berkeley DB JE の scala.collection.immutable.List
scala プロジェクトで Berkeley DB JE を使用するとき、List メンバーを持つエンティティを定義します。ただし、プロジェクトを実行すると、そのことを示す例外がスローされClass could not be loaded or is not persistent: scala.collection.immutable.List
ます。では、どうすればこの問題を解決できますか? それとも、scala List を java.util.List に変換するだけですか?
java - Berkeley DB の外部キー
私は2つのエンティティを持っています:
最初のものは次のとおりです。
2 つ目は次のとおりです。
wordId
の をのLexiconEntity
の 外部キーにしたいWordEntity
。これどうやってするの?
java - Berkeley JE StoredMap : 前の値をロードせずに既存の値を置き換える
StoredMap 値を更新したいのですが、古い値は気にしません。以前の値が読み込まれないようにする方法が見つかりません。
コードを最適化し、既存の値をロードせずに更新する方法はありますか (または、少なくとも古い DatabaseEntry バイトを処理するバインディングを防止する方法はありますか)?
注: remove を呼び出してから put を呼び出すと、処理が遅くなります。
berkeley-db - アプリの再起動後にBerkeley DBの主キーシーケンスが100にジャンプする
(私はすでにこの問題をオンラインのどこかで見ましたが、検索用語として「100」に依存する検索クエリは明らかに有望なものではありません-この質問がすでに尋ねられている場合はご容赦ください)
DPL 機能を使用して、Java で berkeley DB を使い始めたところです。次の主キーとシーケンスを持つクラス「クライアント」を作成しました。
プライマリ インデックスを使用して、いくつかのサンプル エンティティを追加しています。
アプリケーションを初めて起動するときは、すべて問題ありません。シーケンスは 1 から始まり、1 ずつ増加します。次にアプリケーションを起動すると、4 (サンプル エンティティが 3 つある) ではなく、101 (ステッピングは 1 のまま) から始まります。どういうわけかこの動作に影響を与えることは可能ですか? 連続したシリーズを作りたいです。
編集: これは私のテストコードです:
ストアは次のようになります。
ClientAccessor は次のようになります。
クライアントは次のようになります。
java - Titan が一意に構成された重複した頂点キーを作成するのはなぜですか?
簡単な要約
最新の Titan-0.5 スナップショットを使用。私たちのコードは、並行スレッドで頂点を作成します。同じキーを持つ複数の頂点がある状態になってしまいます。制約により、これは発生しないと予想されます。
以下を使用してキーを構成します。
フルストーリー
一意の頂点プロパティ キーで構成された Titan DB があります。同時スレッド内で DB に書き込むと、Titan が同じキーで複数の頂点を保持していることがわかります。
問題を 1 つのテスト ファイルに まとめ ました。
このコードは 3 つのスレッドを生成します。これらのスレッドは、カウントダウン ラッチを介して (可能な限り) 同時に開始するように同期されます。キー「KEY_VALUE_A」で頂点を作成する キー「KEY_VALUE_B」で頂点を作成する 2 つのスレッドの間にラベルを作成する スレッドが順次実行される場合、キーの重複による例外が予想されます。私はこの事件を強制することができました。
スレッドが同時に実行される場合、少なくとも 1 つのスレッドが成功し、任意の数のスレッドが失敗することが予想されます。とにかく、グラフの最終状態は 2 つの頂点と、2 つの間の 1 つのエッジになると予想しています。
残念ながら、これを実行すると、DB は繰り返し 2 つ以上の頂点とエッジを持つ状態のままになります。キーが重複している頂点があります。テストは、グラフを XML にダンプします。例: https://gist.github.com/ubit-ee/d5530e4fa4b87c752294
テスト コードは berkeleydb 用に構成されていますが、Cassandra に対しても同じ問題を繰り返しました。
質問
- 頂点キーが一意になるように、スキーマを正しく構成しましたか?
- トランザクションで何か違うことをする必要がありますか?
- Titan の予想される動作を誤解していますか?