Die einfachste Sache der Spring Boot Starter Data Cassandra Abhängigkeit zu Ihrer Frühlings-Boot Anwendung, wie so hinzuzufügen, zu tun wäre ...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-cassandra</artifactId>
<version>1.3.5.RELEASE</version>
</dependency>
Darüber hinaus wird diese fügen Sie die Spring Data Cassandradependency zu Ihre Bewerbung.
Mit Spring Data Cassandra, können Sie Ihre Anwendung Schlüsselraum (n) unter Verwendung der CassandraClusterFactoryBean
(oder genauer gesagt, die Unterklasse ... CassandraCqlClusterFactoryBean
) konfigurieren, indem Sie die setKeyspaceCreations(:Set) Methode aufrufen.
Die KeyspaceActionSpecification Klasse ist ziemlich selbsterklärend. Sie können sogar eine mit der KeyspaceActionSpecificationFactoryBean erstellen, diese zu einer Set
hinzufügen und diese dann an die setKeyspaceCreations(..)
Methode über die CassandraClusterFactoryBean
übergeben.
Zum Generieren der Tabellen der Anwendung müssen Sie im Wesentlichen nur Ihre Anwendungsdomänenobjekte (Entitäten) mit der SD Cassandra @Table Annotation annotieren und sicherstellen, dass Ihre Domänenobjekte/Entitäten im CLASSPATH der Anwendung gefunden werden.
Insbesondere können Sie Ihre Anwendung Klasse erweitern die SD Cassandra AbstractClusterConfiguration Klasse. Dort finden Sie die getEntityBasePackages():String[]-Methode, die Sie überschreiben können, um die Paketspeicherorte anzugeben, die Ihre Anwendungsdomänenobjekt-/Entitätsklassen enthalten, die SD Cassandra dann für scan für @Table
Domain-Objekt/Entitäten verwendet.
Mit Ihrer Anwendung @Table
Domain-Objekt/Entitäten ordnungsgemäß identifiziert, stellen Sie die SD Cassandra SchemaAction-CREATE
mit der CassandraSessionFactoryBean
Methode, setSchemaAction(:SchemaAction). Dadurch werden Tabellen in Ihrem Schlüsselbereich für alle Domänenobjekte/Entitäten erstellt, die während des Scans gefunden wurden, und Sie erhalten identified den entsprechenden Schlüsselbereich auf Ihrem CassandraSessionFactoryBean
entsprechend.
Offensichtlich müssen Sie, wenn Ihre Anwendung mehrere Schlüsselbereiche erstellt/verwendet, für jeden Schlüsselbereich eine separate CassandraSessionFactoryBean
erstellen, wobei die entityBasePackages
Konfigurationseigenschaft für die Entitäten, die zu einem bestimmten Schlüsselbereich gehören, entsprechend für die zugehörigen Tabellen festgelegt wird erstellt in diesem Schlüsselbereich. Jetzt
...
Für die „zusätzlichen“ Tables pro Benutzer, das ist ein bisschen komplizierter und schwierig.
Möglicherweise können Sie Federprofile hier verwenden, Profile werden jedoch in der Regel nur beim Start angewendet. Wenn sich ein anderer Benutzer bei einer bereits laufenden Anwendung anmeldet, müssen Sie zur Laufzeit zusätzliche @Configuration
-Klassen zur Verfügung stellen. ApplicationContext
Ihre Frühlings-Boot Anwendung könnte einen Verweis auf eine AnnotationConfigApplicationContext
, injizieren und dann auf einem Anmeldeereignis verwenden, um programm register zusätzliche @Configuration
Klassen basierend auf den Benutzer, der in der Anwendung protokolliert. Sie müssen Ihre register(Class...)
Anrufe mit einer ApplicationContext.refresh()
folgen.
Sie müssen auch die Situation, in der die Tabellen bereits existieren, entsprechend behandeln.
Dies wird derzeit nicht in SD Cassandra unterstützt, aber siehe DATACASS-219 für weitere Details.
Technisch gesehen wäre es viel einfacher, alle möglichen Tabellen zu erstellen, die die Anwendung für alle Benutzer zur Laufzeit benötigt, und die Sicherheitseinstellungen von Cassandra zu verwenden, um den Zugriff einzelner Benutzer nach Rolle und zugewiesenen Berechtigungen einzuschränken.
Eine andere Option besteht möglicherweise darin, temporäre Keepspaces und/oder Tabellen nach Bedarf zu erstellen, wenn sich ein Benutzer bei der Anwendung anmeldet und sie beim Abmelden des Benutzers ablegt.
Offensichtlich gibt es hier eine Menge verschiedener Möglichkeiten, und es läuft mehr auf architektonische Entscheidungen, Kompromisse und Überlegungen hinaus, dann macht es technische Machbarkeit, also sei vorsichtig.
Hoffe, das hilft.
Prost!
Ich habe gefolgt, aber ich bin noch nicht Erstellen Sie Keyspace und Tabellen beim Start der Anwendung. Gibt es noch etwas, das ich vermisse? Bitte führen Sie mich. – Milesh