この質問データベースにとらわれないようにするつもりですが、取り組む必要のある興味深い問題があり、提案やフィードバックのためにフロアを開くと思いました。
フィードソースからデータをダウンロードして何らかのデータベースに保存できる必要があります。データを既存のデータにマージし、任意の日付のデータをクエリできる必要があります。私が話したいのは太字の部分です。
基本的に、この問題の要約は、オブジェクトグラフをOLTPデータベースに永続化し、一時的にクエリできるようにする必要があるということです。
1つのテーブルの単純なケースでは、この問題は非常に単純です。レコードの有効な期間を示す日付範囲があり、その範囲を渡して、この時点で有効な行のみを選択します。複数のテーブルがある場合、問題が発生します。
Order-*Itemという2つのテーブルがある場合を考えてみましょう。
注文を照会するとき、日付の変更と同じものをアイテムテーブルに適用できます。すべて順調ですが、注文を変更したい場合はどうなりますか?次に、注文行をコピーし、日付範囲を設定して、新しい行の有効なfromと新しい行の有効なtoがnowに設定されるようにする必要があります。また、アイテムをコピーする必要があります。モデルを変更する場合は、アイテムへの参照をコピーします。
この単純な場合でも、物事は複雑になり始めています。
自己参照オブジェクトグラフがあるため、問題が悪化します。上記のモデルを使用するには、Order- * Item-*Orderがあります。
あなたならどうしますか?行のバージョン管理と一時クエリが必要な場合、データベースをどのように構成しますか?