NEO4J Y JAVA

FUNDAMENTOS DE POO

Daniel Felipe Garcia Aceros

Ing.Leidy  Johana Polo Amador

NEO4J Y JAVA

1005324754





Introducción


En este blog se mostrarán contenidos generalmente teóricos en el cual se explicara lo más básico y simple del lenguaje orientado a objetos y el tema a mayor profundidad a tratar que sería el NEO4J un modelo de base de datos.
Pero primero que todo debemos tener unos contenidos básicos y definiciones antes de entrar en detalles para eso se responderán las siguientes interrogantes para dar una idea general de el tema que se va a tratar.

1.¿QUÉ ES JAVA?

Java es un lenguaje de programación y una plataforma informática que fue comercializada por primera vez en 1995 por Sun Microsystems. Hay muchas aplicaciones y sitios web que no funcionarán, probablemente, a menos que tengan Java instalado y cada día se crean más. Java es rápido, seguro y fiable. Desde portátiles hasta centros de datos, desde consolas para juegos hasta computadoras avanzadas, desde teléfonos móviles hasta Internet, Java está en todas partes, si es ejecutado en una plataforma no tiene que ser compilado para correr en otra. Java es, a partir de 2012, uno de los lenguajes de programación más populares en uso, particularmente para aplicaciones de cliente-servidor de web, con unos diez millones de usuarios reportados.


2.¿SU CREADOR?

 El creador original de java fue James Gosling.



3.¿EN QUE TECNOLOGÍA SE PUEDE PROGRAMAR EN JAVA?

Alrededor del mundo existen alrededor de 3 mil millones de dispositivos que ejecutan java alrededor de 
1.100 millones de sistemas de escritorio.
3.000 millones de dispositivos móviles(celulares).
El 100% de los aparatos de  Blu-ray.
1.400 millones de tarjetas inteligentes.
Además de Impresoras, webcams, televisores inteligentes, equipamiento médico, sistemas de entretenimiento 
y navegación de coches.
Y aplicaciones de servidor o gestión de servidores en las cuales es más eficaz el lenguaje de programación de
java.

4.¿QUÉ PRODUCTOS DE SOFTWARE HAN SIDO DESARROLLADOS EN JAVA?
Estos productos de software que han sido desarrollados en java podrían ser:
   1.Aplicaciones de servidor. 
   2.Aplicaciones móviles. 
   3.Páginas web.
   4.Videojuegos. 
   5.buscadores.
Estas son las más famosas pero hay muchas más.


NEO4J

Historia.

Neo4j nace de la mano de la mano de Neo Technology como una base de datos orientada a grafos de código abierto implementada en Java y Scala. El desarrollo se inició en 2003 y se puso a disposición del público en el año 2007. Ademas su codigo esta disponible en gitHub permitiendo a usuarios y entidades colaborar con ellos.
Neo4j es usado por cientos de miles de compañías en una gran variedad de industrias: ebay, wallmart, teleonor, etc.




CONCEPTO Y CARACTERÍSTICAS

¿Qué Es?

Neo4j es un software libre de Base de datos orientada a grafos, implementado en Java.1​2​ Los desarrolladores describen a Neo4j como un motor de persistencia embebido, basado en disco, implementado en Java, completamente transaccional, que almacena datos estructurados en grafos en lugar de en tablas y se compone de: 
 1.Nodos: Pueden contener cualquier número de atributos que están formados por conjuntos de pares Clave-     Valor.
 2.Etiquetas: Roles y metadatos.
 3. Relaciones: Proporcionan conexiones dirigidas entre dos nodos y están formada por:
 4. Nodo origen
 5. Nodo destino
 Tipo Las relaciones pueden incluir propiedades: pesos, costes, intervalos de tiempo, etc.

En este video se explica mas a detalle pero esta en ingles.




CARACTERÍSTICAS

1. Las escrituras se pueden realizar en cualquier instancia del clúster. 
2. Neo4j es tolerante a fallos para cualquier número de máquinas y para la caída de cualquiera de las máquinas. 
3. Los esclavos se sincronizará automáticamente con el maestro en las operaciones de escrituras. 
4. Si el master cae, un nuevo máster será elegido automáticamente. 
5. El clúster automáticamente maneja la incorporación de nuevas instancias. 
6. Las transacciones son atómicas, consistentes (o eventualmente) y duraderas. 
7. El factor de replicación es configurable. 
8. Si el maestro se cae cualquier nueva transacción de escritura se bloqueará hasta que un nuevo maestro sea elegido.
Neo4j para almacenar la información utiliza los siguientes conceptos:
 1.Nodos: Almacena los registros del grafo
 2.Relaciones: Conecta los distintos nodos
 3.Propiedades: Datos con nombre

EJEMPLOS DE CÓDIGO EN NEO4J
Primero debemos iniciar con definir algunas variables

Plug AND Play:
Únicamente consiste en descargar el fichero comprimido de la web oficial y ejecutar /bin/neo4j start. Tras esto se inicia el servidor y podemos ejecutar su versión web mediante en el puerto 7474: http://localhost:7474.

CREATE: Es la sentencia para poder crear datos, con esta sentencia podemos crear nodos y estructuras mas complejas. 
Ejm. (:NombreNodo{
NombrePropiedad:"valorPropiedad",NombrePropiedad2:valorPropiedadNum
})

MATCH: La función MATCH se utiliza para realizar búsquedas que coincidan con un patrón de ser introducido.
Ejm. MATCH (variable:NombreNodo) RETURN variable
MATCH (variable:NombreNodo){nombreCampo:"ValorCampo"}) RETURN variable

DELETE: La función DELETE es similar a la función sql, y con el MATCH podemos hacer de filtro para saber que queremos eliminar.
Ejm. MATCH (n{ name:'Andres'})-[r]-() DELETE n,r

Ejemplos con imágenes
match p = (:Customer)-[:PURCHASED]->(:Order)-[:ORDERS]->(:Product)-[:PART_OF]->(:Category)
return p
limit 1

MATCH 
    (c:Customer{customerID:'BOLID'})-[:PURCHASED]->(:ORDER)-[:ORDERS]->(product:Product),
    (product)<-[:ORDERS]-()<-[:PURCHASED]-(:Customer)-[:PURCHASED]->()-[:ORDERS]-(product_2:Product),
    (product)-[:PART_OF]-(category:Category)-[:PART_OF]-(product_2)
where product_2 <> product
return  product_2, category