あなたの投稿を読んでください。私はあなたのアプローチがとても好きだと言わなければなりません。それは、ローカルストレージ(切断状態の場合)とオンラインストレージ(マスターデータベース-すべての顧客レコードを1つの場所に保存し、他のクライアントデバイスと同期します)。
これが私の答えです:
1)サーバーへのJSONの保存:オブジェクトをJSONとして保存するかどうかはわかりません。アプリケーションが非常に単純な場合は保存できますが、データの使用(レポートの実行とバッチでのメール送信)の作業が妨げられます。たとえば、仕事)。自分で情報を転送するためにJSONを使用し、それを格納するためにSQLデータベースを使用したいと思います。
2)NoSQLアプローチ:あなたはそこであなた自身の質問に答えたと思います。私が好むアプローチは、SQLデータベースを今すぐセットアップすることです(必要な追加のリソースが問題にならない場合)。そうすれば、NoSQLのデータアクセス層をセットアップする手間を少し節約できます。おそらく、データベースを削除する必要があるからです。将来。フル機能のRDBMSが必要ない場合は、SQLiteが適しています。
スキーマの作成が面倒で、サーバーにJSONを保存したい場合は、単一のテーブルとサーバー側での解析を使用してJSONオブジェクト管理システムをハッシュし、関連するレコードを返すことができます。これを行うことは、ファイルの保存/削除よりも簡単で、必要な権限も少なくなります。
3)セキュリティ:現時点ではユーザー入力がないとおっしゃいました:
「このユースケースでは、ユーザーは何も入力できません」
ただし、質問の冒頭で、ユーザーは次のことができると述べました。
「あるマシンで作業し、保存してから、別のマシンに乗って、それらのものをロードします」
この場合、アプリケーションはユーザーデータを保存します。ユーザーが保存するための優れたGUIを提供していなくてもかまいません。複数の観点からセキュリティについて心配する必要があります。またJSON.parse
、同様のツールで解決するだけです。問題の半分(クライアント側)。
基本的に、サーバー上のPOSTリクエストの内容をチェックして、送信されるデータが有効で現実的であるかどうかを判断する必要もあります。データストアに保存する前に、JSONオブジェクト(または保存しようとしているデータ)の整合性をサーバーで検証する必要があります(phpまたは他の同様の言語を使用)。これは、誰かがjavascriptレイヤーを簡単にバイパスできるためです。 「セキュリティ」を設定し、POSTリクエストを改ざんすることを意図していなくても、アプリケーションはとにかく悪意のある入力をクライアントに送信します。
サーバー側を整理している場合は、JSON.parse
JSインジェクションを防ぐという点で少し時代遅れになります。それでも、データの一部を取得するためにリモートWebサイトAPIに依存している場合は特に、追加のレイヤーがあることは悪くありません。
これがお役に立てば幸いです。