这是另一个RavenDb建模问题。
我有一个复杂的多实体图表代表我的“客户”。至少有50-60个不同的实体类型可以作为单个客户图的一部分。有300-1000个小对象属于单个Customer对象树,它们全部相互链接在一起。所有对象都很小,每个对象有4-10个属性。
我的场景如下:我有一个SPA网站(使用AngularJs构建),它正在构建,需要能够访问整个图形。它不需要一直访问所有对象,但是如果至少在后端,验证/持久代码可以看到完整的层次结构以便做出正确的决定,那肯定会有所帮助。
SPA网站上的使用率并不高......在任何特定时间可能只有几十个用户,未来一次可能会增加到几百个用户。
我完全可以看到使用Customer作为一个巨型根聚合实体,只是通过更慢但更安心地处理它的大小并来回发送以进行更新。是的,我的初始负载可能有点慢,但之后只有屏幕保存会很慢,而且这些很少见。屏幕2屏幕导航应该很快,因为所有数据都将通过Angular加载到UI中。
这是一个怪癖。我有每秒运行的后台处理器需要获取一大块Customer对象以满足其处理需求。想象一下,Customer对象有一个名为Resources的集合。客户保护伞下的大部分数据链接到单个资源(抽象实体,由各种具体类型实现)。后台处理器永远不会修改任何数据,但他们肯定需要超级快速访问Resource对象。后台工作人员需要大约60-70%的客户内部与特定资源相关的数据才能完成他们的工作。
我希望系统中有1,000-10,000个Customer对象。我希望RavenDb中没有其他对象。我希望多个服务器处理我的RavenDb以实现冗余视角
有没有人有过任何经验:
让Raven管理如此庞大的实体作为单个文档?
只提取对象树的一部分(即:资源) 对于相关实体有一堆“包含”?
Raven可以处理这个问题,还是我需要完成所有根聚合并将对象树组合在一起?
TIA