Úvod do ovládača Java DataStax Java pre Apache Cassandra

1. Prehľad

Distribúcia DataStax of Apache Cassandra je distribuovaná databáza pripravená na produkciu, kompatibilná s open-source Cassandrou. Pridáva niekoľko funkcií, ktoré nie sú k dispozícii v distribúcii open-source, vrátane monitorovania, vylepšenej dávky a spracovania streamovaných údajov.

DataStax tiež poskytuje klienta Java pre svoju distribúciu Apache Cassandra. Tento ovládač je vysoko vyladiteľný a môže využívať všetky ďalšie funkcie v distribúcii DataStax, napriek tomu je plne kompatibilný aj s verziou open-source.

V tomto návode uvidíme ako používať DataStax Java Driver pre Apache Cassandra pripojiť sa k databáze Cassandra a vykonať základnú manipuláciu s údajmi.

2. Závislosť od Maven

Aby sme mohli použiť DataStax Java Driver pre Apache Cassandra, musíme ho zahrnúť do našej triedy.

S Mavenom jednoducho musíme pridať java-driver-jadro závislosť na našom pom.xml:

 com.datastax.oss java-driver-core 4.1.0 com.datastax.oss java-driver-query-builder 4.1.0 

3. Používanie ovládača DataStax

Teraz, keď máme nainštalovaný ovládač, pozrime sa, čo s ním môžeme urobiť.

3.1. Pripojte sa k databáze

Aby sme sa mohli pripojiť k databáze, vytvoríme a CqlSession:

CqlSession session = CqlSession.builder (). Build ();

Ak výslovne nedefinujeme žiadny kontaktný bod, použije sa predvolene staviteľ 127.0.0.1:9042.

Vytvorme triedu konektorov s niektorými konfigurovateľnými parametrami na zostavenie CqlSession:

verejná trieda CassandraConnector {súkromná relácia CqlSession; public void connect (reťazcový uzol, celočíselný port, reťazec dataCenter) {CqlSessionBuilder builder = CqlSession.builder (); builder.addContactPoint (nová InetSocketAddress (uzol, port)); builder.withLocalDatacenter (dataCenter); session = builder.build (); } public CqlSession getSession () {return this.session; } public void close () {session.close (); }}

3.2. Vytvorte kľúčový priestor

Teraz, keď máme pripojenie k databáze, musíme vytvoriť náš priestor kľúčov. Začnime tým, že napíšeme jednoduchú triedu úložiska pre prácu s našim priestorom kľúčov.

Pre tento návod použijeme SimpleStrategy replikačná stratégia s počtom replík nastaveným na 1:

