2017-02-19 62 views
0

我有2個現有的應用程序,我想以某種方式橋接。兩者都有類似的域(產品目錄),但第一個應用程序使用NoSQL文檔存儲記錄,而第二個應用程序使用SQL表。NoSQL到SQL適配器設計模式

從第一個表的示例記錄看起來類似:

{ 
    "productId": 123, 
    "sku": "abc", 
    "packageSizes": { 
    "container": 20, 
    "pallet": 50 
    } 
} 

而在第二個域相同的項目將是1行中的ProductItem表:

| id | sku | 
| 123 | abc | 

然後2行中ProductPackageSizes表:

| productId | type  | size | 
| 123  | container | 20 | 
| 123  | pallet | 50 | 

該系統curre當然是完全獨立的,但我希望它能夠在NoSQL應用程序中創建一條記錄,以便在SQL應用程序中創建相同的項目。

我可以編寫一個一個關閉腳本,它只是基於數據看起來像當前的程序創建它。但是,我想知道是否有任何已建立的設計模式來描述這種轉換?特別是如果在將來添加新的packageSizes或其他關係。

+0

取決於最終目的是什麼?只是爲了在NoSQL和SQL之間複製數據庫模式。可以,但爲什麼我可以問? – user7568042

+0

@ user7568042雖然應用程序具有某些相同類型的數據,但它們並不完全相同。第一個目標略有不同,更受我的控制。第二個應用程序(SQL)是我們碰巧集成的第三方報告應用程序,但需要將數據發送到。 – J3Y

回答

1

您在sql數據庫中沒有任何外鍵?

您可以使用ProductPackageSizesProductItem和您要創建在NoSQL數據庫的新記錄的每一次下一個相關表的外鍵,你可以在ProductItem分配

"productId": 123,"sku": "abc" 

,如:

| id | sku | | 123 | abc |

,並指定

"packageSizes": { 
"container": 20, 
"pallet": 50 } 

ProductPackageSizes與外鍵(如P_ID),如:

| productId | type | size |P_id | 123 | container | 20 |123 | 123 | pallet | 50 |123

希望這有助於:)