我们现在在RDMBS中拥有客户位置数据,并且正在研究vNext架构,该架构可能会转换为Document DB(Json)架构。我将不胜感激任何建议/参考/ Youtubes / etc,以帮助您嵌套位置。
一个地点可以附加物品;并且也可以有子位置。嵌套级别取决于客户的组织结构。一些是“简单的”位置,没有子位置,而另一些可以具有许多级别(区-区域-分区-州-城市-位置)。
目前,我们正在像这样存储它们(伪mssql dml):
create table Location as
LocationID int identity(1,1),
LocationName varchar(250),
(other fields)
ParentLocationID int
我只是将所有子位置都嵌入到主目录下,我担心的是文档可能会变得很大-从而影响CRUD操作(性能和成本)。
此外,我们的应用程序可以通过其权限集来限制用户访问。
用户A可以访问所有位置 用户B只能访问位置5、6、7、8、9、10
这些权限适用于大多数搜索。我们目前仅将它们存储在关系表中---> User&UserLocation。
这将是一种“纯粹的”嵌入式方法,但是我认为它不一定是最佳选择。由于每个数据库似乎都有一个用户可分配或自动创建的值的ID,因此在模型中省略了该ID。
{
"name": "North America",
"locations": [
{
"name": "Canada",
"locations": [
{
"name": "Alberta",
"locations": [
{
"name": "Banff",
"locations": [
{
"name": "Main Street",
"locations": [ ]
},
]
},
]
},
]
},
]
}
我最初的想法是使用混合方法-一个位置仅存储其子位置的ID
{ “ id”:“ NA”, “ name”:“北美”, “位置”:[“ CA”,“美国”] }
{ “ id”:“ CA”, “ name”:“加拿大”, “位置”:[“ AB”,“ BC”,...] },
{ “ id”:“ AB”, “ name”:“ Alberta”, “位置”:[“班夫”,“卡尔加里”,...] }
{ “ id”:“班夫”, “ name”:“ Banff”, “位置”:[“大街”,...] }
这些ID必须是GUID或其他一些唯一值;以上数值仅供演示之用。在单独的文档中,资源将引用ID。每个客户存储的值都不同-但是资源的比例:位置的范围可以从10:1到10,000:1。
{
"name": "laptop",
"type": "computer",
"location": "Building1"
}
我们的应用程序访问与单个位置级别有关的数据-但它还会搜索并以树形视图显示整个位置列表。此外,搜索通常是针对资源进行的-受用户有权访问的位置的限制。
谢谢