Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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
C# 存储大量JSON数据的最佳方式。SQL小姐?瑞文数据库?_C#_Sql Server_Json_Linq_Ravendb - Fatal编程技术网

C# 存储大量JSON数据的最佳方式。SQL小姐?瑞文数据库?

C# 存储大量JSON数据的最佳方式。SQL小姐?瑞文数据库?,c#,sql-server,json,linq,ravendb,C#,Sql Server,Json,Linq,Ravendb,我们从webapi获取数据,需要将数据存储在服务器上。数据有一些主要对象类型:房屋、住房合作社和平房信息。以下是来自两个响应的简短代码片段: House: { "advertiseOn": { "homepage": true, "showAsComming": true, "showTodaysHousing": true, "showAsReferenceHousing": true, "imageIds"

我们从webapi获取数据,需要将数据存储在服务器上。数据有一些主要对象类型:房屋、住房合作社和平房信息。以下是来自两个响应的简短代码片段:

House:
 {   "advertiseOn": {
        "homepage": true,
        "showAsComming": true,
        "showTodaysHousing": true,
        "showAsReferenceHousing": true,
        "imageIds": [
          "sample string 1",
          "sample string 2"
        ],
        "documents": [
          {
            "name": "sample string 1",
            "id": "sample string 2",
            "extension": "sample string 3",
            "url": "sample string 4"
          },
          {
            "name": "sample string 1",
            "id": "sample string 2",
            "extension": "sample string 3",
            "url": "sample string 4"
          }
        ],

Housing cooperative
{
  "advertiseOn": {
    "homepage": true,
    "showAsComming": true,
    "showTodaysHousing": true,
    "showAsReferenceHousing": true,
    "imageIds": [
      "sample string 1",
      "sample string 2"
    ],
    "documents": [
      {
        "name": "sample string 1",
        "id": "sample string 2",
        "extension": "sample string 3",
        "url": "sample string 4"
      },
      {
        "name": "sample string 1",
        "id": "sample string 2",
        "extension": "sample string 3",
        "url": "sample string 4"
      }
    ],
在上面的片段中,house和housing cooperative的数据是相同的,但它们的数据不同

如果它们拥有相同的数据,那么将它们都映射到一个对象表并与每个对象建立关系就不会有问题了。例如广告

因为每个主对象都有大约20-25个不同的对象,这将导致75个不同的数据库表,所以这并不是解决这个问题的最佳方法。存储此数据的最简单方法是什么?我们需要能够搜索具有不同参数的数据。例如,EstateId

有什么想法或建议吗?
//H

根据您指定的内容,似乎任何文档数据库都符合要求,尤其是那些本机存储Json的数据库。(很好的例子是具有存储Json的动态模式的和文档数据库)
选择NoSQL数据库主要是关于您的问题,问题如下:

  • 您计划如何访问数据?询问?一般的数据访问模式-您需要聚合吗?报道?还是简单的查询
  • 可靠性、一致性和高可用性要求-数据库是否提供您所需的所有功能和可靠性保证

此外,在您决定如何准确地为数据建模后,imho选择正确的数据库会更容易。可以提供关于NoSQL数据库中数据建模的优秀介绍。

Michael是对的,您需要了解如何访问数据,然后了解不同数据库的限制。 您可以将JSON存储在MongoDb中,并创建针对JSON文档优化的索引,但如果需要在house和housing合作社之间进行某种连接,则需要创建map/reduce函数,因为集合之间没有连接。我认为MongoDb仍然区分大小写,所以不能使用排序规则

如果您已经在使用MS SQL,您甚至可以将JSON存储为文本。在Sql Server 2016中,CTP3将提供用于解析和查询JSON文本的内置函数,请参阅。如果要使用较旧版本的Sql Server,可以使用一些现有的CLR/JSON库,例如或,或者使用


没有绝对最好的方法来解决这个问题,您需要分析哪个平台可以适合您的用例。

您如何定义“最佳方法”?最快的方法?最具活力的方式?最安全的方法?真的是任何方法,因为我不知道如何存储数据。如果数据库上的事务是ACID(原子性、一致性、隔离性、持久性),或者不重要,我真的希望避免在MSSQL中创建75个表。有时,根据问题的上下文(创建75个表来存储数据),做艰苦的工作是正确的选择