問題タブ [zodb]
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.
python - ZODB Bloat は必ずしも悪いことですか?
Web ページを取得し、それらに関するいくつかの重要な情報をオブジェクトに抽出し、それを ZODB データベースに書き込むソフトウェアを作成しています。これらのオブジェクトのうち約 350,000 個がデータベースに書き込まれることになります。
私のコードがしばらく実行された後、データベースに新しいオブジェクトを追加するたびにこのメッセージを投稿し始めました...
だから私の質問はまず第一に、エラーメッセージが追加されている単一のオブジェクトまたはデータベース全体のものとして言及している26MBです。これらの各オブジェクトは非常に小さいはずですが、新しいオブジェクトが追加されるたびにメッセージが表示されます。
plone - Data.fs.old が消えるのはなぜですか?
パッキングメカニズムをテストしているためpack-days
、ゼロに設定し、ZMI を介してオブジェクトを追加および削除して履歴を生成しzeopack
、これまでのところ正常に動作しています。
それでも、最後のパッキング以降にトランザクションがなく、別の新しいパッキングがトリガーされた場合、Data.fs.old が削除/消失するのはなぜですか?
それぞれ、どのコードラインがそれを行っていますか? どうにか見つからない。
python - ZODB によるきめ細かな承認
マルチプレイヤー ビデオ ゲームの永続化レイヤーとして ZODB を使用することを検討しています。任意のオブジェクト指向データ構造とシームレスに統合できる点が非常に気に入っています。ただし、ZODB がこれを解決できるかどうかわからない 1 つの問題につまずいています。
どうやらClientStorage
from ZEO を使用して、永続化に使用されるリモート データ ストレージにアクセスできます。これは、信頼できるローカル ネットワークでは優れていますが、オープン ネットワークでは適切な承認と認証がなければ、これを行うことはできません。
そこで、ZODB で次のようなコンセプトを実現できる可能性があるかどうか疑問に思っていました。
サーバー側では、ZEO サーバーを実行し、ZEO サーバー上で完全に承認されたクライアントとして動作する (または ZEO サーバーと同じファイル ストレージを使用する) ゲーム世界のシミュレーションを行いたいと考えています。
クライアント側では、ZEO サーバーへの非常に制限された読み取り/書き込みアクセスが必要です。これにより、クライアントは、ユーザーが知っているはずの情報 (キャラクターの周囲など) のみを表示し、関連する情報のみを変更できます。キャラクターが実行できるアクションに。
これらの制限は、ある種のきめの細かい承認スキームを使用してサーバーによって課される必要があります。したがって、ユーザー A がオブジェクト B の読み取り/書き込み権限を持っているかどうかをサーバーに伝える必要があります。
この種の問題に対して、ZODB またはサードパーティのソリューションでこれを行う方法はありますか? または、この方法で ZEO を拡張する方法はありますか?
python - Python の ZODB での双方向マッピング
ZODB では、 BTreeを使用して大量のデータを格納し、ツリーのサイズに対して対数的な順序でキーに基づいてルックアップできることを知っています。
問題は、いくつかのPersistent
objectとFoo
他のPersistent
オブジェクトがあり、 bidictBar
の意味で、それらの間の双方向マッピングを保存したいということです。
つまり、次の 2 つのアクセスを実行するのは効率的 (対数時間) である必要があります。
今考えられる唯一の便利な方法は、単純にストレージ要件を 2 倍にし、2 つの を維持することBTrees
です。1 つは A から B へのマッピングを格納し、もう 1 つは B から A へのマッピングを格納します。もちろん、常に、BTree にはマッピングの追加と削除は両方でタンデムに実行されるため、同じ要素です。
これに関する私の懸念は、データベースの制約がないとツリーが分離される可能性があることです。これは実行可能だと思いますか?
python - Python で ZODB とトランザクションを行っているかどうかを確認するにはどうすればよいですか?
ZODB に関連するいくつかのテストを書いていたのですが、単体テストでエラーが発生したため、長い間行き詰まりました。それを呼びましょうTest_B
:
ありがたいことに、 (当然のことながら)呼び出されるtransaction.commit()
前に実行されるテストで aを呼び出すのを忘れていたことが最終的にわかりました。ログに記録される一連のイベントは次のようになります。Test_B
Test_A
Test A
成功することに注意してください: これは間違っています! Test A
失敗して、コミットするのを忘れていたトランザクションに未処理の変更があることを伝えたいです。
ZODBでこれを行うにはどうすればよいですか? 変更を伴うトランザクションを行っているかどうかを確認するために使用できるドキュメントが見つかりません。
AfterEach
明らかに、そのチェックがあれば、スイート内のすべての単体テストのブロックに貼り付けることができます。
plone - ZEO ワーカーで ConflictError を取り除く方法は?
私の ZEO ワーカーを見ると、かなり多くのことがわかります。
それらはログに記録されているINFO
ので、まったく害がないと想定する必要がありますか?
競合がある場合、ZODB への書き込みが多すぎるためだと思いますか?
plone - plone zodb ERROR CMFUid ASSERT
非常に大きな Data.fs (~15Gb) があります。これは、カスタム フォルダのようなコンテンツ タイプで「ワーキング コピー サポート」を使用することによるものだと思います。
「portal_historystorage」を使用しようとすると、インスタンスが終了し、次の > XX 個のエラーが表示されます。
このオブジェクトをクリアして DB を縮小するにはどうすればよいですか? "portal_catalog"、reference_catalog、および uid_catalog を既にクリア/再構築しています
前もって感謝します
プレーン 3.3.6