Update README.md

parent ffec74ab
Thema:
My-Aktion verwendet Objektrelationales Mapping (ORM).
Als neue Datenbank soll Neo4j verwendet werden.
Neo4j - Beschreibung :
Als neue Datenbank wird Neo4j - NOSQL für my-aktion aufgebaut. In Neo4j wird als Kante, als Knoten oder als Attribut gespeichert.
Die Entitäten in der my-aktion werden als Knoten im Diagramm dargestellt. Jeder Knote hat eine Anzahl von Attributen.
Beziehungen sind die relevante Verbindungen zwischen zwei Knotenentitäten.Eine Beziehung hat immer eine Richtung, einen Typ, einen Startknoten und einen Endknoten.
Query-Abfrage mit zwei Möglichkeiten: Cypher und JPQL.
Voraussetzung:
- Java JDK8
- Maven 3.2.3 oder höher
- neo4j-community-3.5.20-windows.zip
- Zipdatei auspacken in dem Projekt
Konfigruation:
pom.xml
`<dependency>
**Thema der Vertiefung**
In diesem Projekt geht es um eine neue NoSQL-Datenbank aufzubauen. Neo4j ist eine reine Graphdatenbank, beispielweise bei Facebook wird eine finite Anzahl von Beziehungen abgebildet. In Neo4j wird alles entweder als Kante, als Knoten oder als Attribut gespeichert. Jeder Knoten hat eine beliebige Anzahl von Attributen. Knoten und Kanten können eine Beschriftung (Label) tragen. Beschriftungen können verwendet werden, um die Treffermenge bei Suchen einzuschränken. Beziehungen sind die relevante Verbindungen zwischen zwei Knotenentitäten. Eine Beziehung hat immer eine Richtung, einen Typ, einen Startknoten und einen Endknoten.
Während man z.B. in SQL-Abfragen Daten über Primärschlüssel und Fremdschlüssel-Spalten verknüpfen muss, um zusammengehörende Daten zusammenzubekommen, beschreibt Neo4j in einer Cypher-Abfrage, welche Muster im Graphen prinzipiell gesucht werden. Außerdem kann man die Query Abfrage in JP-QL aufbauen.
**Installation**
- Java JDK8
- Maven 3.2.3 oder höher
- neo4j-community-3.5.20-windows.zip
**Konfiguration:**
**pom.xml**
<dependency>
<groupId>org.hibernate.ogm</groupId>
<artifactId>hibernate-ogm-neo4j</artifactId>
<version>5.4.1.Final</version>
</dependency> `
</dependency>
**persistence.xml**
Die OGM-Engine von Hibernate erweitert ihre Funktionalität zur Unterstützung von NoSQL-Datenspeichern. Der Hauptvorteil seiner Verwendung ist die Konsistenz der JPA-Schnittstelle zwischen relationalen und NoSQL-Datenspeichern.
<provider>org.hibernate.ogm.jpa.HibernateOgmPersistence</provider>
persistence.xml
Im Folgenden werden die Eigenschaften von Databspeicher in Neo4j konfiguriert:
<provider>org.hibernate.ogm.jpa.HibernateOgmPersistence</provider>
`<property name="hibernate.transaction.jta.platform" value="JBossAS" />
<property name="hibernate.ogm.datastore.provider" value="neo4j_bolt" />
<property name="hibernate.ogm.neo4j.database_path" value="C:/Users/Huyen Trang/ESD/maven-projekt/test2/neo4j-my-aktion/data/my-aktion"/>
<property name="hibernate.ogm.datastore.host" value="localhost:7687" />
<property name="hibernate.ogm.datastore.username" value="neo4j" />
<property name="hibernate.ogm.datastore.password" value="trang" />
`
Ausführen:
<property name="hibernate.transaction.jta.platform" value="JBossAS" />
<property name="hibernate.ogm.datastore.provider" value="neo4j_bolt" />
<property name="hibernate.ogm.neo4j.database_path" value="C:/Users/Huyen Trang/ESD/maven-projekt/test2/neo4j-my-aktion/data/my-aktion"/>
<property name="hibernate.ogm.datastore.host" value="localhost:7687" />
<property name="hibernate.ogm.datastore.username" value="neo4j" />
<property name="hibernate.ogm.datastore.password" value="trang" />
**Entität**
Entitäten werden als Neo4j-Knoten gespeichert, was bedeutet, dass jede Entitätseigenschaft in eine Eigenschaft des Knotens übersetzt wird. Der Name der Tabelle, die die Entität abbildet, wird als Label verwendet.
**Assoziation**
Eine Assoziation, ob bidirektional (ManyToOne, OneToOne) oder unidirektional (ManyToOne, OneToMany) wird immer mit einer Beziehung abgebildet, beginnend bei der besitzenden Seite der Assoziation. Dies ist möglich, weil in Neo4j Beziehungen in beide Richtungen navigiert werden können.
**Ausführung:**
1. standalone.bat
2. bin\neo4j console ausführen und die URL "http://localhost:7474/" im Browse aufrufen
3. mvn clean package wildfly:deploy
**Fazit**
Eine zusätzliche Spenden-Empfehlung wäre: der Spender hat in der Anwendung für diese Aktion gespendet , hat eine Empfehlungen für andere Aktion um mehr zu spenden.
Zur Umsetzung wurde die Graphdatenbank Neo4j genutzt. Der Vorteil von Neo4j, zusammen mit den entsprechenden Strukturen, liegt in einer schnelleren Performance. Diese Implementierung wurde leider nicht so gut bei der Struktur des Projektsprogramms unterstützt. Somit wurde der Aufwand unterschätzt.
Neo4j ist eine großartige Ergänzung zur relationalen Datenhaltung. Wenn man Massen von zusammenhängenden Daten verwalten muss, sind relationale Datenbanken immer noch unschlagbar. Wenn es allerdings um die Verwaltung von komplexen Beziehungen geht, bieten graphen-orientierte Datenbanken die Möglichkeit, diese komplexen Zusammenhänge unmittelbar abzubilden und effektiv zu verwalten.
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment