Bevezetés a DataStax Java illesztőprogramhoz az Apache Cassandra programhoz

1. Áttekintés

Az Apache Cassandra DataStax terjesztése egy gyártásra kész elosztott adatbázis, amely kompatibilis a nyílt forráskódú Cassandrával. Hozzáad néhány olyan funkciót, amelyek nem érhetők el a nyílt forráskódú disztribúcióban, beleértve a megfigyelést, a továbbfejlesztett kötegelt és adatfolyam-adatfeldolgozást.

A DataStax Java klienst is biztosít az Apache Cassandra terjesztéséhez. Ez az illesztőprogram nagyon jól hangolható, és kihasználhatja a DataStax disztribúció összes extra funkcióját, ugyanakkor teljes mértékben kompatibilis a nyílt forráskódú verzióval is.

Ebben az oktatóanyagban meglátjuk hogyan kell használni a DataStax Java illesztőprogramot az Apache Cassandra programhoz csatlakozni egy Cassandra adatbázishoz és elvégezni az alapvető adatkezelést.

2. Maven-függőség

Ahhoz, hogy a DataStax Java illesztőprogramot használhassuk az Apache Cassandra alkalmazáshoz, be kell építenünk az osztályútvonalunkba.

Maven-rel egyszerűen hozzá kell adnunk a java-driver-core függőség a mi pom.xml:

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

3. A DataStax illesztőprogram használata

Most, hogy a sofőr a helyén van, nézzük meg, mit tehetünk vele.

3.1. Csatlakozás az adatbázishoz

Az adatbázishoz való kapcsolódáshoz létrehozunk egy CqlSession:

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

Ha nem határozunk meg kifejezetten egyetlen kapcsolattartási pontot sem, akkor az építtető alapértelmezés szerint ezt állítja be 127.0.0.1:9042.

Hozzunk létre egy csatlakozó osztályt néhány konfigurálható paraméterrel a CqlSession:

nyilvános osztályú CassandraConnector {privát CqlSession munkamenet; public void connect (Karakterlánc-csomópont, Egész port, String dataCenter) {CqlSessionBuilder builder = CqlSession.builder (); builder.addContactPoint (új InetSocketAddress (csomópont, port)); builder.withLocalDatacenter (dataCenter); munkamenet = builder.build (); } public CqlSession getSession () {return this.session; } public void bezárás () {session.close (); }}

3.2. Hozzon létre Kulcsterületet

Most, hogy van kapcsolatunk az adatbázissal, létre kell hoznunk a kulcsterületünket. Kezdjük azzal, hogy írunk egy egyszerű lerakat osztályt a billentyűtér használatához.

Ehhez az oktatóanyaghoz használjuk a SimpleStrategy replikációs stratégia az 1-re állított replikák számával:

public class KeyspaceRepository {public void createKeyspace (String keyspaceName, int numberOfReplicas) {CreateKeyspace createKeyspace = SchemaBuilder.createKeyspace (keyspaceName) .ifNotExists () .withSimpleStrategy (numberOfReplic); session.execute (createKeyspace.build ()); } // ...}

Azt is megtehetjük kezdje el használni a kulcsteret az aktuális munkamenetben:

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

3.3. Táblázat létrehozása

Az illesztőprogram utasításokat ad az adatbázisban található lekérdezések konfigurálásához és végrehajtásához. Például, beállíthatjuk a kulcsterületet, hogy az egyes utasításokban egyedileg használjuk.

Meghatározzuk a Videó modellezzen és hozzon létre egy táblázatot az ábrázolásához:

public class Video {private UUID azonosító; privát húr cím; privát Azonnali létrehozásDátum; // szabványos mérőeszközök és beállítók}

Készítsük el a táblánkat, megadva azt a kulcstartományt, amelyben a lekérdezést el akarjuk hajtani. Írunk egy egyszerűt VideoRepository osztály a videoadatainkkal való munkához:

public class VideoRepository {private static final String TABLE_NAME = "videók"; public void createTable () {createTable (null); } public void createTable (String kulcstér) {CreateTable createTable = SchemaBuilder.createTable (TABLE_NAME) .withPartitionKey ("video_id", DataTypes.UUID) .withColumn ("title", DataTypes.TEXT) .withColumn ("creation_date", ); executeStatement (createTable.build (), kulcstér); } privát ResultSet executeStatement (SimpleStatement utasítás, String kulcstér) {if (kulcstér! = null) {utasítás.setKeyspace (CqlIdentifier.fromCql (kulcstér)); } return session.execute (utasítás); } // ...}

Vegye figyelembe, hogy túlterheljük a módszert táblázat létrehozása.

A módszer túlterhelésének ötlete az, hogy két lehetőség áll rendelkezésre a táblázat létrehozásához:

