X4 Produktdokumentation

Operation: Execute

Mit der Operation Execute des Apache Cassandra Connectors führen Sie das im Input-Dokument angegebene Statement aus.

Weitere Informationen zu anderen Operationen des Apache Cassandra Connectors finden Sie unter Apache Cassandra Connector.

Parameter

Parameter

Beschreibung

Adapter

🚫

Adapter-Hauptklasse (nicht verändern!)

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

host

Host innerhalb des Clusters

Beispiel:

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

Hinweis:

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.

port

Native-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 Operation wurde erfolgreich ausgeführt

-1

Die Operation ist aufgrund eines technischen Fehlers fehlgeschlagen.

Input <Statement/>

Der Adapter erwartet ein spezifisches XML-Dokument als Input, z. B.:

<RootElement>
  <Statement>
      select * from keyspace.table;
  </Statement>
  <Statement>
      INSERT INTO keyspace.table (id, lastname, firstname) VALUES (uuid(), myLastname,'myFirstName');
  </Statement>
  ....
</RootElement>

Input <Preparedstatement/>

Der Adapter erwartet ein spezifisches XML-Dokument als Input, z. B.:

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>

Inputregeln

Das Input-XML-Dokument muss folgenden Regeln entsprechen:

Element/Attribut

Beschreibung

resulttag 

✳️

Dieses Attribut ist erforderlich für das Element Preparedstatement.

timeZone 

🔷

Dieses Attribut ist optional für das Element 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.

Hinweis:

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:

Mögliche Parametertypen für type

type

Beschreibung

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

Hinweis:

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

Hinweis:

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.:

<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.

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

Hinweis:

Die Verwendung der Anführungszeichen ist erforderlich.

SET

Sammlung eines oder mehrerer Elemente, z. B.:

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

Hinweis:

Die Verwendung der Anführungszeichen ist erforderlich.

TUPLE

Gruppe von Komma-getrennten Feldern. Kann verschiedene Simple Types enthalten:

  • keySpace: Name des Key Spaces der Tabelle

  • table: Name der Tabelle

  • column: Name der Spalte

Hinweis:

Wenn das TUPLE-Feld DATE-, TIME- oder TIMESTAMP-Felder enthält sind folgende Attribute erforderlich:

  • formatWithoutTime: Erforderlich, falls das TUPLE-Feld DATE-Felder enthält.

  • format: Erforderlich, falls das TUPLE-Feld TIMESTAMP-Felder enthält.

  • formatTime: Erforderlich, falls das TUPLE-Feld TIME-Felder enthält.

TUPLE-Beispiel
<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, ...)

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

Operation: 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>

Hinweis:

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.

Beispiele

Hier finden Sie Beispielinputs für die unterschiedlichen Preparedstatements der Operation Execute.

Beispiel: CREATE
<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>
Beispiel: DROP
<RootElement>
	<Preparedstatement resulttag="drop_Users">
		<Cql>
			<![CDATA[DROP TABLE IF EXISTS videodb.users;]]>
		</Cql>
	</Preparedstatement>
</RootElement>
Beispiel: INSERT
<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>
Beispiel: UPDATE
<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>
Beispiel: SELECT
<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>
Beispiel: DELETE
<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>