2016-05-24 15 views
0

Ich möchte Datenbank Sharding wie https://github.com/thiagopradi/octopus in Revel + Gorm (oder einem anderen ORM in Golang) einrichten.Wie kann ich die Datenbankverbindung wechseln und sie mit Model in Golang teilen? (Revel + Gorm)

Ich werde db Verbindungszeichenfolge in Sicherheitsfilter (das war ein benutzerdefinierter Filter, hinzugefügt nach Revel param-Filter) erhalten. Jetzt muss ich db-Verbindung im nächsten benutzerdefinierten Filter namens db Filter

wechseln Und müssen auch db Verbindungspool in Revel Anwendung starten zu implementieren.

Antwort

1

Zunächst ist bereiten Sie DB-Verbindung auf der init (nur einmal nennen):

db1, err := gorm.Open(dbdriver, dboption) //your main server 
db2, err := gorm.Open(dbdriver, dboption) //your sharding 1 
db3, err := gorm.Open(dbdriver, dboption) //your sharding 2 

Und auf Ihrem db Filter nur wählen, die zwischen DB1, DB2 oder db3 Sie von Ihrem Modell verwendet werden soll. Das ist alles.

Gorm schon machen den Pool für Sie, so müssen Sie nicht aufpassen.

+0

Ich weiß nicht die shard db Optionen wie Host, db Name bis Anfrage über den Sicherheitsfilter. Also kann ich keine DB-Verbindung innerhalb von Init –

+0

erstellen, warum Sie nicht wissen? Ist es eine Anwendung, die du bauen wirst, nicht? – Apin

+0

Ich werde Benutzerdatenbankdetails von anderem Dienst (Clusterdienst) erhalten. Das wird im Sicherheitsfilter abgerufen. –