問題タブ [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.
ubuntu - Ubuntu を実行している Plone プロダクション サーバー全体を 1 日 1 回再同期する可能性
Plone でフル VM スナップショットまたは rsync バックアップを行った経験のある人はいますか? 約 10 ~ 20 GB の ZODB データとブロブに相当するいくつかの個別の Zope アプリケーション サーバーを実行しているサーバーがあります。
- 1 日に 1 回、サーバー ファイルシステム全体をレプリケート マシンに再同期することで、サーバーを複製することは可能でしょうか?
これにより、サーバーが破損した場合に、運用 IP をバックアップ サーバーに切り替えるだけでよい「最低限の高可用性」が提供されます。
ここでの問題は
rsync デルタ アルゴリズムは、追加専用の Data.fs ファイルを巧みにコピーできますか、それとも毎回 Data.fs 全体をコピーしますか? Data.fs と blob は、Plone サイトを実行しているサーバーで変更される唯一のデータです。
rsync は、サーバー ファイル システム全体のデルタを 1 日に 1 回計算するのに十分な速さですか?
rsync は、実行中にシステムに過度のストレスを引き起こしますか?
プロセスを高速化するために、rsync よりも高度なものを実行する必要がありますか (Duplicity など)。
Ubuntu システム パーティションには、rsync から除外する必要があるものがありますか
私の知る限り、ライブの ZODB Data.fs コピーは、追加のみの性質のため問題ありません。
このような複製方法の利点は、
- セットアップが非常に簡単: 通常の Linux システム管理者の知識を超える高度なレプリケーションの知識は必要ありません。
この場合のデータはそれほど重要ではありません。レプリケーションが 1 日以内に引き継がれる限り、1 ~ 2 個の古いバックアップを復元できれば問題ありません。
サーバーはUbuntu 12.04を実行しています。
plone - Ploneサイトの毎週のZODBパッキング
Plone ZODBデータベースを定期的に(たとえば毎週)パックするためのベストプラクティスは何ですか?
Plone ZEOクラスターと単一プロセスのZopeインスタンスは異なりますか?
zeopack+cronを使用する
wget+いくつかのURL+cron+特別なZopeユーザーを使用する
他の方法?
ZClockServerとcron?
コマンドをcronで実行すると、zeopackが実際にデータベースをパックしない場合があることがわかりました。ただし、zeopackとZODBのどちらも自分自身についてあまり報告しないため、この問題のデバッグはほとんど問題になりません。そのような状態を引き起こす可能性のあるアイデアはありますか?
python - ZODB での競合解決
ZODBで並列書き込み要求を実行します。BTree
ZODB 内に複数のインスタンスがあります。サーバーがそのような 内の同じオブジェクトにアクセスすると、クラスBTree
の が取得されます。私が設定したすべての Django 基本クラスについては、C ベースのクラスであるため、実装できません。ConflictError
IOBucket
_p_resolveconflict
IOBucket
IOBucket
私はより深い分析を行いましたが、クラスとその書き込み内容について不平を言う理由をまだ理解していません。さらに、それを解決するための正しい戦略は何ですか?
助けてくれてありがとう!
python - pickle/zodb:クラス定義を含む.pyファイルの移動を処理する方法は?
私がZODB
理解しているように、pickle
クラスインスタンスを格納するために使用しています。models.py
ファイルを複数のファイルに分割するために、少しリファクタリングを行っています。ただし、これを行うとpickle
、クラス定義を見つけることができないため、データベースに既に保存しているオブジェクトをロードできなくなると思います。この問題を処理する最善の方法は何ですか?
django - Django リクエストを再実行できますか?
Django のキー値ストアを使用しています。同じオブジェクトにアクセスする並行プロセスの競合エラーを管理するには、最後のコミットが失敗した場合に Django リクエスト全体を再実行する必要があります。
どうすればいいですか?どうにかして a 内で再実行を開始できますmiddleware.process_response
か?
python - ZODB の変数属性を持つオブジェクトの一貫したインデックス作成
私は ZODB のインストールを行っており、数百万個のさまざまな種類のオブジェクトを整理する必要があります。Table
属性またはこれらの属性の組み合わせによってオブジェクトにインデックスを付ける BTree を含む汎用コンテナー クラスがあります。データの一貫性は非常に重要であるため、インデックス作成の対象となる属性に書き込むと、インデックスが自動的に更新されるようにしたいと考えています。したがって、obj.a = x
すべての新しい従属インデックス エントリを計算し、衝突があるかどうかを確認し、最後にインデックスと値を書き込むには、シンプルで十分なはずです。
一般的に、私はそのためにライブラリを喜んで使用するので、repoze.catalogとIndexedCatalogを見ていましたが、それにはあまり満足していませんでした。IndexedCatalog はかなり長い間死んでいるように見え、オブジェクトへの変更に対してある種の一貫性を提供していません。repoze.catalog は、より使用され、アクティブになっているようですが、私が理解している限り、この種の一貫性も提供していません。ここで何かを見逃した場合は、それについて聞きたいですし、再発明するよりも再利用することを好みます.
したがって、問題のライブラリを見つけようとする以外に、記述子を使用してデータオブジェクト属性への書き込みアクセスをインターセプトし、Table
クラスにインデックスを変更する魔法を行わせる必要があります。そのために、記述子インスタンスは、どのTable
インスタンスと対話する必要があるかを知る必要があります。現在の実装は次のようになります。
これらのDatabaseElement
クラスが生成されるとき、データベースとその中のオブジェクトはまだ作成されていません。したがって、この素敵な回答で述べたように、オブジェクトをインスタンス化引数としてTable
渡すことなく、オブジェクトを見つけるために、おそらくシングルトンルックアップメカニズムを作成する必要があります。Property
もっとエレガントな方法はありますか?記述子自体を永続化しますか? 提案やベストプラクティスの例を歓迎します!
windows - 64 ビット Windows 用の ZODB 3
64 ビット Python 2.7 用の ZODB3 を pip でインストールしようとしました。このインストールでは、BTrees 拡張機能をコンパイルするためにローカル コンパイラが必要です。必要な MS コンパイラがインストールされていないため:
- Python 2.7 上の ZODB 用のバイナリ 64 ビット Windows インストーラはありますか? Google を使用しましたが、うまくいきませんでした
- BTree は本当に必要ですか、それとも BTree なしで ZODB3 をインストールできますか?
チャーズ、ウーヴェ。
python - 永続オブジェクトの基本型プロパティを永続から除外するにはどうすればよいですか?
たとえば、型がオブジェクトのintまたはstrプロパティである場合、オブジェクトのクラスでそれをどのように除外しますか。プロパティの前にデコレータを宣言する必要があるようなものですか、それではどうしますか?
python - ZODB / repoze.catalog - オブジェクトとカタログを同じデータベースに保存しますか?
私はこれを理解していると思っていましたが、不思議に思っています!
repoze.catalog docoの例を考えると:
これは、Content クラスの 2 つのインスタンスのカタログ エントリを生成する方法を示していますが、オブジェクトを実際に保存するための正しいメカニズムは何ですか?
repoze.catalog の下にカタログ化するために使用される docid をキーとするオブジェクトを格納する、完全に別個の ZODB データベースを持つことから始めましたが、トランザクションに関しては、オブジェクトを追加するときにコミットを発行する必要があるため、これは満足のいくものではありません。オブジェクトを格納するために使用されているカタログと ZODB データベースの両方。
repoze.catalog 構造内にある ZODB カタログにアクセスし、それを使用して実際のオブジェクトを格納できると想定していましたが、その方法を見つけるのに苦労しています。
python - 2つのプロセスからZODBにアクセスする
サーバーの実行中にデータベースを開こうとするたびに、データベースが別のプロセスで既に開いているというエラーが表示されるサイトがあります。
pshell
問題は、データベースをチェックするためにcronでスケジュールできるスクリプトがあること、またはサーバーの実行中に使用することさえできるスクリプトがあることです。
現在のところ、異なるプロセスからデータベースを開くことは不可能のようですが、ドキュメントには、データベースへの複数の接続が可能であると実際に記載されています。
この問題により、サーバーを含め、一度に1つのスクリプト/プロセスのみを実行する必要があります。