Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb文档建模-寻找合理的方法_Mongodb - Fatal编程技术网

Mongodb文档建模-寻找合理的方法

Mongodb文档建模-寻找合理的方法,mongodb,Mongodb,我有一个大型asp.net应用程序,目前使用sql server作为其数据库。我想将此应用程序转换为使用mongodb。我面临的一个直接挑战是:如何在当前数据模型(分布在多个表中)和面向文档的方法之间找到一个合理的中间地带,这种方法将允许大多数(如果不是所有)相关实体合并到单个文档集合中。以下是一些细节: 业务领域是IT基础设施,其中一些实体是业务应用程序、服务器、存储、网络和工作负载。所有这些实体都是相关的:…单个业务应用程序在多个服务器上运行;每个服务器都有一个或多个与其关联的存储单元;每个

我有一个大型asp.net应用程序,目前使用sql server作为其数据库。我想将此应用程序转换为使用mongodb。我面临的一个直接挑战是:如何在当前数据模型(分布在多个表中)和面向文档的方法之间找到一个合理的中间地带,这种方法将允许大多数(如果不是所有)相关实体合并到单个文档集合中。以下是一些细节: 业务领域是IT基础设施,其中一些实体是业务应用程序、服务器、存储、网络和工作负载。所有这些实体都是相关的:…单个业务应用程序在多个服务器上运行;每个服务器都有一个或多个与其关联的存储单元;每个服务器都有一个或多个与其关联的网络接口;每个业务应用程序都可以由一个或多个工作负载等表示。。。所以,它基本上是一个对象图。我的第一个尝试是创建工作负载文档的单个集合,其中每个文档都有多个子文档的嵌套集合:

Workload:
{
    workloadId,
    workloadName,
    workloadEnvironment
    ...

    Applications:
    {
            appId,
            appName,
            appOwner,
            appType
            ...
    }

    Servers:
    {
        serverId,
        serverName,
        serverType,
        etc

        Storage:
        {
            storageUnitId,
            storageType,
            etc...
        }

        Network:
        {
            networkInterfaceId:,
            networkInterfaceType,
            ...
        }

    }


}
我在mongodb建模数据方面没有任何经验,因此我的问题是:
只要嵌套实体彼此相关,这种超级嵌套集合方法是否常见且合理,还是最好进行某种程度的规范化,并将BusinessApplication集合与服务器、存储分离,等等?

不是对你的问题的直接回答,但我想读一下:谢谢!这确实有助于说明一些特定的模式。我认为,从我的应用程序的角度来看,具有嵌套的树结构将与一个主要的应用程序概念很好地匹配:这是一个服务器,这是服务器的所有属性,这是在这个服务器上运行的内容。拥有这样一个整合的文档结构会导致高度重复:每台服务器都会有一个包含一个或多个应用程序的数组,其中包含它们的所有属性,因此,如果这些属性中的任何一个发生更改,我们需要在所有服务器文档中更新它们。这是一种常见的方法吗?为MongoDB建模的最佳方法将基于您的用例。我会弄清楚你的访问模式是什么,并以此为模型。在某些情况下,拥有重复的数据是有意义的。例如,在一个类似Twitter的系统中,您可能会争辩说,每个用户都可以拥有自己收到的所有tweet的副本,以优化阅读性能。当然,这是以更大的数据集和更高的写入成本为代价的。