Ich versuche, eine generische Wrapper-Bibliothek (C# /. NET) für AWS DynamoDB zu erstellen, die als DAL (Data Access Layer) fungieren kann. Die Anwendungen, die diese Bibliothek verwenden, sind nicht eng mit AWS-Bibliotheken gekoppelt, da die Möglichkeit besteht, dass sie später geändert werden können.Amazon Dynamo DB persistent ORM
Die Struktur von Methoden aus der Hüllklasse werden sollen InsertItem < T> (Objekt), UpdateItem < T> (Objekt) , DeleteItem < T> (id/Objekt exponiert), Liste < T> GetAll(), T GetByParameter < T> (Id).
Ich sehe, dass es drei Ansätze gibt, AWS DynamoDB-Dienste mit AWSSDK zu verwenden.
Approach (1): Low-Level-Zugriff - konvertiert Modell aws hashmap Eingangsstruktur und ruft getItem()/putItem().
Approach (2): High Level Access-Dokument verwenden - konvertieren Modell aws Dokumentenmodell und Dokumentobjekt aws vorbei.
Approach (3): Hochrangigen Zugang Persistenz mit - Mit Attribut DynamoDBTable in Modellmodell DynamoDB Tabelle abzubilden und Linq Betrieb mit bekommen/Aktualisierungstabelle.
In Ansatz (1) & (2) finde ich es schwierig, das Modell DynamoDB-Tabelle zuzuordnen. Im Ansatz (3) sehe ich, dass ich die DynamoDB-Attribute in die Modellklasse in der Anwendung einbeziehen muss, um sie eng gekoppelt zu machen.
Gibt es eine Möglichkeit, in diesen Fällen ein Mapping in Runtime zu erstellen, oder gibt es einen anderen Ansatz?
Ich dachte auch, ob ich json serialize/deserialize das Modell und in dynamoDB einfügen (In diesem Fall gäbe es nur 2 Spalten - ID, JSON Körper für jedes Modell).
Bitte korrigieren Sie mich, wenn ich falsch liege oder etwas verpasst habe.
Wir haben an Dynamo geschrieben, aber nicht gelesen. Unter Verwendung des Persistenzmodells haben wir eine generische Klasse an der DAL (nennen wir sie Log), die die SDK-Attribute hat und die Anwendung in jeder beliebigen Klasse übergeben kann, und sie wird in der T-Eigenschaft auf dem Log-Objekt gesetzt. Leider versuche ich jetzt, diese Daten zu lesen, und es erweist sich mit Persistenz als schwierig, da ich alle Protokolle sehen möchte, unabhängig von der T auf dem Schreiben verwendet. Das Erstellen einer separaten Leseklasse mit T, die durch Zeichenfolge, Objekt oder Dokument ersetzt wurde, hat nicht funktioniert. Wird Nicht-Persistenz für Lesevorgänge versuchen und wird bei Erfolg aktualisiert. –
Danke für Updates. Lass es mich wissen, wenn du andere Informationen hast. – Sri