2017-02-19 68 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

希望这有助于:)