verejná trieda KeyspaceRepository {public void createKeyspace (reťazec keyspaceName, int numberOfReplicas) {CreateKeyspace createKeyspace = SchemaBuilder.createKeyspace (keyspaceName) .ifNotExists () .withSimpleStrategy (numberOfReplicas); session.execute (createKeyspace.build ()); } // ...}

Tiež môžeme začať používať priestor klávesov v aktuálnej relácii:

public class KeyspaceRepository {// ... public void useKeyspace (String keyspace) {session.execute ("USE" + CqlIdentifier.fromCql (keyspace)); }}

3.3. Vytvorte tabuľku

Ovládač poskytuje príkazy na konfiguráciu a vykonávanie dotazov v databáze. Napríklad, môžeme nastaviť kľúčový priestor tak, aby sa používal jednotlivo v každom výpise.

Definujeme Video model a vytvorte tabuľku, ktorá ju bude reprezentovať:

public class Video {private UUID id; súkromný názov reťazca; súkromné ​​Okamžité vytvorenieDátum; // štandardné getre a setre}

Vytvorme našu tabuľku, ktorá má možnosť definovať kľúčový priestor, v ktorom chceme vykonať dopyt. Napíšeme jednoduchý Úložisko videí trieda pre prácu s našimi video dátami:

verejná trieda VideoRepository {private static final String TABLE_NAME = "videos"; public void createTable () {createTable (null); } public void createTable (String keyspace) {CreateTable createTable = SchemaBuilder.createTable (TABLE_NAME) .withPartitionKey ("video_id", DataTypes.UUID) .withColumn ("title", DataTypes.TEXT) .withColumn ("creation_date", DataTypes.TEST ); executeStatement (createTable.build (), kľúčový priestor); } private ResultSet executeStatement (príkaz SimpleStatement, reťazec kľúčový priestor) {if (keyspace! = null) {statement.setKeyspace (CqlIdentifier.fromCql (keyspace)); } návrat session.execute (výpis); } // ...}

Všimnite si, že metódu preťažujeme createTable.

Myšlienkou preťaženia tejto metódy je mať dve možnosti vytvorenia tabuľky:

  • Vytvorte tabuľku v konkrétnom priestore kľúčov a ako parameter pošlite názov priestoru kľúčov bez ohľadu na to, aký priestor kľúčov relácia momentálne používa
  • Začnite v relácii používať kľúčový priestor a použite metódu na vytvorenie tabuľky bez akýchkoľvek parametrov - v takom prípade sa tabuľka vytvorí v kľúčovom priestore, ktorý relácia momentálne používa.

3.4. Vložte údaje

Vodič navyše poskytuje pripravené a ohraničené vyhlásenia.

The Pripravené vyhlásenie sa zvyčajne používa na často vykonávané dotazy so zmenami iba v hodnotách.

Môžeme naplniť Pripravené vyhlásenie s hodnotami, ktoré potrebujeme. Potom vytvoríme a Viazané vyhlásenie a vykonať to.

Napíšme spôsob vloženia niektorých údajov do databázy:

public class VideoRepository {// ... public UUID insertVideo (Video video, String keyspace) {UUID videoId = UUID.randomUUID (); video.setId (videoId); RegularInsert insertInto = QueryBuilder.insertInto (TABLE_NAME) .value ("video_id", QueryBuilder.bindMarker ()) .value ("title", QueryBuilder.bindMarker ()) .value ("creation_date", QueryBuilder.bindMarker (); SimpleStatement insertStatement = insertInto.build (); if (keyspace! = null) {insertStatement = insertStatement.setKeyspace (keyspace); } PreparedStatement readyStatement = session.prepare (insertStatement); Vyhlásenie BoundStatement = readyStatement.bind () .setUuid (0, video.getId ()) .setString (1, video.getTitle ()) .setInstant (2, video.getCreationDate ()); session.execute (vyhlásenie); vrátiť videoId; } // ...}

3.5. Údaje o dopyte

Teraz pridajme metódu, ktorá vytvorí jednoduchý dotaz na získanie údajov, ktoré sme uložili v databáze:

public class VideoRepository {// ... public List selectAll (String keyspace) {Select select = QueryBuilder.selectFrom (TABLE_NAME) .all (); ResultSet resultSet = executeStatement (select.build (), kľúčový priestor); Výsledok zoznamu = nový ArrayList (); resultSet.forEach (x -> result.add (new Video (x.getUuid ("video_id"), x.getString ("title"), x.getInstant ("creation_date")))); návratový výsledok; } // ...}

3.6. Dávať to všetko dokopy

Na záver si ukážeme príklad použitia každej sekcie, ktorej sme sa venovali v tomto výučbe:

public class Application {public void run () {CassandraConnector connector = new CassandraConnector (); connector.connect ("127.0.0.1", 9042, "datacenter1"); CqlSession session = connector.getSession (); KeyspaceRepository keyspaceRepository = nový KeyspaceRepository (relácia); keyspaceRepository.createKeyspace ("testKeyspace", 1); keyspaceRepository.useKeyspace ("testKeyspace"); VideoRepository videoRepository = nový VideoRepository (relácia); videoRepository.createTable (); videoRepository.insertVideo (nové video („Názov videa 1“, Instant.now ())); videoRepository.insertVideo (nové video ("Názov videa 2", Instant.now (). mínus (1, ChronoUnit.DAYS))); Zoznam videí = videoRepository.selectAll (); videos.forEach (x -> LOG.info (x.toString ())); connector.close (); }}

Po vykonaní nášho príkladu vo výsledku uvidíme v protokoloch, že údaje boli správne uložené v databáze:

INFO com.baeldung.datastax.cassandra.Application - [id: 733249eb-914c-4153-8698-4f58992c4ad4, názov: Video Title 1, creationDate: 2019-07-10T19: 43: 35.112Z] INFO com.baeldung.datastax. cassandra.Application - [id: a6568236-77d7-42f2-a35a-b4c79afabccf, názov: Video Title 2, creationDate: 2019-07-09T19: 43: 35.181Z]

4. Záver

V tomto tutoriáli sme sa venovali základným konceptom DataStax Java Driver pre Apache Cassandra. Pripojili sme sa k databáze a vytvorili sme kľúčový priestor a tabuľku. Tiež sme vložili údaje do tabuľky a spustili dotaz na ich načítanie.

Zdrojový kód tohto tutoriálu je ako vždy k dispozícii na stránkach Github.


$config[zx-auto] not found$config[zx-overlay] not found