2013-11-22 110 views
0

我正在使用Neo4j社區版以及Scala-Neo4j包裝器的Scala,並且我剛剛下載了Neo4j的企業版。我看到企業版中的一些附加功能,如高性能緩存,羣集和3 *生產實例。我如何使用這些功能?我是否需要對使用社區版編寫的代碼進行更改以利用這些功能?Neo4j - 企業版功能

回答

1

這取決於您的部署模型。

如果您在嵌入模式下使用Neo4j,通常使用GraphDatabaseFactory.newEmbeddedDatabase(path)初始化數據庫。在嵌入Neo4j Enterprise時,您必須將其替換爲HighlyAvailableGraphDatabaseFactory.newHighlyAvailableDatabaseBuilder(path).setConfig(map).newGraphDatabase(),其中map包含部署的配置設置,尤其是http://docs.neo4j.org/chunked/stable/ha-configuration.html中記錄的ha參數。

如果部署的應用程序通過REST(服務器部署)訪問Neo4j,則不應更改訪問負載均衡器URL的URL。

請注意,Neo4j企業是雙授權:AGPL(affero-GPL)或商業授權,請參閱http://www.neo4j.org/learn/licensing瞭解更多信息。

+0

我在嵌入模式下使用Neo4j。我可以得到我在我的問題中提到的功能的任何解釋(高性能緩存,羣集和3 *生產實例)。 – yAsH

+0

這一切都在參考手冊中,請參閱http://docs.neo4j.org/chunked/stable/ha.html的Clustering和http://docs.neo4j.org/chunked/stable/operations-backup.html的在線備份和http://docs.neo4j.org/chunked/stable/configuration-caches.html#_object_cache以獲得GC耐藥性緩存(又名高性能緩存)。 –

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

然後,您可以使用Neo4j的Scala的包裝,你會通過其他任何地方HighAvailabilityGraphDatabase進口。但您現在可以從其他企業功能(如實時備份)中受益。從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" 
    } 
} 

注:您還需要確保你有Neo4j的HA在build.sbt(或類似),因爲它是不包括在斯卡拉包裝。

libraryDependencies ++= Seq(
    "org.neo4j" % "neo4j-ha" % "2.1.3" // Replace 2.1.3 with your version 
)