5

PHPとSymfonyフレームワークを使用してアプリケーションを開発しています。理想的には、システムはリモートサーバー上で実行されるため、どこからでもオンラインで利用できます。ただし、オフラインでの可用性も必要です。

このため、システムはリモートサーバーとローカルサーバーの両方で実行されます。デフォルトでは、クライアントはローカルサーバーにアクセスし、施設の外にいる場合にのみオンラインで動作します。

したがって、クライアントとの対話なしに、ローカルデータベースとリモートデータベースの両方で行われた変更に対してデータベース同期を実装する必要があります。可能であれば、データベースを同期し、バックグラウンドで実行されているデーモンである必要があります。マスターデータベースはローカルデータベースになるため、競合が発生した場合はマスターデータベースが優先されます。

使用するDBシステムを決定していません(サポートされているDBならどれでも使用できるようにDoctrineを使用しています)。そのため、シナリオで最も準備が整った、または利用可能なソリューションを備えたシステムを実際に検討しています。

ソリューションは、クライアントとの対話を必要としない限り、商用かどうかに関係なく、専用のアプリケーションにすることができます。

4

2 に答える 2

3

私はMySQLの同期を使用しています。セットアップは簡単で、完璧に実行されました。使用するUIを提供するphpMyAdminと組み合わせて、マウスを約6回クリックするだけで、文字通りすぐに設定できます。

http://dev.mysql.com/doc/refman/5.0/en/replication.html

http://www.phpmyadmin.net/home_page/index.php

于 2011-06-17T00:11:49.807 に答える
1

それは本当にあなたのアプリケーションに依存します。

最も堅牢なシステムは、おそらくCouchDBのようなオブジェクト指向データベースを備えたマスターマスター環境でしょう。

箱から出してすぐに優れたサポートを提供する機能を備えたものもありますが、おそらくより柔軟なアプリケーション側でも実行できます。

ただし、この回答で説明されているアプローチは、ドキュメントエンティティへの変更を要約できる場合にのみうまく機能します。

手順は次のようになります。

  • すべてのドキュメントはlast_modificationタイムスタンプを受け取ります。

  • クライアントは、サーバーと最後に同期されたときのタイムスタンプを保存します。

  • 削除されたドキュメントはすぐには削除されませんが、deleted_atタイムスタンプを受け取ります

  • 接続が中断された場合、クライアントはローカルドキュメントの変更を続行できます

  • 接続が再度確立されると、最後の同期タイムスタンプの後に発生したサーバーとクライアントのすべての変更がフェッチされます。

  • ドキュメントは両方向に更新されます。両側で変更されたドキュメントの競合解決は、lsat_modificationtimestmapに基づいて行われます。

  • サーバーとクライアントの時間にわずかなオフセットがある可能性があるため、100%信頼することはできないことに注意してください。同期が必要です。また、最初に変更した側で行われた変更を失うことになります。ただし、これはアプリケーションで対処できる問題である必要があります(cvsシステムの競合など)

  • また、ドキュメントのマージおよび/またはフィールドベースの変更のタイムスタンプがオプションになる可能性があります

すでに述べたように、それは実際にはアプリケーションに依存し、さらにはデータに依存します。

あなたの問題は、ソフトウェア開発(SVNリビジョンなど)のCVSシステムでも発生する問題です。

常にsvnチェックインを実行してからsvn更新を実行することを想像してみてください。Mabyこれは、データをXMLファイルなどに保存する場合にアプリケーションで可能ですか?

SVNは少し古い学校であり、いくつかの欠点があり、信頼性が低いため、この場合は適切ではありませんが、GITはその仕事を非常に行うことができます。

SQL(Mysqlなど)ベースのマスターマスターレプリケーションシステムも非常に強力ですが、保守も非常に難しく、セットアップもそれほど簡単ではありません。

あなたのユースケースについてはよくわからないので、この回答がお役に立てば幸いですが、もう少し詳しく説明していただければ、さらにサポートできる可能性があります。

于 2011-06-17T00:05:57.420 に答える