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:
|
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();
|
port | Native-Protocol-Port |
login | Login, wenn das Cluster Zugangsdaten erfordert Mögliche Werte: Beliebige Zeichenkette mit dem Login, z. B. |
password | Passwort, wenn das Cluster Zugangsdaten erfordert Mögliche Werte: Beliebige Zeichenkette mit dem Passwort, z. B. |
Statuswerte
1 | Die Adapter-Operation wurde erfolgreich ausgeführt |
-1 | Bei der Ausführung des Adapters kam es zu einem Fehler |
Input
Der Adapter erwartet ein spezifisches XML-Dokument als Input:
Beispiel-Input
<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 / Attribut | Beschreibung |
---|---|
resulttag | Erforderliches Attribut des Elements Preparedstatement . |
timeZone | Optionales Attribut des Elements |
Cql | Element innerhalb des Elements 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 Attribute:
|
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 DatentypLIST
,SET
oderTUPLE
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>