私は Sphinx RT インデックスと MySQL DB を使用しています。現在抱えている問題は、データを一貫させる必要があり、両方で通常の挿入を使用することは正しい方法ではないということです。インデックス データまたは間違ったデータベース データ。
MySQL DB に次のテーブルがあるとします。
id, text
1, test is test
RTインデックスにも同じものがあります
id, text
ここで発生する典型的な競合状態は、2 人のユーザーが同時にコンテンツを更新している場合です。
したがって、ユーザー A が次のテキストで更新した場合
feeling good
ユーザー B は次のテキストで更新します
nice whether
起こりうる多くのことの1つはこれです
Update RT index with user A text
Update DB table with user B text
Update RT index with user B text
Update DB table with user A text
したがって、誰かがテキストを検索すると、DB にないインデックスから結果が得られます。
PHP ページから UDP リクエストを受け取り、DB を更新するデーモンを中間に配置しても問題ありませんか? 以下のようなもの
php page --send both requests via UDP--> dameon
php page <--send successful receive via UDP-- dameon
daemon --send two MySQL updates request --> MySQL