{"id":2867,"date":"2016-01-14T00:00:00","date_gmt":"2016-01-14T00:00:00","guid":{"rendered":"https:\/\/structr.com\/neue-datenbankabstraktions-api\/"},"modified":"2025-03-24T13:45:55","modified_gmt":"2025-03-24T13:45:55","slug":"neue-datenbankabstraktions-api","status":"publish","type":"post","link":"https:\/\/structr.com\/de\/blog\/neue-datenbankabstraktions-api\/","title":{"rendered":"Neue Datenbankabstraktions-API"},"content":{"rendered":"<div class=\"wpb-content-wrapper\"><p>[vc_row][vc_column][vc_column_text]Zun\u00e4chst w\u00fcnscht das Structr-Team allen ein <b>frohes neues Jahr!<\/b><\/p>\n<p>Sie haben vielleicht bemerkt, dass es in den letzten Wochen etwas ruhig um uns war, wir haben nicht viel getwittert und keine neuen Blogartikel oder Updates auf unserer Website ver\u00f6ffentlicht. Keine Sorge, wir waren und sind so produktiv und flei\u00dfig wie eh und je, und ihr k\u00f6nnt an der Menge und H\u00e4ufigkeit der <a href=\"https:\/\/github.com\/structr\/structr\/commits\/main\" target=\"_blank\" rel=\"noopener\">Commits<\/a> sehen, dass es eine Menge Entwicklungsarbeit f\u00fcr unsere kommende Hauptversion 2.0 gibt. <\/p>\n<h4 id=\"structr-auf-neo4j-2-3-endlich-verfuegbar-und-schneller-als-je-zuvor\">Structr auf Neo4j 2.3 &#8211; endlich verf\u00fcgbar und schneller als je zuvor<\/h4>\n<p>Vielleicht ist Ihnen auch aufgefallen, dass die letzten Snapshots von Structr (ebenso wie der Master-Zweig) nur gegen Neo4j 2.2 kompiliert wurden, obwohl die neueste stabile Version von Neo4j 2.3 ist. Der Grund daf\u00fcr war, dass wir einen erheblichen Leistungsabfall feststellten, da der Lesezugriff auf Graph-Objekte und -Eigenschaften im Vergleich zu Neo4j 2.2 um etwa 60% (!) langsamer war. Wir haben einige Nachforschungen angestellt und sind zu dem Schluss gekommen, dass die Entfernung des JVM-basierten Objekt-Caches in Neo4j 2.3 daran schuld ist. Offensichtlich profitiert Structr sehr von Neo4js Objekt\/Property-Cache, der zugunsten eines neuen Seiten-Caches, der in Neo4j 2.2 eingef\u00fchrt wurde, <a href=\"http:\/\/neo4j.com\/blog\/new-on-neo4j-the-neo4j-2-3-0-milestone-2-release-is-here\/\" target=\"_blank\" rel=\"noopener\">entfernt<\/a> wurde.   <\/p>\n<p>Die gute Nachricht ist, dass Structr ab heute jede (aktuelle) Neo4j-Version unterst\u00fctzt und mit jeder Version optimale Leistung bietet.<\/p>\n<h4 id=\"neue-datenbankabstraktionsschicht\">Neue Datenbankabstraktionsschicht<\/h4>\n<p>Nicht nur, um unabh\u00e4ngig von der zugrundeliegenden Neo4j-Version die gleiche Performance zu bieten, sondern auch, um die laufende Entwicklung von Structr im Allgemeinen von einer bestimmten Neo4j-Version zu entkoppeln, haben wir uns entschlossen, eine neue Datenbankabstraktions-API und Treiber f\u00fcr Neo4j 2.2 und 2.3 zu entwickeln, die die genannte API implementieren. Es wurde soeben in den Master-Zweig eingef\u00fcgt und es gibt ein neues Projekt namens <code>structr-neo4j-driver<\/code>, das geklont und gegen die gew\u00fcnschte Neo4j-Version kompiliert werden muss, bevor Structr mit dem Treiber als neue Abh\u00e4ngigkeit kompiliert wird. <\/p>\n<p>Die folgende Abbildung veranschaulicht die neue Architektur:[\/vc_column_text][vc_single_image image=&#8220;2868&#8243; img_size=&#8220;large&#8220;][vc_column_text]<\/p>\n<h4 id=\"leistungssteigerung-30-mehr\">Leistungssteigerung: 30% mehr<\/h4>\n<p>Um eine optimale Leistung auf allen Neo4j-Versionen zu gew\u00e4hrleisten, haben wir in den neuen Neo4j-Treiber von Structr einen neuen (Second-Level-)Objekt-Cache eingebaut, um den entfernten Cache in Neo4j zu kompensieren, wodurch sich die Gesamtleistung gegen\u00fcber Neo4j 2.2 um etwa 30 % erh\u00f6ht hat.<\/p>\n<p>Die neue Datenbankabstraktion bietet nicht nur eine bessere Performance und eine gewisse Unabh\u00e4ngigkeit vom Neo4j-Release-Zyklus, sondern wird es auch erm\u00f6glichen, verschiedene Arten von Treibern zu implementieren, z.B. mit Neo4j embedded, in einem Remote-Server-Setup oder sogar als In-Memory- oder Read-Only-Datenbank. Langfristig wird die neue Datenbank-Abstraktionsschicht es Structr erm\u00f6glichen, auch andere Datenbanken mit einer <a href=\"http:\/\/www.opencypher.org\" target=\"_blank\" rel=\"noopener\">OpenCypher-API<\/a> zu unterst\u00fctzen. <\/p>\n<p>Bitte z\u00f6gern Sie nicht, den neuesten Structr-Snapshot zu testen, der auf der neuen Abstraktionsschicht basiert und wie immer auf Maven Central verf\u00fcgbar ist: <a href=\"https:\/\/oss.sonatype.org\/content\/repositories\/snapshots\/org\/structr\/structr-ui\/2.0-SNAPSHOT\/\" target=\"_blank\" rel=\"noopener\">https:\/\/oss.sonatype.org\/content\/repositories\/snapshots\/org\/structr\/structr-ui\/2.0-SNAPSHOT\/.<\/a>[\/vc_column_text][\/vc_column][\/vc_row]<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>[vc_row][vc_column][vc_column_text]Zun\u00e4chst w\u00fcnscht das Structr-Team allen ein frohes neues Jahr! Sie haben vielleicht bemerkt, dass es in den letzten Wochen etwas \u2026<\/p>\n","protected":false},"author":2,"featured_media":2868,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[563,562,519,543],"tags":[566,578,524,574,567,580,565,571,525,568,577,573,575,569,564,570,581,579,576,572],"class_list":["post-2867","post","type-post","status-publish","format-standard","hentry","category-ankundigung","category-cypher","category-neo4j-de","category-structr-de","tag-datenbank-abstraktions-api","tag-datenbank-unabhangigkeit","tag-graphische-datenbank","tag-in-memory-datenbank","tag-leistungssteigerung","tag-neo4j-2-2-unterstutzung","tag-neo4j-2-3-unterstutzung","tag-neo4j-leistung","tag-neo4j-integration-de","tag-objekt-cache","tag-objekt-cache-der-zweiten-ebene","tag-opencypher-api-de","tag-schreibgeschutzte-datenbank","tag-seiten-cache","tag-structr-2-0-de","tag-structr-neo4j-treiber","tag-structr-schnappschuss","tag-strukturelle-architektur","tag-strukturelle-entwicklung","tag-strukturoptimierung"],"acf":[],"_links":{"self":[{"href":"https:\/\/structr.com\/de\/wp-json\/wp\/v2\/posts\/2867","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/structr.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/structr.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/structr.com\/de\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/structr.com\/de\/wp-json\/wp\/v2\/comments?post=2867"}],"version-history":[{"count":2,"href":"https:\/\/structr.com\/de\/wp-json\/wp\/v2\/posts\/2867\/revisions"}],"predecessor-version":[{"id":2878,"href":"https:\/\/structr.com\/de\/wp-json\/wp\/v2\/posts\/2867\/revisions\/2878"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/structr.com\/de\/wp-json\/wp\/v2\/media\/2868"}],"wp:attachment":[{"href":"https:\/\/structr.com\/de\/wp-json\/wp\/v2\/media?parent=2867"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/structr.com\/de\/wp-json\/wp\/v2\/categories?post=2867"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/structr.com\/de\/wp-json\/wp\/v2\/tags?post=2867"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}