2013-11-10 66 views
1

我正在爲與我一起工作的公司建立網站的計劃階段。這家公司是一家電子批發商,希望獲得更好的網絡業務。他們目前的POS系統使用PervasiveSQL作爲數據庫。我將使用MySQL作爲網站DB和PHP的語言。數據庫到數據庫通信

但是我想將這個網站與這個當前的數據庫整合在一起;我想讓網站使用它自己的數據庫,以防萬一入侵發生,一切都不會受到影響。當網站接受訂單時,我希望它也可以複製到他們的POS系統中。

我該如何去做到這一點?我是否在代碼中寫入第二個INSERT語句並插入到兩個數據庫中?有沒有一種方法可以使用,當數據庫有東西插入到表中時,它會觸發一個事件,它將插入的信息放入另一個數據庫中?我這樣問,因爲當新產品或客戶賬戶被添加到原始POS系統時,我希望將這些信息放入網站數據庫中。

+1

您將要爲POS數據庫創建一個API。該網站不應該直接與數據庫交互,而是使用API​​發出請求。所以你會有兩個獨立的應用程序,網站和POS API。 – donutdan4114

+0

你會推薦API的語言嗎?我在Java和C#中體面。是否還有其他的選擇可能更好,以及爲此類任務創建API的任何可能的起點? – NeonOriginal

+0

您可以使用任何您想要的語言來構建POS API。使用PHP,您可以快速設置一個不錯的RESTful API。但是,請使用框架。如果您不打算使用信譽良好的網站/ API框架,請不要這樣做。 (我真的很喜歡Laravel) – donutdan4114

回答

1

根據您的描述,您可能要做的是讓網站使用只讀憑證訪問POS系統的數據庫。那麼你不需要複製數據。如果有網站的攻擊,攻擊者將無法獲得POS數據庫的寫入權限。

如果您需要從網絡應用程序寫入POS數據庫並關心直接訪問,您可以在兩者之間放置一個Web服務(僅可從您的內部網絡訪問),然後調用該服務而不是直接訪問POS數據庫。實際上,將Web服務置於適當的位置也是從POS系統讀取數據的好方法。

基本上,複製數據和保持同步可能是一個很大的問題,最好在給定選項時避免。

0

你不會說你將如何編寫你的數據庫連接,但它是完全可以連接到多個數據庫的同時,沒有任何限制。

讓我們假設您正在使用PDO。

要連接到2個數據庫,你可以使用:

$db1 = new PDO('mysql:host=localhost;dbname=database1;charset=utf8', 
'username1', 'password1'); 

$db2 = new PDO('mysql:host=localhost;dbname=database2;charset=utf8', 
'username2', 'password2'); 

這將導致2個數據庫引用$ DB1和$ DB2

要插入到兩個數據庫中,你再使用引用您的查詢提交

$result1 = $db1->exec("INSERT INTO table(firstname, lastname) VAULES('John', 'Doe')"); 
$result2 = $db2->exec("INSERT INTO table(firstname, lastname) VAULES('John', 'Doe')");