2012-07-04 74 views
2

我只是希望通過重新編寫一個非常簡單的MySQL和PHP應用程序玩弄NOSQL和Node.js的所以學生可以發表評論的教授:將MySQL數據庫導出到CouchDB的最簡單方法是什麼?

Table: Prof 
Columns: id, first, last, university, department 

Table: Comments 
Columns: id, user_id, likes, data 

的關係基本上是一個教授有很多評論和評論屬於一位教授。

我認爲CouchDB的/ JSON的版本是這樣的:

{ "Profs" : [{ 
    "Comments" : [ {"data" : "comment1", "likes" : 42 } , { "data" : "comment2", "likes" : 1} ], 
"first" : "Carlos", 
"last" : "Marx", 
"university" : "some university", 
"department" : "math" 
}, {...another prof with comments...}], 
} 

我的第一個問題是,是否有工具或腳本,我可以運行導入我的數據到的東西的CouchDB能正常工作?如果不是,你會推薦什麼?我可以將它從phpmyadmin導出到.sql和.cvs。

我的第二個問題是我在JSON中正確構造了我的數據嗎?

謝謝!

回答

2

你真的不只是將MySQL數據庫導出到CouchDB或任何其他NoSQL數據庫。它們是不同的範例,需要改變您對數據存儲方式的看法。對於關係數據庫和文檔數據庫都有很好的用例,雖然有很多重疊,但它們都擅長於不同的事情。

對於NoSQL數據庫,理解數據如何使用非常重要。數據如何被應用程序編寫和使用,以及數據是否經常更新都會對您設計文檔的方式產生非常重要的影響。以你的例子爲例。你可以編輯評論嗎?如何評論評論?你是否總是展示所有這些內容,或者是否希望將結果分頁?評論添加的頻率如何?他們可以被刪除?在不知道這些問題的答案的情況下,我無法確定CouchDB是否是適合該問題的正確的NoSQL解決方案!

對不起,這是對你的問題的一種非直接的回答,但是從一個關係數據庫到一個NoSQL解決方案的過渡是一個從表到集合的簡單映射,這是失敗的祕訣。一旦你花時間設計你的文檔應該如何看待CouchDB,數據將不得不經歷一個轉換過程。這可能會有很多形式。您可以編寫一個應用程序,該應用程序可以從MySQL讀取並寫入到CouchDB中,或者可以導出爲其他格式並使用腳本導入。沒有任何魔術按鈕會將你的MySQL數據庫變成一個Couch數據庫,如果有的話,它確實不應該存在,因爲上面提到的問題。

2

這是一篇經典的博客文章+評論類型的場景。

而不是整個數據庫使用一個單一的JSON文檔,拆分評論和教授到單獨的JSON blob。我建議使用電子郵件地址作爲id,因爲它們是獨一無二的,幾乎每個人都擁有它們。使用CouchDB的include_docs功能將prof文檔和評論文檔鏈接在一起。

{ 
    "_id": "[email protected]", 
    "university" : "Some Uni", 
    "department" : "Math", 
    "name" : "Carlos Marx" 
} 

{ 
    "_id": "comment1", 
    "prof": "[email protected]", 
    "comment": "Very smart" 
} 
相關問題