特定のデータベーステクノロジに関連付けられていない一般的な用語で答えようとします(私はMS SQL Server DWHの担当者です)。
あなたの特定の質問に対処するために...
「1.予定が後でキャンセル済みとしてマークされるように、データが変更される可能性があります。スタースキーマでデータを変更することはお勧めできません。そうでない場合は、より良いアプローチです。」
DWHesファクトテーブルとディメンションテーブルには、主に2つのテーブルタイプがあります。
スタースキーマでファクトまたはディメンションデータを変更することは完全に有効です。DWHからディメンションレコードを削除することはお勧めできません。
データへのタイプ1(履歴の上書き)またはタイプ2(履歴の保持)の変更(緩やかに変化するディメンション)を選択する必要があります。
ここでファクトレコードを削除することを提案しているかどうかはわかりませんが、各ファクトレコードにフラグを付けて、予定のステータス(予約済み、使用済み、キャンセル済みなど)と、患者がキャンセルしたかどうかを示すことをお勧めします。次に、アポイントメントにより、ファクトレコードがstatus=bookedからstatus=cancelledに変更されます。ファクトレコードを実際に削除するのではありません。このようにして、キャンセルされた予定の数を追跡することもできます。
複雑さを追加するには、ファクトテーブルに履歴を保持して、「as at」の位置を表示できるようにします。つまり、特定の時点でのデータベースの状態を表示できます。これにより、発生する変更の数に応じて、データベースのサイズがかなり大きくなります。
「2.データがメインデータベースに追加されると、ファクトテーブルへのデータはバックグラウンドタスクによって挿入されます。アプリケーションではほとんどいつでも再投稿が行われるため、ファクトテーブルへのデータの継続的な挿入が問題になります。」
更新の頻度/最新のデータを持つことの重要性について話し合う必要があります。一般的に(あなたがそうだと確信しているように)DWHeはOLTPシステムではないため、常に新しいデータで更新され、最新のデータでレポートできるようになっているわけではありません。それが本当に必要な場合は、OLTPシステムが必要です。
そうは言っても、20分ごとに更新を行うDWHを実装しました。これには、OLAPキューブが上にあるSQLDWHがありました。mysqlにOLAPテクノロジがあるかどうかはわかりませんが、オープンソースバージョンが利用できると思います。OLAPにはいくつかの種類があり(MOLAP / ROLAP / HOLAP)、パフォーマンス/データの最新性にさまざまな焦点を当てています。
特にユーザーが多い場合は、通常、DWH自体をレポートDBレイヤーから分離する必要があります。
「3.mysqlに実装することを計画しています。誰かが、この種の構造を持つmysqlのパフォーマンスに関連する投稿を教えてくれるなら、それは素晴らしいことです。また、このスキーマInnodbまたはMyisamを実装するためのより良いエンジンです。」
私はこの質問を伝えなければなりません。以前はinnoDBとMyISAMについて少し知っていましたが、このテクノロジーを試してから約8年になります。
スタースキーマDWHデザインに関する非常に優れた本は、DWHデザインブックのラルフキンボールによるものです。