我最近开始使用Cosmos DB进行项目,我遇到了一些设计问题.来自SQL背景,我知道相关数据应该嵌套在NoSQL DB上的文档中.这确实意味着文档可能变得非常大.
由于不支持部分更新,因此当您想要更新文档上的单个属性时,要实现的最佳设计模式是什么?
我是否应该阅读整个文档服务器端,更新值并立即写回文档以执行更新?如果文档很大,这似乎有问题,如果你的所有数据都是嵌套的,那么它们是不可避免的.
如果我拿使得许多较小的文档的方法,并推断基于ID的我认为这将解决读/ immeadiately写更新关注的关系,但它的感觉就像我要反对的NoSQL的概念,并在本质上我建立关系D B.
谢谢
我不确定我是否使用了正确的标题,但我无法想出更好的方式来描述它.这可能更像是一个设计问题.
我有一个多租户数据库,其中一个用户可以属于一个或多个实体.我通过调用/ token端点使用他/她的凭据对用户进行身份验证.
收到令牌后,我调用自己的终点(使用令牌)获取该用户的可用实体列表,然后允许该用户在内存缓存中设置其当前实体.然后,我在内存缓存中使用它来查找所有后续请求的实体/租户ID,以便在调用DB时知道用户"登录"了哪个实体/租户.
理想情况下,我希望消除对内存缓存的需要,以便通过在代理中包含实体/租户ID作为声明来使我的应用程序更无状态,但在用户验证并选择他/她的实体后我才知道此ID .在令牌发布后,我显然无法更改或添加声明但是有没有其他设计来实现这种行为?
我认为可能每个租户使用一个子域,但从技术上讲,这更难以设置和维护.我还考虑过提示用户输入他/她希望以其凭据登录的实体作为自由文本,但这并不理想.
以前有人遇到过这个挑战吗?