2012-07-26 156 views
0

我使用PHP中的前端和JAVA中的後端工程。該應用程序使用MongoDb。在PHP和JAVA中都有一個映射Mongo集合的ORM層。問題有時很難保持mongo集合的同步。保持mongo模式同步

在它的實現,但沒有什麼可警告這個Java開發者在PHP開發人員可以添加一個新的文檔屬性。當然,口頭和書面交流可能是一個解決方案,但實際上它不是防彈和難以維護的。

一個解決方案,我能想到的是寫一個XML文檔,並使用這兩個Java和PHP來生成基本ORM類吧。該文件將使用版本系統進行更新。

你知道解決這個問題的好辦法? 是否有任何已經實現的用於Mongo映射的XML/JSON工具?

+0

如何解決MySQL中的相同問題? – 2012-07-26 06:37:02

+0

@sergio:ORM生成器將獲取MYSQL中表的模式和生成類。或者你可以檢查表中的列名,但在Mongo中沒有定義模式。 – danidacar 2012-07-26 06:38:21

+1

爲什麼新領域有問題?我很難想象這一點。突然刪除的字段當然是完全不同的故事:) – 2012-07-26 06:45:20

回答

0

因爲MongoDB的不(還)強制執行的模式,你需要把模式別處。由於您處理JSON數據,可能JSON模式將是定義數據存儲架構的好方法。

你會再建Java和PHP ORM層,讓他們執行共同的架構(驗證的東西對抗之前存儲到數據存儲架構)。

http://json-schema.org/

+0

您是否實際使用過任何模式驗證器?好奇是否有推薦/一致的跨平臺實施。看起來[JSON Schema spec](http://tools.ietf.org/html/draft-zyp-json-schema-03)仍然處於草稿模式。 – Stennie 2012-07-29 04:13:15

+0

我一直在使用https://github.com/akidee/schema.js和node.js來驗證通過API存儲到Mongo的內容。但我必須承認,有時我想知道我是否試圖重新創建關係數據庫.. – 2012-07-29 11:15:28

+0

也許有點過於規範,但有些情況下數據質量要求嚴格:)。我一直在玩[JSV](https://github.com/garycourt/JSV),這看起來很全面。可能對您希望數據「架構靈活」而非完全「無模式」的方法有用。還可以使用[mongodb-schema](http://skratchdot.com/projects/mongodb-schema/)外殼幫助程序。 – Stennie 2012-07-29 12:47:29