Uvod u DataStax Java upravljački program za Apache Cassandra

1. Pregled

DataStax Distribution of Apache Cassandra je distribuirana baza podataka spremna za proizvodnju, kompatibilna s Cassandrom otvorenog koda. Dodaje nekoliko značajki koje nisu dostupne u distribuciji otvorenog koda, uključujući nadzor, poboljšanu seriju i obradu podataka u strujanju.

DataStax također nudi Java klijent za distribuciju Apache Cassandre. Ovaj je upravljački program vrlo prilagodljiv i može iskoristiti sve dodatne značajke u distribuciji DataStax, no u potpunosti je kompatibilan i s verzijom otvorenog koda.

U ovom uputstvu ćemo vidjeti kako koristiti DataStax Java upravljački program za Apache Cassandra za povezivanje s bazom podataka Cassandre i izvođenje osnovnih manipulacija podacima.

2. Ovisnost Mavena

Da bismo koristili DataStax Java upravljački program za Apache Cassandra, moramo ga uključiti u svoju stazu do razreda.

S Mavenom jednostavno moramo dodati java-driver-core ovisnost o našoj pom.xml:

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

3. Korištenje DataStax upravljačkog programa

Sad kad imamo vozača na mjestu, pogledajmo što možemo učiniti s njim.

3.1. Povežite se s bazom podataka

Da bismo se povezali s bazom podataka, stvorit ćemo CqlSession:

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

Ako izričito ne definiramo niti jednu kontaktnu točku, graditelj će to zadati 127.0.0.1:9042.

Stvorimo klasu konektora s nekim podesivim parametrima za izgradnju CqlSession:

javna klasa CassandraConnector {privatna sesija CqlSession; javna void veza (čvor niza, integrirani port, niz podatkovnih centara) {CqlSessionBuilder builder = CqlSession.builder (); builder.addContactPoint (novi InetSocketAddress (čvor, priključak)); builder.withLocalDatacenter (centar podataka); session = builder.build (); } public CqlSession getSession () {return this.session; } javna void close () {session.close (); }}

3.2. Izradite prostor s tipkama

Sad kad imamo vezu s bazom podataka, moramo stvoriti svoj prostor ključeva. Počnimo s pisanjem jednostavne klase spremišta za rad s našim prostorom ključeva.

Za ovaj vodič, koristit ćemo SimpleStrategy strategija replikacije s brojem replika postavljenim na 1:

