Skip to main content
Skip table of contents

Apache Cassandra Connector

Dieser Adapter ermöglicht die Verbindung mit einer Apache Cassandra-Datenbank und ermöglicht die Kommunikation über CQL-Anweisungen.

Eigenschaften (Properties)

Operation

Vom Adapter ausgeführte Operation

Mögliche Werte:

  • Execute: Führt das im Input-Dokument angegebene Statement aus

  • Terminate: Schließt und entfernt das Connection Pooling mit allen offenen Verbindungen

Parameter

Adapter

Adapter-Hauptklasse (nicht verändern!)

Mögliche Werte:  de.softproject.integration.adapter.apache.cassandra.ApacheCassandraConnectorAdapter: Hauptklasse (Standard)

host

Host innerhalb des Clusters

Cluster cluster1 = Cluster.builder().addContactPoints("172.30.210.11","172.30.210.12").build();

(info) Sie können mehrere IPs oder Host-Namen hinzufügen, die verschiedenen Servern entsprechen, die als ausführbare Datei von Apache Cassandra innerhalb des Moduls ausgeführt werden.

portNative-Protocol-Port
login

Login, wenn das Cluster Zugangsdaten erfordert

Mögliche Werte: Beliebige Zeichenkette mit dem Login, z. B.  myLogin

password

Passwort, wenn das Cluster Zugangsdaten erfordert

Mögliche Werte: Beliebige Zeichenkette mit dem Passwort, z. B.  myPassword

Statuswerte

1

Die Adapter-Operation wurde erfolgreich ausgeführt

-1Bei der Ausführung des Adapters kam es zu einem Fehler

Input

Der Adapter erwartet ein spezifisches XML-Dokument als Input:

Beispiel-Input

XML
<RootElement>
    <Preparedstatement resulttag="result element name" timeZone="timezone">
        <Cql>
			select * from keyspace.table;
		</Cql>
		<Parameters>
			<parameter index="n" type="Cassandra_Type">Value</parameter>
		</Parameters>
    </Preparedstatement>
    <Preparedstatement resulttag="result 2 element name" timeZone="timezone 2">
       <Cql>
			INSERT INTO keyspace.table (id, lastname, firstname) VALUES (uuid(), myLastname,'myFirstName');
		</Cql>
    </Preparedstatement>
    ....
</RootElement>

Das Input-XML-Dokument muss folgenden Regeln entsprechen:

Element / AttributBeschreibung
resulttag Erforderliches Attribut des Elements Preparedstatement.
timeZone 

Optionales Attribut des Elements Preparedstatement. Bestimmt die Zeitzone entsprechend zu java.util.TimeZone  (z. B.  GMT+2 ). Standardmäßig wird die UTC-Zeitzone für Datumsangaben verwendet.

Cql 

Element innerhalb des Elements Preparedstatement. Enthält das CQL-Statement. Kann beliebig oft innerhalb von Preparedstatement verwendet werden.

Wenn innerhalb des CQL-Statements Zeichen verwendet werden, die in XML vorbelegt sind, dann muss das SQL-Statement mit einem CDATA-Block escaped werden.

Parameters Element innerhalb des Elements Preparedstatement. Darf nur genau einmal innerhalb von Preparedstatement verwendet werden. Enthält beliebig viele Elemente parameter mit Parameterwerten.
parameter 

Element innerhalb des Elements Parameters. Kann beliebig oft innerhalb von Parameters verwendet werden.

