在Neo4j中存储二进制对象

Zub*_*air 13 neo4j

Neo4j似乎不允许我存储二进制对象.这是否意味着我必须将Neo4j与其他数据存储结合使用,例如文件系统.,Oracle等?

Vag*_*rdi 36

Daniel已经回答说可以在Neo4J中存储二进制对象.

但我建议你不要这样做.你不能对数据库中的二进制对象做任何有趣的事情 你无法搜索它们.通过存储二进制对象,您将实现的唯一目标是 - 增加数据库的文件大小.请注意,Neo4J不能横向扩展.它没有自动分片.因此,如果你的数据库变得太大,你就会遇到麻烦.通过将二进制文件存储在文件系统或外部分布式键值存储(如riak,cassandra,hadoop等)中,可以使数据库保持较小,这有利于提高性能,备份和避免水平扩展问题.


Dan*_*iel 10

如果您在这里查看API:http://api.neo4j.org/1.2/org/neo4j/graphdb/PropertyContainer.html#setProperty (java.lang.String,java.lang.Object),您会看到该字节数组被允许.

使用字节数组可以存储二进制对象.在Oracle中存储二进制对象(使用Java)时,也会将数据加载为byte [].


Axe*_*ner 6

您可以将二进制对象存储为byte []或以String形式编码,但我建议将较大的(例如> 1,000字节)blob存储为单独的文件,并且只保留对数据库中文件的引用.

我们也在Structr(http://structr.org)中这样做.