いつも通り「場合による…」。
受け取るデータの性質上、スキーマが固定されていない場合や、スキーマがビジネス ロジックやドメイン ロジックの一部として頻繁に変更される場合は、それを管理するソリューションを設計することをお勧めします。設計時にスキーマがわからないデータを格納することは、StackOverflow で長期にわたって議論されています。「プロパティ バッグ」、「エンティティ属性値」、または EAV を探して、さまざまな質問と回答を参照してください。
このアプローチであきらめるのは、Web サービス レイヤーで、受け取ったデータが合意されたインターフェイス コントラクトを満たしていることを確認する機能です。これは、あらゆる種類のエキサイティングなバグを回避するのに役立ちます。無効な XML を受け取った場合、システムはどうすればよいでしょうか? 合意されたスキーマ/dtd がなければ、あらゆる種類の他のチェックをコードに組み込む必要があります。
データベース レベルでは、通常、「従来の」行と列の関係なしでデータを格納するために、リレーショナル モデルの側面 (したがって SQL の能力) を放棄することになります。多くの場合、クエリが難しくなり、標準への準拠が犠牲になる可能性があります (たとえば、ベンダー固有の拡張機能を使用するなど)。
技術的な理由でデータが変更された場合 (つまり、変更するのはデータの性質ではなく、これを心配するのは技術チェーンだけです) ではなく、バージョン管理の概念を組み込み、「厳密に型付けされた"サービス/データのバージョンが異なります。これは手間がかかるように思えますが、スキーマ検証、リレーショナル データベース モデル、および単純さに依存することの利点は、通常、適切なトレードオフになります...