Attribute:

  • index: Definiert die Position, an der der Parameterwert das ? innerhalb des CQL-Statements ersetzt.
  • type: Definiert den Parametertyp. Folgende Werte sind mit Apache Cassandra möglich:
    • TEXT: UTF-8-kodierter Text
    • VARCHAR: UTF-8-kodierter Text
    • ASCII: US-ASCII-kodierter Text
    • BLOB: Hexadezimal kodierte Binärdateien ohne Validierung
    • BOOLEAN: Bool'sche Werte
    • BIGINT: 64-Bit-Ganzzahl
    • COUNTER: 64-Bit-Zählerwert
    • INT: 32-Bit-Ganzzahl
    • SMALLINT: 2-Byte-Ganzzahl
    • TINYINT: 1-Byte-Ganzzahl
    • DATE: Datum im Format yyyy-mm-dd 

      Apacha Cassandra kodiert Datumsangaben als 32-Bit-Ganzzahl, die die Tage seit dem 1. Januar 1970 repräsentiert.

    • DECIMAL: Dezimalzahl
    • DOUBLE: 64-Bit-IEEE-Fließkommazahl
    • FLOAT: 32-Bit-IEEE-Fließkommazahl
    • INET: IP-Adresse im IPv4- oder IPv6-Format.
    • TIME: Uhrzeit

      Apache Cassandra kodiert Zeitangaben als 64-Bit-Ganzzahl, die die Nanosekunden seit Mitternacht repräsentiert.

    • TIMESTAMP: Datum und Uhrzeit. Das Format muss über das Attribut format  angegeben werden, z. B.:

      XML
      <parameter index="n" type="TIMESTAMP" format="yyyy-MM-dd HH:mm:ss">2012-06-01 08:00:00</parameter>
    • TIMEUUID: Version 1 UUID
    • UUID: UUID im Standard UUID-Format
    • VARINT: Ganzzahl
    • MAP: Array von Zeichen im JSON-Format

    • LIST: Sammlung eines oder mehrerer geordneter Elemente, z. B. 

      XML
      <parameter index="n" type="LIST">["tcodd@relational.com","ted.codd@relational.com"]</parameter>

      Die Verwendung der Anführungszeichen ist erforderlich.

    • SET: Sammlung eines oder mehrerer Elemente, z. B. 

      XML
      <parameter index="n" type="SET">["Element 1","Element 1","Element 3"]</parameter>

      Die Verwendung der Anführungszeichen ist erforderlich.

    • TUPLE: Gruppe von Komma-getrennten Feldern. Kann verschiedene Simple Types enthalten:
      • keySpace: Name des Key Space der Tabelle
      • table: Name der Tabelle
      • column: Name der Spalte


      Wenn das Tuple Date-, Time- oder Timestamp-Felder enthält sind folgende Attribute erforderlich:

      • formatWithoutTime: Erforderlich, falls das Tuple Date-Felder enthält.
      • format: Erforderlich, falls das Tuple Timestamp-Felder enthält.
      • formatTime: Erforderlich, falls das Tuple Time-Felder enthält.

      Beispiel Tuple

      XML
      <parameter index="n" type="TUPLE" keySpace="videodb" table="videos" column="tupleColl"
      formatWithoutTime="yyyy-MM-dd"
      format="yyyy-MM-dd HH:mm:ss"
      formatTime="HH:mm:ss:SSS">1, fisrt tuple element, V1, 1.01, 14:25:16:555, 2012-06-01 08:00:00, 2018-04-03, 127.0.0.1, 5.678, 9e816244-f90a-4394-86a5-ddcf4fb9f7aa, true, 97, blobValue</parameter>

       Im obigen Beispiel wird das Tuple-Feld während der Tabellenerstellung wie folgt definiert:
      tupleColl tuple<int, text, varchar, float, time, timestamp, date, inet, decimal, uuid, boolean, ascii, blob>


Output

Der Output ist ein XML-Dokument mit den Fehlern und dem Ergebnis der Adapter-Ausführung. Je nach Operation gibt der Adapter Daten in verschiedenen XML-Strukturen aus:

  • Batch-Operationen (INSERT, UPDATE, DROP, CREATE, ...) 

    Beispiel Batch-Operationen

    XML
    <Result>
    	<resulttag_name> Operation executed successfully</resulttag_name>
    </Result>
  • SELECT 

    Beispiel SELECT

    XML
    <Result>
    	<resulttag_name>
    		<Object>
    			<Value name="field_name" type="String|Number|Boolean...">field_value</Value>
    			...
    			<Object name="Map_field_name">
    				<Value name="key_name" type="String|Number|Boolean...">object_value</Value>
    			</Object>
    			<Array name="Colleciton_field_name">
    				<Value type="String|Number|Boolean...">value_of_the_array_at_this_position</Value>
    				...
    			</Array>
    			...
    		</Object>
    	</resulttag_name>
    </Result>

    Wenn das Feld den Datentyp MAP hat, wird sein Wert durch einen Objektknoten repräsentiert. Wenn das Feld den Datentyp LISTSET oder TUPLE hat, wird sein Wert durch einen Array-Knoten repräsentiert. Wenn das Feld ein Simple Type ist, wird sein Wert innerhalb des Value-Knotens repräsentiert.

