|

Neo4j Gets Geo Support

I guess that’s what kept the Neo Technology — the guys behind Neo4j — busy lately: The Neo4j Spatial project supports the use of geographic data by providing utilities that simplify and support advanced capabilities like: Storage of geographic features like points, lines and polygons as graphs Indexing and querying based on location with R-trees, Q …

Post original

Usar Neo4j con PHP usando REST

neo4j es una base de datos de grafos que puede ser muy útil para aplicaciones tipo redes sociales. El problema para los que usamos PHP es que neo4j está en Java y para usarlo desde PHP o se una un bridge que conecte con Java o usar la versión REST de neo4j y acceder vía web.

Su uso es muy sencillo:

$graphDb = new GraphDatabaseService('http://localhost:9999/');
$node = $graphDb->createNode();
$node->message = "Hello, ";
$node->blah = "blah blah";
$node->save();

Se le puede añadir todas las propiedades que se quieran, que se transforman en un array de datos que luego se enviarán en json.

El único problema que tiene esta librería es que no genera índices, aunque es muy sencillo modificar, ya que tan solo es necesario añadir una llamada para generar el índice:

HTTPUtil::jsonPostRequest($this->_neo_db->getBaseUri().'index/node/clave/'.$this->_data['clave'], $this->_neo_db->getBaseUri().'node/'.$this->_id);

siendo ‘clave’ lo que queramos añadir como índice. También es necesario modificar HTTPUtil::jsonRequest para que cuando $data no sea un array no se codifique en JSON.

Neo4J REST PHP API client

Enlaces rápidos (04-06-2010)

Más enlaces rápidos sobre NOSQL, para variar:

Web of Data

Interesante artículo sobre el futuro de la web y el cambio de pensamiento entre la WWW como una web de ficheros y la Web of Data, como una web de datos y relaciones.
El concepto es sencillo de entender, mientras que la WWW se basa en ficheros y enlaces entre unos y otros, la Web of Data, basada en Graph Database (diferentes a las base de datos relacionales ya que se basan en nodos, propiedades y relaciones entre nodos), donde los datos se almacenan en nodos, y estos puede relacionarse de forma muy variada y sencilla entre ellos.
www_vs_web_data.png
Viendo que las aplicaciones sociales (Twitter, Facebook, …) se basan en datos (usuarios, mensajes) y sus relaciones (updates, followers, …), es lógico pensar en este tipo de base de datos (Graph DB) que en la base de datos relacional. Aunque claro, al ser algo un tanto nuevo, quizás no existan alternativas potentes y el problema está en el escalado y el rendimiento.
La presentación es muy interesante y las bases de datos que indican (neo4j…) pueden estar muy bien para organizar estructura tipo nodo (yo ya tengo un ejemplo para probar).
Graph Databases and the Future of Large-Scale Knowledge Management
Vía / High Scalability