1

私は現在、JSONファイル(ユーザートランザクションデータを含むJSONシリアル化オブジェクト)を受け入れ、それをサーバーに保存するAPIを持っています。このようなすべてのJSONファイルには、一意のグローバルIDとそれが関連付けられている一意のユーザーがあります。そのようなファイルは毎日何十億も生成されています。ユーザーは、自分に関連付けられているすべてのJSONファイルをクエリして、それらのファイルに基づいて計算された一連の集計結果を生成できるようになります。

保存する必要のある一般的なJSONファイルは次のようになります。

[ { "currencyCode" : "INR",
"receiptNumber" : { "value" : "1E466GDX5X2C" },
"retailTransaction" : [ { "grandTotal" : 90000.0,
      "lineItem" : [ { "otherAttributes" : {  },
            "sale" : { "description" : "Samsung galaxy S3",
                "discountAmount" : { "currency" : "INR",
                    "value" : 2500
                  },
                "itemSubType" : "SmartPhone",
                "otherAttributes" : {  },
                "unitCostPrice" : { "quantity" : 1,
                    "value" : 35000
                  }
              },
            "sequenceNumber" : 1000
          },
          { "customerOrderForPickup" : { "description" : "iPhone5",
                "discountAmount" : { "currency" : "INR",
                    "value" : 5000
                  },
                "itemSubType" : "SmartPhone",
                "otherAttributes" : {  },
                "unitCostPrice" : { "quantity" : 1,
                    "value" : 55000
                  }
              },
            "otherAttributes" : {  },
            "sequenceNumber" : 1000
          }
        ],
      "otherAttributes" : {  },
      "reason" : "Delivery",
      "total" : [ { "otherAttributes" : {  },
            "type" : "TransactionGrossAmount",
            "value" : 35000
          } ]
    },
    null
  ],
"sequenceNumber" : 125435,
"vatRegistrationNumber" : "10868758650"
} ]

上記のJSONは、他のクラスのオブジェクトの単一または配列を属性として含む複雑なオブジェクトのシリアル化されたバージョンです。したがって、「receiptNumber」はJSONファイルのユニバーサルIDです。

customerOrderForPickupの数量や値、トランザクションのgrandTotalなどをクエリし、そのようなさまざまなトランザクションJSONの集計として入力する必要があります**

1)これらのJSONファイルをサーバー、つまりファイルシステムに保存する方法についていくつか提案したいと思います。2)このような複雑な構造を持つこれらのJSONファイルをクエリするためにどのようなデータベースを使用する必要がありますか。

私の調査の結果、いくつかの可能性がありました。1)MongoDBデータベースを使用して、オブジェクトのJSON表現を保存し、データベースを介してクエリを実行します。JSONファイルはどのように保存されますか?トランザクションJSONをMongoDBデータベースに保存するための最良の方法は何でしょうか?2)サーバー上の一意のグローバルID、ユーザーID、JSONファイルのアドレスを含むSQLデータベースを、これらのファイルの集約コードと結合します。これをスケーリングできるかどうかは疑問です

誰かが問題について何か洞察を持っていればうれしいでしょう。ありがとう。

4

1 に答える 1

3

あなたの質問は非常に一般的で、実際にはスタイルと好みの問題だと思います。これは10の異なる方法で行うことができ、すべてが完全に優れています。

私は私の個人的な好みとそれをどのように行うかを与えるつもりです:

データがたくさんあるので、リレーショナルデータベース(SQL Server)を使用します。私はMicrosoftツールとASPMVCが好きなので(そうでない人がたくさんいることは知っていますが、私の好みです)、JSONをc#オブジェクトに変換できるシリアライザーがあります。私もエンティティフレームワークを使用するのが好きで、エンティティフレームワークはc#オブジェクトをデータベースのものに変換できるので、JSONオブジェクトと同じようにデータベースを構造化するだけです。次に、それらのJSONエンティティを受け入れるAPIがあり、ASP MVCはそれらを自動的にc#オブジェクトに変換し、エンティティフレームワークはそれらを自動的にデータベース行に変換します。このようにして、アップロードAPI全体を作成するのに数行以上のコードが必要になります。

次に、さまざまなタイプのデータクエリ用にさらに多くのAPIメソッドを作成します。Linqとエンティティフレームワークを使用すると、1行のコードでさまざまなクエリを簡単に実行できる場合があります。

于 2013-02-08T14:54:58.720 に答える