{"id":114,"date":"2023-11-10T21:22:55","date_gmt":"2023-11-10T20:22:55","guid":{"rendered":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=114"},"modified":"2024-01-08T09:14:33","modified_gmt":"2024-01-08T08:14:33","slug":"apache-cassandra-in-java-grundlagen","status":"publish","type":"post","link":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=114","title":{"rendered":"Apache Cassandra in Java &#8211; Grundlagen"},"content":{"rendered":"\n<p>In der Welt der Softwareentwicklung und Datenverarbeitung spielen Datenbanken eine entscheidende Rolle. Traditionell wurden relationale Datenbanken wie MySQL, PostgreSQL und Oracle verwendet, um strukturierte Daten zu speichern und abzurufen. In den letzten Jahren hat sich jedoch die Landschaft der Datenbanktechnologie erheblich ver\u00e4ndert, und NoSQL-Datenbanken sind zu einer beliebten Alternative geworden. In diesem Artikel werden wir uns darauf konzentrieren, wie NoSQL-Datenbanken in Java verwendet werden k\u00f6nnen, wobei Apache Cassandra als Beispiel dient.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Einf\u00fchrung in NoSQL-Datenbanken<\/h2>\n\n\n\n<p>NoSQL steht f\u00fcr &#8222;Not Only SQL&#8220; und bezeichnet eine Kategorie von Datenbanken, die sich von traditionellen relationalen Datenbanken unterscheiden. W\u00e4hrend relationale Datenbanken auf dem SQL-Abfragesprachstandard basieren und stark strukturierte Daten verwenden, sind NoSQL-Datenbanken flexibler und k\u00f6nnen unstrukturierte oder semi-strukturierte Daten speichern. Dies macht sie besonders geeignet f\u00fcr moderne Anwendungen, die gro\u00dfe Mengen unterschiedlicher Daten verarbeiten m\u00fcssen, wie soziale Netzwerke, E-Commerce-Plattformen und IoT-Anwendungen.<\/p>\n\n\n\n<p>Es gibt verschiedene Arten von NoSQL-Datenbanken, darunter Dokumentdatenbanken, Spaltenspeicherdatenbanken, Key-Value-Datenbanken und Graphdatenbanken. Jede Art hat ihre eigenen St\u00e4rken und Einsatzm\u00f6glichkeiten. In diesem Artikel konzentrieren wir uns auf Spaltenspeicherdatenbanken und verwenden Apache Cassandra als Beispiel.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Apache Cassandra: Eine Einf\u00fchrung<\/h2>\n\n\n\n<p>Apache Cassandra ist eine weit verbreitete Open-Source-Spaltenspeicherdatenbank, die f\u00fcr ihre Skalierbarkeit und hohe Verf\u00fcgbarkeit bekannt ist. Cassandra wurde von Facebook entwickelt und sp\u00e4ter als Open-Source-Projekt der Apache Software Foundation freigegeben. Sie wurde entwickelt, um gro\u00dfe Datenmengen in verteilten Umgebungen zu speichern und zu verarbeiten und eignet sich daher gut f\u00fcr Anwendungen mit hohen Anforderungen an die Datenverf\u00fcgbarkeit und -skalierbarkeit.<\/p>\n\n\n\n<p>Einige der Hauptmerkmale von Apache Cassandra sind:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Verteilte Architektur<\/strong>: Cassandra wurde von Grund auf f\u00fcr verteilte Umgebungen entwickelt. Daten werden \u00fcber mehrere Knoten (Nodes) in einem Cluster repliziert, um hohe Verf\u00fcgbarkeit und Fehlertoleranz sicherzustellen.<\/li>\n\n\n\n<li><strong>Skalierbarkeit<\/strong>: Cassandra kann problemlos horizontal skaliert werden, indem neue Knoten zum Cluster hinzugef\u00fcgt werden. Dadurch k\u00f6nnen Sie die Kapazit\u00e4t erh\u00f6hen, wenn Ihre Anwendung w\u00e4chst.<\/li>\n\n\n\n<li><strong>Leistungsstarkes Schreibverhalten<\/strong>: Cassandra ist f\u00fcr Schreibvorg\u00e4nge optimiert und bietet eine hohe Leistung f\u00fcr das Einf\u00fcgen und Aktualisieren von Daten.<\/li>\n\n\n\n<li><strong>Flexible Datenmodellierung<\/strong>: Cassandra unterst\u00fctzt ein flexibles Datenmodell, bei dem Spaltenfamilien und Spalten verwendet werden, um Daten zu speichern. Dies erm\u00f6glicht es Ihnen, Daten effizient abzufragen, auch wenn sie unterschiedliche Strukturen haben.<\/li>\n\n\n\n<li><strong>Dezentrale Konsistenz<\/strong>: Cassandra verwendet ein dezentrales Konsistenzmodell, das es erm\u00f6glicht, zwischen Konsistenz und Verf\u00fcgbarkeit abzuw\u00e4gen. Dies ist besonders n\u00fctzlich in hochverteilten Umgebungen.<\/li>\n<\/ol>\n\n\n\n<p>Jetzt, da wir eine grundlegende Vorstellung von Apache Cassandra haben, lassen Sie uns dar\u00fcber sprechen, wie Sie Cassandra in Java verwenden k\u00f6nnen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Verwenden von Apache Cassandra in Java<\/h2>\n\n\n\n<p>Um Apache Cassandra in Java verwenden zu k\u00f6nnen, m\u00fcssen Sie zun\u00e4chst die entsprechenden Bibliotheken in Ihr Projekt integrieren. Die offizielle Java-Treiberbibliothek von Cassandra wird oft als &#8222;DataStax Java Driver for Apache Cassandra&#8220; bezeichnet und ist die empfohlene M\u00f6glichkeit, Cassandra in Java-Anwendungen zu integrieren.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Schritt 1: Maven-Abh\u00e4ngigkeit hinzuf\u00fcgen<\/h3>\n\n\n\n<p>Um den DataStax Java-Treiber in Ihr Projekt aufzunehmen, k\u00f6nnen Sie die folgende Maven-Abh\u00e4ngigkeit in Ihrer <code>pom.xml<\/code>-Datei hinzuf\u00fcgen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dependency<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>com.datastax.oss<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>java-driver-core<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">version<\/span>&gt;<\/span>4.10.0<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">version<\/span>&gt;<\/span> <span class=\"hljs-comment\">&lt;!-- Stellen Sie sicher, dass die Version aktuell ist --&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">dependency<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Stellen Sie sicher, dass Sie die neueste Version des Treibers verwenden, um von den neuesten Funktionen und Verbesserungen zu profitieren.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Schritt 2: Eine Verbindung zur Cassandra-Datenbank herstellen<\/h3>\n\n\n\n<p>Um eine Verbindung zur Cassandra-Datenbank herzustellen, m\u00fcssen Sie eine <code>CqlSession<\/code> erstellen. Hier ist ein einfaches Beispiel, wie das gemacht wird:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">import com.datastax.oss.driver.api.core.CqlSession;\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">CassandraConnector<\/span> <\/span>{\n    <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">final<\/span> String CONTACT_POINT = <span class=\"hljs-string\">\"localhost\"<\/span>; <span class=\"hljs-comment\">\/\/ IP-Adresse oder Hostname des Cassandra-Knotens<\/span>\n    <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">final<\/span> int PORT = <span class=\"hljs-number\">9042<\/span>; <span class=\"hljs-comment\">\/\/ Standard-Cassandra-Port<\/span>\n\n    <span class=\"hljs-keyword\">public<\/span> CqlSession connect() {\n        <span class=\"hljs-keyword\">return<\/span> CqlSession.builder()\n            .addContactPoint(CONTACT_POINT)\n            .withLocalDatacenter(<span class=\"hljs-string\">\"datacenter1\"<\/span>) <span class=\"hljs-comment\">\/\/ Optional: Das lokale Rechenzentrum angeben<\/span>\n            .build();\n    }\n\n    <span class=\"hljs-keyword\">public<\/span> void close(CqlSession session) {\n        session.close();\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In diesem Beispiel wird eine Verbindung zur Cassandra-Datenbank auf dem lokalen Rechner hergestellt. Stellen Sie sicher, dass Sie den <code>CONTACT_POINT<\/code> und den Port entsprechend Ihren Cassandra-Konfigurationen aktualisieren.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Schritt 3: Datenbankoperationen ausf\u00fchren<\/h3>\n\n\n\n<p>Nachdem Sie eine Verbindung zur Cassandra-Datenbank hergestellt haben, k\u00f6nnen Sie Datenbankoperationen wie das Einf\u00fcgen, Aktualisieren, Abfragen und L\u00f6schen von Daten durchf\u00fchren. Hier ist ein einfaches Beispiel, wie Sie Daten in Cassandra einf\u00fcgen k\u00f6nnen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">import<\/span> com.datastax.oss.driver.api.core.CqlSession;\n<span class=\"hljs-keyword\">import<\/span> com.datastax.oss.driver.api.core.cql.*;\n\npublic <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">CassandraExample<\/span> <\/span>{\n    public <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> main(<span class=\"hljs-built_in\">String<\/span>&#91;] args) {\n        CassandraConnector connector = <span class=\"hljs-keyword\">new<\/span> CassandraConnector();\n        <span class=\"hljs-keyword\">try<\/span> (CqlSession session = connector.connect()) {\n            <span class=\"hljs-comment\">\/\/ Einf\u00fcgen von Daten in die Tabelle<\/span>\n            SimpleStatement insertStatement = SimpleStatement.builder(<span class=\"hljs-string\">\"INSERT INTO mykeyspace.mytable (id, name, age) VALUES (?, ?, ?)\"<\/span>)\n                .addPositionalValue(<span class=\"hljs-number\">1<\/span>)\n                .addPositionalValue(<span class=\"hljs-string\">\"John Doe\"<\/span>)\n                .addPositionalValue(<span class=\"hljs-number\">30<\/span>)\n                .build();\n            ResultSet insertResult =\n\n session.execute(insertStatement);\n            System.out.println(<span class=\"hljs-string\">\"Daten wurden erfolgreich eingef\u00fcgt.\"<\/span>);\n\n            <span class=\"hljs-comment\">\/\/ Abfragen von Daten aus der Tabelle<\/span>\n            SimpleStatement selectStatement = SimpleStatement.builder(<span class=\"hljs-string\">\"SELECT * FROM mykeyspace.mytable WHERE id = ?\"<\/span>)\n                .addPositionalValue(<span class=\"hljs-number\">1<\/span>)\n                .build();\n            ResultSet selectResult = session.execute(selectStatement);\n            Row row = selectResult.one();\n            <span class=\"hljs-keyword\">if<\/span> (row != <span class=\"hljs-literal\">null<\/span>) {\n                System.out.println(<span class=\"hljs-string\">\"Daten gefunden: \"<\/span> + row.getString(<span class=\"hljs-string\">\"name\"<\/span>) + <span class=\"hljs-string\">\", Alter: \"<\/span> + row.getInt(<span class=\"hljs-string\">\"age\"<\/span>));\n            } <span class=\"hljs-keyword\">else<\/span> {\n                System.out.println(<span class=\"hljs-string\">\"Keine Daten gefunden.\"<\/span>);\n            }\n        } <span class=\"hljs-keyword\">catch<\/span> (Exception e) {\n            e.printStackTrace();\n        } <span class=\"hljs-keyword\">finally<\/span> {\n            connector.close(session);\n        }\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In diesem erweiterten Beispiel wird nach dem Einf\u00fcgen von Daten auch eine Abfrage durchgef\u00fchrt, um die eingef\u00fcgten Daten abzurufen. Beachten Sie, wie die Abfrage mit einem Prepared Statement erstellt und ausgef\u00fchrt wird.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Schlussgedanken<\/h2>\n\n\n\n<p>NoSQL-Datenbanken wie Apache Cassandra bieten Entwicklern eine leistungsstarke Alternative zu traditionellen relationalen Datenbanken. Mit Cassandra k\u00f6nnen Sie gro\u00dfe Datenmengen in verteilten Umgebungen speichern und verarbeiten, und sie eignet sich gut f\u00fcr Anwendungen, die hohe Verf\u00fcgbarkeit und Skalierbarkeit erfordern.<\/p>\n\n\n\n<p>In diesem Artikel haben wir einen \u00dcberblick \u00fcber die Verwendung von Apache Cassandra in Java gegeben. Wir haben die Schritte zum Einrichten einer Verbindung zur Cassandra-Datenbank, zum Einf\u00fcgen von Daten und zum Abfragen von Daten in Java erkl\u00e4rt. Beachten Sie jedoch, dass dies nur ein Einstieg in die Verwendung von Cassandra ist, und es gibt viele fortgeschrittene Konzepte und Funktionen, die Sie erkunden k\u00f6nnen.<\/p>\n\n\n\n<p>Wenn Sie planen, Cassandra in Ihrer Java-Anwendung zu verwenden, empfehlen wir Ihnen, die offizielle Dokumentation von Apache Cassandra und des DataStax Java Drivers zu konsultieren, um eine umfassendere und detailliertere Anleitung zur Verwendung dieser leistungsstarken Datenbank zu erhalten.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In der Welt der Softwareentwicklung und Datenverarbeitung spielen Datenbanken eine entscheidende Rolle. Traditionell wurden relationale Datenbanken wie MySQL, PostgreSQL und Oracle verwendet, um strukturierte Daten zu speichern und abzurufen. In den letzten Jahren hat sich jedoch die Landschaft der Datenbanktechnologie erheblich ver\u00e4ndert, und NoSQL-Datenbanken sind zu einer beliebten Alternative geworden. In diesem Artikel werden wir [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-114","post","type-post","status-publish","format-standard","hentry","category-plain_java"],"_links":{"self":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/114","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=114"}],"version-history":[{"count":1,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/114\/revisions"}],"predecessor-version":[{"id":115,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/114\/revisions\/115"}],"wp:attachment":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=114"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=114"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=114"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}