過去にNoSQLデータベースの抽象化レイヤーの作成について質問がありましたが、それらは非常に異なるため、提供される機能のほとんどを見逃さずに実際に実現することはできませんでした。
これは最近、MicrosoftのAzure Table Storageとほぼ同じに見えるAmazonのDynamoDbの導入によって変更されたため、オープンソースの抽象化レイヤーを作成することを検討しています。抽象化は、雇用主にこれらの「新しい」テクノロジーを採用するように説得しようとするときに、より多くの力を与えるので、誰もが抽象化を愛しています。
私の知る限り
AzureTable.RowKey == DynamoDB.HashKey
AzureTable.PartitionKey == DynamoDB.RangeKey
この抽象化レイヤーを作成することで、どのような問題が発生し、どのような機能が失われる可能性があるかを誰かが知ることができますか?
どちらも同じようにデータを分割しているように見え、クエリは似ています。
私が最初に気付いたのは、Microsoftのc#SDKではクラスの派生元が必要でTableServiceEntity
あるのに対し、Amazonのc#オブジェクト永続化フレームワークではプロパティの属性が使用されているHashKey
ことRangeKey
です。