Parece que Neo4j no me permite almacenar objetos binarios. ¿Esto significa que debo usar Neo4j en conjunción con otro almacén de datos, como el sistema de archivos., Oracle, etc.?Almacenar objetos binarios en Neo4j
Respuesta
Daniel ya respondió que es posible almacenar objetos binarios en Neo4J.
Pero le sugiero que no lo haga. No puede hacer nada interesante con objetos binarios en la base de datos. No puedes buscarlos. Lo único que logrará al almacenar objetos binarios: aumentará el tamaño del archivo de su base de datos. Eso sí, Neo4J no es escalable horizontalmente. No tiene sharding automático. Entonces, si tu DB crece demasiado, estás en problemas. Al almacenar archivos binarios en un sistema de archivos o en un almacén de valores-clave externos distribuidos como riak, cassandra, hadoop, etc., mantendrá su base de datos pequeña, lo que es bueno para el rendimiento, las copias de seguridad y evitar los problemas de escala horizontal.
Si mira en la API aquí: http://api.neo4j.org/1.2/org/neo4j/graphdb/PropertyContainer.html#setProperty(java.lang.String, java.lang.Object), verá que las matrices de bytes están permitidas.
Usando matrices de bytes puede almacenar sus objetos binarios. Cuando almacena objetos binarios (usando Java) en Oracle, también carga los datos como byte [].
Puede almacenar objetos binarios como bytes [] o codificados en String, pero recomendaría almacenar blobs más grandes (por ejemplo> 1,000 bytes) como archivos separados, y solo mantener una referencia al archivo en su base de datos.
Hacemos esto en Structr (http://structr.org) también.
Como se mencionó, hacer esto es altamente desventajoso.
Sin embargo, si decide hacerlo, puede hacerlo de esta manera en C#:
using Neo4jClient;
using Neo4jClient.Cypher;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Neo4JBlob
{
class Program
{
static void Main(string[] args)
{
try
{
GraphClient client = new GraphClient(new Uri("http://localhost:7474/db/data"));
client.Connect();
byte[] image = File.ReadAllBytes("image.jpg");
BlobNode blob = new BlobNode(){Blob = image, name = "An image: " + DateTime.Now.ToShortDateString()};
client.Cypher.Create("(blob:Blob {category})").WithParam("category", blob).ExecuteWithoutResults();
var res = client.Cypher.Match("(b:Blob)").Return<BlobNode>(b => b.As<BlobNode>()).Limit(1).Results;
BlobNode BlobReturned = res.First();
File.WriteAllBytes("image_returned.jpg", BlobReturned.Blob);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.WriteLine(ex.StackTrace);
}
Console.ReadKey();
}
class BlobNode
{
public byte[] Blob
{
get;
set;
}
public string name
{
get;
set;
}
}
}
}
- 1. ¿Es aceptable/bueno almacenar binarios en SVN?
- 2. métodos para almacenar archivos binarios en SVN
- 3. Almacenar objetos en Android
- 4. cuántos datos puedo almacenar por nodo en Neo4j
- 5. node.js almacenar objetos en redis
- 6. La forma más rápida de recuperar/almacenar millones de pequeños objetos binarios
- 7. ¿Utiliza CDATA para almacenar flujos binarios en bruto?
- 8. Almacenar objetos en una sesión en Rails
- 9. Utilice neo4j con R
- 10. ¿Debo almacenar objetos enteros o punteros a objetos en contenedores?
- 11. Django - Almacenar objetos en la sesión
- 12. Almacenar objetos en columnas con Hibernate JPA
- 13. Almacenar objetos de trazado en una lista
- 14. Counting primitives en Neo4j
- 15. Neo4j en la nube
- 16. Forma "adecuada" para almacenar datos binarios con C++/STL
- 17. Mejor manera de almacenar archivos binarios o de imagen
- 18. Identificadores de nodo en neo4j
- 19. Almacenamiento de múltiples gráficos en Neo4J
- 20. Neo4j y ORM (Hibernate)
- 21. Neo4j y django modelos
- 22. Servidor Neo4j contra incrustado
- 23. Neo4j vs OpenLink Virtuoso
- 24. ¿Cómo almacenar de manera eficiente y actualizar datos binarios en Mongodb?
- 25. Datos basados en el tiempo en neo4j
- 26. Desea almacenar objetos en la base de datos MySQL
- 27. Cómo almacenar objetos stl en la memoria compartida (C++)?
- 28. Almacenar y recuperar objetos JavaScript en/desde MongoDB
- 29. Cómo almacenar objetos TimeZoneInfo en una base de datos?
- 30. Cómo almacenar objetos en la base de datos sqlite?
buena perspectiva. Gracias por la advertencia. –