javna klasa KeyspaceRepository {javna praznina createKeyspace (String keyspaceName, int numberOfReplicas) {CreateKeyspace createKeyspace = SchemaBuilder.createKeyspace (keyspaceName) .ifNotExists () .withSimpleStrategy (numberOfReplicas); session.execute (createKeyspace.build ()); } // ...}

Također, možemo počnite koristiti prostor tipki u trenutnoj sesiji:

javna klasa KeyspaceRepository {// ... public void useKeyspace (String keypace) {session.execute ("USE" + CqlIdentifier.fromCql (pace)); }}

3.3. Stvori tablicu

Upravljački program pruža izjave za konfiguriranje i izvršavanje upita u bazi podataka. Na primjer, prostor ključeva možemo postaviti za pojedinačnu upotrebu u svakoj izjavi.

Mi ćemo definirati Video model i stvorite tablicu koja će ga predstavljati:

javna klasa Video {privatni UUID id; privatni naslov niza; privatni trenutak izrade datum; // standardni geteri i postavljači}

Stvorimo našu tablicu, imajući mogućnost definiranja prostora ključeva u kojem želimo izvršiti upit. Napisat ćemo jednostavno VideoRepository klasa za rad s našim video podacima:

javna klasa VideoRepository {private static final String TABLE_NAME = "videos"; javna praznina createTable () {createTable (null); } javna nevažeća createTable (String tipkovnica) {CreateTable createTable = SchemaBuilder.createTable (TABLE_NAME) .withPartitionKey ("video_id", DataTypes.UUID) .withColumn ("title", DataTypes.TEXT) .withColumn ("create_date", DataTypes.date ", DataTypes.date", DataTypes.date ", DataTypes.date", DataTypes.date ", DataTypes.date", DataType.DATE.IMP. ); executeStatement (createTable.build (), prostor ključeva); } privatni ResultSet executeStatement (izjava SimpleStatement, prostor ključeva niza) {if (prostor ključeva! = null) {statement.setKeyspace (CqlIdentifier.fromCql (prostor ključeva)); } return session.execute (statement); } // ...}

Imajte na umu da preopterećujemo metodu createTable.

Ideja preopterećenja ove metode je imati dvije mogućnosti za stvaranje tablice:

  • Stvorite tablicu u određenom prostoru ključeva, šaljući naziv prostora ključeva kao parametar, neovisno o tome koji prostor ključeva trenutno koristi sesija
  • Počnite koristiti prostor ključeva u sesiji i koristite metodu za stvaranje tablice bez ikakvog parametra - u ovom slučaju tablica će se stvoriti u prostoru ključeva koji sesija trenutno koristi

3.4. Umetni podatke

Uz to, vozač pruža pripremljene i ograničene izjave.

The PreparedStatement obično se koristi za upite koji se često izvode, s promjenama samo u vrijednostima.

Možemo ispuniti PreparedStatement s vrijednostima koje su nam potrebne. Nakon toga ćemo stvoriti BoundStatement i izvrši ga.

Napišimo metodu za umetanje nekih podataka u bazu podataka:

javna klasa VideoRepository {// ... javni UUID insertVideo (Video video, String ključni prostor) {UUID videoId = UUID.randomUUID (); video.setId (videoId); RegularInsert insertInto = QueryBuilder.insertInto (TABLE_NAME) .value ("video_id", QueryBuilder.bindMarker ()) .value ("title", QueryBuilder.bindMarker ()) .value ("create_date", QueryBuilder.bindMarker) bindMarker SimpleStatement insertStatement = insertInto.build (); if (razmak ključeva! = null) {insertStatement = insertStatement.setKeyspace (razmak ključeva); } PreparedStatement pripremljenStatement = session.prepare (insertStatement); Izjava BoundStatement = PrepaStatement.bind () .setUuid (0, video.getId ()) .setString (1, video.getTitle ()) .setInstant (2, video.getCreationDate ()); session.execute (izjava); vratiti videoId; } // ...}

3.5. Podaci upita

Sada, dodajmo metodu koja stvara jednostavan upit za dobivanje podataka koje smo pohranili u bazu podataka:

javna klasa VideoRepository {// ... javni popis selectAll (Prostor tipki niza) {Select select = QueryBuilder.selectFrom (TABLE_NAME) .all (); ResultSet resultSet = executeStatement (select.build (), prostor tipki); Rezultat popisa = novi ArrayList (); resultSet.forEach (x -> result.add (novi Video (x.getUuid ("video_id"), x.getString ("naslov"), x.getInstant ("datum_stvaranja")))); povratni rezultat; } // ...}

3.6. Sve to zajedno

Na kraju, pogledajmo primjer koristeći svaki odjeljak koji smo obradili u ovom vodiču:

aplikacija javne klase {public void run () {CassandraConnector konektor = novi CassandraConnector (); konektor.connect ("127.0.0.1", 9042, "datacenter1"); CqlSession sesija = konektor.getSession (); KeyspaceRepository keyspaceRepository = novi KeyspaceRepository (sesija); keyspaceRepository.createKeyspace ("testKeyspace", 1); keyspaceRepository.useKeyspace ("testKeyspace"); VideoRepository videoRepository = novo VideoRepository (sesija); videoRepository.createTable (); videoRepository.insertVideo (novi Video ("Naslov videozapisa 1", Instant.now ())); videoRepository.insertVideo (novi Video ("Naslov videozapisa 2", Instant.now (). minus (1, ChronoUnit.DAYS))); Popis video zapisa = videoRepository.selectAll (); videos.forEach (x -> LOG.info (x.toString ())); konektor.close (); }}

Nakon što izvršimo naš primjer, kao rezultat, u zapisnicima možemo vidjeti da su podaci pravilno pohranjeni u bazi podataka:

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

4. Zaključak

U ovom smo tutorijalu pokrili osnovne koncepte DataStax Java upravljačkog programa za Apache Cassandra. Povezali smo se s bazom podataka i stvorili prostor ključeva i tablicu. Također, umetnuli smo podatke u tablicu i pokrenuli upit za njihovo preuzimanje.

Kao i uvijek, izvorni kod za ovu lekciju dostupan je na Githubu.


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