2015-09-03 15 views
5

Ich kann keine aktualisierte Ressource/Leitfaden, Plugin oder ein Beispiel über Grails Multitenancy mit mehreren Datenbanken (eine pro Mandant) zu finden scheinen. Ich bin derzeit mit https://grails.org/plugin/multi-tenant-single-db und der veralteten https://grails.org/plugin/multi-tenant-core fest.Grails Multi-Tenancy mit mehreren Datenbanken

Wie führt man eine Datenbankumschaltung durch, die vom angemeldeten Benutzer abhängt?

+1

Multitenant Plugins sind veraltet und verwenden Hibernate 3. Ich habe eine Anwendung, die auf Grails 2.3 basierend auf einzelnen DB-Plugin ist. DB pro Mandanten-Plugin ist noch veralteter. Hibernate 4 unterstützt jedoch DB pro Mandanten und Schema pro Mandanten basierend Multitenancy. Sie können Gorm-Aufrufe abfangen und dazu AST-Transformationen verwenden. Aber es ist eine zeitaufwendige Arbeit. Sie müssen Hibernate-Dokumente durchlaufen. –

+0

@EjazAhmed Danke! Würde wahrscheinlich den Ansatz von Hibernate 4 ausprobieren. – renz

+0

@renz hast du eine funktionierende Lösung dafür gefunden? – lifeisfoo

Antwort

3

Grails abstrahiert eine Menge Hibernate-Sachen, so dass es einen Impedanzunterschied zwischen Gorm und Hibernate gibt. Ein solches Problem ist das Laden mehrerer Datenquellen basierend auf dem Mandanten. Wenn Sie Mieter pro DB-Strategie gehen, bereiten Sie sich auf eine hard battle vor. Abgesehen von der damit verbundenen Komplexität ist ein langer Weg in Sicht, da die DB-Wartung in dieser Strategie ziemlich kostspielig ist. Die meisten modernen Anwendungen verwenden Single-DB-Single-Schema-Ansatz und ich habe diesen Ansatz auch in my plugin verwendet. Momentan löst dieses Plugin den Tenant mit Spring Security. Der Grund für diesen Ansatz war die Anwendung, an der ich arbeitete, die eine SaaS-App war, die von einer einzelnen Domäne aus bedient wurde. Wenn Sie von mehreren Domains bedienen müssen, sind in diesem Plugin geringfügige Änderungen erforderlich.

In Bezug auf Migration zu Grails3 wurde es im März 2015 veröffentlicht und über den Zeitraum von einem Jahr hat es verschiedene Verbesserungen und Fehlerbehebungen durchgelaufen. Es ist stabil genug, um darauf zu vertrauen und außerdem hat es fast alle notwendigen Plugins bereits portiert. Wenn Sie eine neue Anwendung erstellen, müssen Sie die Grails3-Art gehen. Wenn Sie eine vorhandene Anwendung haben, können Sie in Erwägung ziehen, nach grails3 zu migrieren.