  • Hozzon létre egy táblázatot egy meghatározott kulcsterületen, a kulcsterület nevét küldve paraméterként, függetlenül attól, hogy mely munkaterületet használja a munkamenet
  • Kezdje el használni a kulcsteret a munkamenetben, és használja a metódust a tábla létrehozásához paraméter nélkül - ebben az esetben a tábla abban a kulcsterületben jön létre, amelyet a munkamenet jelenleg használ

3.4. Adatok beillesztése

Ezenkívül az illesztőprogram elkészített és korlátozott utasításokat ad meg.

A PreparedStatement általában gyakran végrehajtott lekérdezésekhez használatos, csak az értékekben változnak.

Kitölthetjük a PreparedStatement a szükséges értékekkel. Ezt követően létrehozunk egy BoundStatement és végrehajtja.

Írjunk egy módszert néhány adat beillesztésére az adatbázisba:

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 (kulcstér! = null) {insertStatement = insertStatement.setKeyspace (kulcstér); } PreparedStatement készítettStatement = session.prepare (insertStatement); BoundStatement utasítás = előkészítettStatement.bind () .setUuid (0, video.getId ()) .setString (1, video.getTitle ()) .setInstant (2, video.getCreationDate ()); session.execute (utasítás); return videoId; } // ...}

3.5. Lekérdezés adatai

Most adjunk hozzá egy olyan módszert, amely egyszerű lekérdezést hoz létre az adatbázisban tárolt adatok megszerzéséhez:

public class VideoRepository {// ... public List selectAll (String keypace) {Select select = QueryBuilder.selectFrom (TABLE_NAME) .all (); ResultSet resultSet = executeStatement (select.build (), kulcstér); Lista eredménye = new ArrayList (); resultSet.forEach (x -> result.add (új videó (x.getUuid ("video_id"), x.getString ("title"), x.getInstant ("creation_date")))); visszatérési eredmény; } // ...}

3.6. Összedobva az egészet

Végül nézzünk meg egy példát az ebben az oktatóanyagban ismertetett szakaszok használatával:

public class Alkalmazás {public void run () {CassandraConnector csatlakozó = new CassandraConnector (); connector.connect ("127.0.0.1", 9042, "adatközpont1"); CqlSession munkamenet = connector.getSession (); KeyspaceRepository keyspaceRepository = új KeyspaceRepository (munkamenet); keyspaceRepository.createKeyspace ("testKeyspace", 1); keyspaceRepository.useKeyspace ("testKeyspace"); VideoRepository videoRepository = új VideoRepository (munkamenet); videoRepository.createTable (); videoRepository.insertVideo (új videó ("Videó címe 1", Instant.now ())); videoRepository.insertVideo (új videó ("2. videó címe", azonnali.now (). mínusz (1, ChronoUnit.DAYS))); Videók felsorolása = videoRepository.selectAll (); videos.forEach (x -> LOG.info (x.toString ())); csatlakozó.zárja (); }}

Miután végrehajtottuk a példánkat, ennek eredményeként láthatjuk a naplókban, hogy az adatokat megfelelően tárolták az adatbázisban:

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

4. Következtetés

Ebben az oktatóanyagban bemutattuk az Apache Cassandra DataStax Java illesztőprogramjának alapelveit. Csatlakoztunk az adatbázishoz, és létrehoztunk egy kulcsteret és táblázatot. Ezenkívül beillesztettünk adatokat a táblázatba, és lekérdezéssel futtattuk azokat.

Mint mindig, az oktatóanyag forráskódja is elérhető a Githubon.