2013-07-05 89 views
0

我正在使用Sphinx RT索引和MySQL數據庫,我現在遇到的問題是我需要數據是一致的,並且在它們上使用常規插入不是正確的方法它可能會導致錯誤的索引數據或錯誤的數據庫數據。兩個數據庫和一個更新

假設你有如下表MySQL數據庫

id, text 
1, test is test 

,你必須在RT指數

id, text 

,可以發生在這裏是典型的競爭條件相同,當兩個用戶同時更新內容在同一時間。

所以,如果用下面的文字用以下文字

nice whether 

之一許多事情可能發生

feeling good 

和用戶B更新用戶A的更新是這個

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請求並更新數據庫?像下面的東西

php page --send both requests via UDP--> dameon 
php page <--send successful receive via UDP-- dameon 
daemon --send two MySQL updates request --> MySQL 
+0

守護進程的要點是什麼?這個問題解決了什麼問題? – barryhunter

回答

0

我會解決這個與MySQL鎖。在進行mysql更新之前鎖定表。只有在您還將更新發送到獅身人面像後,才能釋放鎖定。

如果您有大量的併發更新可能不會擴展,但適度的更新率應該可以正常工作。