Open4

DynamoDB と Clean Architecture の Repository について

niwa3niwa3

Clean Archtectureでは、関心の分離のために外部サービスからのデータ取得、データ格納はInterface -> Gateway -> Repositoryの中にまとめることが一般的であるはず。
DynamoDBもこの考えに従って、Repositoryに処理をまとめているのだが、如何せんテーブルを結合して検索ができないため、Repositoryの単位がDynamoDBのテーブルと一致する形になってしまいがちな気がする。

niwa3niwa3

そうすると、EntityのModelと乖離が生まれてきてしまい、結局はただCreateしたいだけでも、Usecase内で色々ごちゃごちゃとRepositoryを呼ばなくてはならないことが起きてしまった。

niwa3niwa3

このときに、Repository内で諦めて複数のテーブルに複数回のリクエストを書く形で、EntityのModelとRepositoryが一致するようにするべきなのだろうか。
それとも、Serviceレイヤーみたいに1階層間に挟んでModelとDynamoDBのテーブル構造の差分を吸収する層として役割を持たせるべきなのだろうか。

niwa3niwa3

RDBとの互換を考えるとRepository内で諦めて複数のテーブルに複数回のリクエストを書くような構造にした方が後々良いのかもしれない。