Beispiel

  • CREATE

    Beispiel CREATE

    XML
    <RootElement>
    	<Preparedstatement resulttag="createTableVideos">
    		<Cql>
    			<![CDATA[CREATE TABLE videodb.videos (
    				videoid uuid,
    				videoname varchar,
    				username varchar,
    				description varchar,
    				location map<varchar,varchar>,
    				tags set<varchar>,
    				tupleColl tuple<int, text, varchar, float, time, timestamp, date, inet, decimal, uuid, boolean, ascii, blob>,
    				upload_date timestamp,
    				upload_date_noTime date,
    				PRIMARY KEY (videoid));]]>
    		</Cql>
    	</Preparedstatement>
    </RootElement>
  • DROP 

    Beispiel DROP

    XML
    <RootElement>
    	<Preparedstatement resulttag="drop_Users">
    		<Cql>
    			<![CDATA[DROP TABLE IF EXISTS videodb.users;]]>
    		</Cql>
    	</Preparedstatement>
    </RootElement>
  • INSERT

    Beispiel INSERT

    XML
    <RootElement>
    	<Preparedstatement resulttag="insertVideos" timeZone="UTC">
    		<Cql>
    			INSERT INTO videodb.videos (videoid, videoname, username, description, location, tags, tupleColl, upload_date, upload_date_noTime)
    			VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?);
    		</Cql>
    		<Parameters>
    			<parameter index="0" type="UUID">99051fe9-6a9c-46c2-b949-38ef78858dd0</parameter>
    			<parameter index="1" type="VARCHAR">My funny cat</parameter>
    			<parameter index="2" type="VARCHAR">tcodd</parameter>
    			<parameter index="3" type="VARCHAR">My cat likes to play the piano! So funny.</parameter>
    			<parameter index="4" type="MAP">{"US":"/us/vid/99/99051fe9-6a9c-46c2-b949-38ef78858dd0"}</parameter>
    			<parameter index="5" type="SET" >["cats","piano","lol"]</parameter>
    			<parameter index="6" type="TUPLE" keySpace="videodb" table="videos" column="tupleColl" formatWithoutTime="yyyy-MM-dd" format="yyyy-MM-dd HH:mm:ss" formatTime="HH:mm:ss:SSS">1, fisrt tuple element, V1, 1.01, 14:25:16:555, 2012-06-01 08:00:00, 2018-04-03, 127.0.0.1, 5.678, 9e816244-f90a-4394-86a5-ddcf4fb9f7aa, true, 97, blobValue</parameter>
    			<parameter index="7" type="TIMESTAMP" format="yyyy-MM-dd HH:mm:ss">2012-06-01 08:45:32</parameter>
    			<parameter index="8" type="DATE" formatWithoutTime="yyyy-MM-dd">2012-06-01</parameter>
    		</Parameters>
    	</Preparedstatement>
    </RootElement>
  • UPDATE  

    Beispiel UPDATE

    XML
    <rootElement>
    	<Preparedstatement resulttag="add_email_in_list">
    		<Cql>
    			<![CDATA[ UPDATE videodb.users set email = ? + email where username = ?]]>
    		</Cql>
    		<Parameters>
    			<parameter type="LIST" index="0">["test1@mail.com","test0@mail.com"]</parameter>
    			<parameter type="TEXT" index="1">pmcfadin</parameter>
    		</Parameters>
    	</Preparedstatement>
    </rootElement>
  • SELECT

    Beispiel SELECT

    XML
    <mainNode>
    	<Preparedstatement resulttag="select_NY_rides" timezone="UTC">
    		<Cql>
    			<![CDATA[SELECT * from NY.rides
    				where vendor_id = ?
    				and pickup_datetime = ?
    				and rate_code = ?
    				and total_amount = ?
    				limit 10 ALLOW FILTERING;
    			]]>
    		</Cql>
    		<Parameters>
    			<parameter index="0" type="TEXT">2</parameter>
    			<parameter index="1" type="TIMESTAMP" format="yyyy-MM-dd hh:mm:ss">2016-01-02 17:02:28</parameter>
    			<parameter index="2" type="INT">1</parameter>
    			<parameter index="3" type="DECIMAL">64.56</parameter>
    		</Parameters>
    	</Preparedstatement>
    </mainNode>
  • DELETE

    Beispiel DELETE

    XML
    <mainNode>
    	<Preparedstatement resulttag="delete_video_one_record" timezone="UTC">
    		<Cql>
    			DELETE FROM videodb.videos WHERE videoid = ?;
    		</Cql>
    		<Parameters>
    			<parameter index="0" type="UUID">7dacb4da-9155-4613-b04e-8c5305a20342</parameter>
    		</Parameters>
    	</Preparedstatement>
    </mainNode>
JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.