0

JSON 型の文字列をデータベースに保存/取得するプロジェクトに取り組んでいます。

すべて正常に動作します。つまり、保存と更新は type に対しては安全ですString,Number and Booleanが、 に対してList and Mapは、データがデータベースを行き来するときに List と Map を操作する安全な方法を確認したいと思います。特に、リストの項目が大きくなった場合、つまり「友達」や「フォロワー」のリストなど、何千ものアイテム

Listまた、JSONまたはMapJava で処理する際のデータ破損の可能性についても懸念しています。

JSON.Simpleすべて (すべてのアイテム) をメモリにロードせずに、ライブラリを使用してリストとマップを更新する安全な方法は何ですか?

たとえば、データベースに保存されている JSON リスト文字列に 1 つの項目を挿入するだけです。

4

1 に答える 1

1

JSON は ORM (オブジェクト リレーショナル マッピング) には適していません。これが、NoSQL データベースが JSON をドキュメント (つまり全体) として格納する理由です。したがって、JSON.Simple は、JSON 構造の遅延読み込み部分をサポートしていません。

お気づきのように、リレーショナル データベースは JSON (プリミティブを除く) に適切にマップされません。なぜなら、の自然なデータ構造Listは 1:N マッピングであり、リスト型にインデックス列 (つまり、リスト内の要素の位置)Mapがあり、 N:M マッピング。

したがって、より良い解決策は、JSON 文字列全体を (分解するのではなく) CLOB に格納するか、JSON 文字列全体を CLOB に保存し、いくつかのキー フィールドを抽出して、データを適切にインデックス化できるようにすることです。

ただし、JSON を使用する場合は、JSON 配列とマップの遅延読み込みをサポートする独自の OR マッパーを作成するか、毎回構造全体を RAM に読み込む必要があります。

于 2012-08-03T12:53:12.647 に答える