2017-02-28 3 views
0

Ich erstelle ein Projekt, das in der Lage sein sollte, verschiedene Datenbanken für die Persistenz von Daten zu verwenden. Ich habe ein DAO-Muster implementiert, aber ich habe ein Problem, wenn ich mit der ID in der Struktur arbeite, da zum Beispiel MongoDB BSON verwendet, während SQL-Datenbanken uint verwenden.Arbeiten mit mehreren Datenbanken (DAO-Muster)

Welche Lösung empfehlen Sie, das ID-Feld in der Struktur zu implementieren.

Was ich mir vorstellen kann, ist ein ID-Objekt zu erstellen, das Felder für BSON und UInt-IDs mit GetBSON, GetUint-Methoden und einer GetID-Methode enthält, die entweder BSON oder Uint in MD5 (oder eine andere Kodierung) codiert GetBSON- und GetUint-Methoden, um mit den Datenbanken und der GetID-Methode zu arbeiten, um mit der Anwendung zu arbeiten und sie über die REST-API zu senden.

Antwort

0

In Fällen wie diesem ist es am besten, eine universelle Kennung (UID) zu verwenden. Es gibt viele Möglichkeiten, dies zu tun, obwohl mein persönlicher Favorit nur UUID v4 ist. Sie können die vollständige UUID-Spezifikation hier https://tools.ietf.org/html/rfc4122 lesen.

Konfigurieren Sie einfach Ihre SQL-Tabellen und den Code, um die Eindeutigkeit mit diesem Bezeichner zu gewährleisten, und Sie können mühelos zwischen Datenbanken nach dem jeweils gewünschten Zugriffsmuster suchen.

z.B.

SQL 

ID(Primary Key) | UID (unique) 
     0  | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 

MONGO 

{ 
    _id: ObjectID(), 
    uid: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" 
} 

jetzt nur auf UID nur suchen und Sie können Datenbank Agnostic auf der höheren Ebene sein.

+0

Wie wirkt sich diese Technik auf die Leistung verschiedener Datenbanken aus? und danke. –

Verwandte Themen