我正在使用Neo4j社区版和Scala与Scala-Neo4j包装器,我刚刚下载了Neo4j的企业版。我在企业版中看到了一些额外的功能,如高性能缓存,群集和3 *生产实例。如何使用这些功能?我是否需要对使用社区版编写的代码进行任何更改才能使用这些功能?
答案 0 :(得分:1)
这取决于您的部署模型。
如果您在嵌入模式下使用Neo4j,通常使用GraphDatabaseFactory.newEmbeddedDatabase(path)
初始化数据库。在使用Neo4j Enterprise嵌入式时,您必须将HighlyAvailableGraphDatabaseFactory.newHighlyAvailableDatabaseBuilder(path).setConfig(map).newGraphDatabase()
替换为map
,其中{{1}}包含部署的配置设置,尤其是http://docs.neo4j.org/chunked/stable/ha-configuration.html中记录的ha参数。
如果部署您的应用程序通过REST(服务器部署)访问Neo4j,则不应更改访问负载均衡器URL的URL。
请注意,Neo4j企业是双重许可:AGPL(affero-GPL)或商业许可,有关此问题的更多信息,请参阅http://www.neo4j.org/learn/licensing。
答案 1 :(得分:0)
我知道这是一个很老的问题,但其他人可能觉得这很有用。可以将Scala Neo4j Wrapper与HA实例一起使用。
您可以延长GraphDatabaseServiceProvider
。要获得群集等企业功能,您需要在每个群集节点上运行应用程序实例。
package graphdatabase
import scala.collection.JavaConversions._
import eu.fakod.neo4jscala.{
Neo4jWrapper, DatabaseService,
DatabaseServiceImpl, GraphDatabaseServiceProvider
}
import org.neo4j.cluster.ClusterSettings
import org.neo4j.kernel.ha.HaSettings
import org.neo4j.graphdb.factory.HighlyAvailableGraphDatabaseFactory
object HighAvailabilityGraphDatabase extends Neo4jWrapper with GraphDatabaseServiceProvider {
def neo4jStoreDir = "/path/to/db"
// The config params will vary for each cluster node.
// You could use environment variables for example to configure.
def configParams = Map(
ClusterSettings.server_id.name -> sys.env.get("SERVER_ID").get, // e.g. 1
HaSettings.ha_server.name -> sys.env.get("HA_SERVER").get, // e.g. server1:6001
ClusterSettings.cluster_server.name -> sys.env.get("CLUSTER_SERVER").get, // e.g.server1:5001
ClusterSettings.initial_hosts.name -> sys.env.get("INITIAL_HOSTS").get // e.g. server1:5001,server2:5001
)
val ds: DatabaseService = {
val gdb = DatabaseServiceImpl(new HighlyAvailableGraphDatabaseFactory()
.newHighlyAvailableDatabaseBuilder(neo4jStoreDir)
.setConfig(mapAsJavaMap(configParams))
.newGraphDatabase
)
sys.addShutdownHook({
shutdown(gdb)
})
gdb
}
}
您还应该能够在配置中配置高性能缓存,尽管我会检查the docs
然后,您可以像从HighAvailabilityGraphDatabase
导入一样使用Neo4j Scala包装器。但您现在可以获得其他企业功能的好处,例如实时备份。从Scala包装器访问底层Java数据库服务也很容易。
import graphdatabase.HighAvailabilityGraphDatabase._
object Foo {
withTx { implicit db =>
// use db.gds to access the underlying GraphDatabaseService object.
// otherwise create nodes etc as per usual.
val node = createNode
node("foo") = "bar"
}
}
注意:您还需要确保在build.sbt(或类似版本)中包含Neo4j HA,因为它不包含在Scala包装器中。
libraryDependencies ++= Seq(
"org.neo4j" % "neo4j-ha" % "2.1.3" // Replace 2.1.3 with your version
)