1

私は NoSql データベースを初めて使用し、ローカル ドライブで 20 MB を超える可能性のある非常に大きな JSON ドキュメントを処理する方法を理解するのに苦労しています。この構造は時間の経過とともに間違いなく増加し、クエリの速度と、文字列を取得するためだけに返された JSON オブジェクトのネストを深く検索する必要があることを心配しています。たとえば、私のJSONは深くネストされています。

{
"exams": {
    "exam1": {
        "year": {
            "math": {
                "questions": [
                    {
                        "question_text": "first question",
                        "options": [
                            "option1",
                            "option2",
                            "option3",
                            "option4",
                            "option5"
                        ],
                        "answer": 1,
                        "explaination": "explain the answer"
                    },
                    {
                         "question_text": "second question",
                        "options": [
                            "option1",
                            "option2",
                            "option3",
                            "option4",
                            "option5"
                        ],
                        "answer": 1,
                        "explaination": "explain the answer"
                    },
                    {
                        "question_text": "third question",
                        "options": [
                            "option1",
                            "option2",
                            "option3",
                            "option4",
                            "option5"
                        ],
                        "answer": 1,
                        "explaination": "explain the answer"
                    }
                ]
            },
            "english": {same structure as above}
        },
        "1961": {}
    },
    "exam2": {},
    "exam3": {},
    "exam4": {}
}
}

メイン アプリケーションでは、試験の種類、年、科目に基づいて質問オブジェクトが作成および追加されるため、時間の経過とともに JSON ドキュメントが巨大になります。将来的に遅いクエリを回避するために、これを再モデル化するにはどうすればよいですか?

4

1 に答える 1

0

ドミニクは正しいです。ドキュメントを分割し、別のドキュメントとして保存することから始める必要があります。

次の問題は、分割された文書をどのように再構成するかです。

Couch を使用していることを考えると、アプリケーション層でこれを行うことをお勧めします。良い出発点は、試験文書を作成し、独自のデータベースに保存することです。次に、試験ドキュメントへのポインタを持つ別のデータベースにドキュメント (試験) を作成します。

試験ドキュメントを取得して、必要に応じて 1 つずつ試験を受けることができます。これは、ほとんどの人が最新の試験のみを表示したいため、ページングで特に役立ちます。

于 2013-10-14T15:45:18.730 に答える