在分布式模式下在Orientdb中创建数据库

时间:2016-01-28 14:19:48

标签: distributed orientdb distributed-database orientdb-2.1

我们的系统以编程方式创建OrientDB数据库,并为每个客户使用一个数据库(在任何人开始解雇此设计之前,原因是安全性,在数据中心/区域之间移动某些客户/数据的可能性以及重新定位到内部部署的可能性)。

这在OrientDB中以单一模式运行良好。但是,当数据库以分布式模式设置时(3台服务器,在亚马逊上)。说得客气一点,很奇怪。我知道文档并没有说明这一点得到支持,但我找不到任何说它也没有的东西。

有时数据库创建正常,但客户端无限期锁定(在OAdaptiveLock.lock()中)。有时整个集群需要重新启动才能使用数据库,有时候,正如编写时一样,一个OrientDB节点在与其他节点同步后会自行关闭(Address[1.2.3.4]:2434 is SHUTTING_DOWN [LifecycleService] - > Terminating forcefully... [Node])。错误消息由堆栈跟踪继续(见下文)。

所以,对我的问题:

  1. OrientDB是否支持在分布式模式下在线创建数据库?
  2. 如果是这样,我可以做错什么?
  3. 如果没有,是否有计划在未来支持这项工作?
  4. 提前致谢!

    ./ Anders

    堆栈跟踪:

    2016-01-28 14:00:01:395 SEVER [infogile02] error on creating cluster 'superclassesedge_infogile02' in class 'superClassesEdge':  [OHazelcastPlugin][infogile02] Error on starting distributed plugin
    com.orientechnologies.orient.server.distributed.ODistributedException: com.orientechnologies.orient.server.distributed.ODistributedException: Error on creating cluster 'superclassesedge_infogile02' in class 'superClassesEdge'
        at com.orientechnologies.orient.server.hazelcast.OHazelcastDistributedDatabase.configureDatabase(OHazelcastDistributedDatabase.java:241)
        at com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin.installDatabaseFromNetwork(OHazelcastPlugin.java:1131)
        at com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin.requestDatabase(OHazelcastPlugin.java:971)
        at com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin.installDatabase(OHazelcastPlugin.java:908)
        at com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin.installNewDatabases(OHazelcastPlugin.java:1468)
        at com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin.startup(OHazelcastPlugin.java:185)
        at com.orientechnologies.orient.server.OServer.registerPlugins(OServer.java:979)
        at com.orientechnologies.orient.server.OServer.activate(OServer.java:346)
        at com.orientechnologies.orient.server.OServerMain.main(OServerMain.java:41)
    Caused by: com.orientechnologies.orient.server.distributed.ODistributedException: Error on creating cluster 'superclassesedge_infogile02' in class 'superClassesEdge'
        at com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin.installLocalClusterPerClass(OHazelcastPlugin.java:1631)
        at com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin.installDbClustersForLocalNode(OHazelcastPlugin.java:1300)
        at com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin$2.call(OHazelcastPlugin.java:1134)
        at com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin$2.call(OHazelcastPlugin.java:1131)
        at com.orientechnologies.orient.server.hazelcast.OHazelcastDistributedDatabase.configureDatabase(OHazelcastDistributedDatabase.java:239)
        ... 8 more
    Caused by: com.orientechnologies.orient.core.exception.ODatabaseException: Error on saving record #0:1
        at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.executeSaveRecord(ODatabaseDocumentTx.java:2044)
        at com.orientechnologies.orient.core.tx.OTransactionNoTx.saveRecord(OTransactionNoTx.java:159)
        at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.save(ODatabaseDocumentTx.java:2568)
        at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.save(ODatabaseDocumentTx.java:121)
        at com.orientechnologies.orient.core.record.impl.ODocument.save(ODocument.java:1768)
        at com.orientechnologies.orient.core.record.impl.ODocument.save(ODocument.java:1764)
        at com.orientechnologies.orient.core.metadata.schema.OSchemaShared$1.call(OSchemaShared.java:1213)
        at com.orientechnologies.orient.core.db.OScenarioThreadLocal.executeAsDistributed(OScenarioThreadLocal.java:71)
        at com.orientechnologies.orient.core.metadata.schema.OSchemaShared.saveInternal(OSchemaShared.java:1208)
        at com.orientechnologies.orient.core.metadata.schema.OSchemaShared.releaseSchemaWriteLock(OSchemaShared.java:642)
        at com.orientechnologies.orient.core.metadata.schema.OClassImpl.releaseSchemaWriteLock(OClassImpl.java:1824)
        at com.orientechnologies.orient.core.metadata.schema.OClassImpl.releaseSchemaWriteLock(OClassImpl.java:1819)
        at com.orientechnologies.orient.core.metadata.schema.OClassImpl.addCluster(OClassImpl.java:1088)
        at com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin.installLocalClusterPerClass(OHazelcastPlugin.java:1624)
        ... 12 more
    Caused by: java.lang.NullPointerException
        at com.orientechnologies.orient.core.storage.impl.local.paginated.atomicoperations.OAtomicOperationsManager.endAtomicOperation(OAtomicOperationsManager.java:148)
        at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.doUpdateRecord(OAbstractPaginatedStorage.java:2046)
        at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.updateRecord(OAbstractPaginatedStorage.java:971)
        at com.orientechnologies.orient.server.distributed.ODistributedStorage.updateRecord(ODistributedStorage.java:708)
        at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.executeSaveRecord(ODatabaseDocumentTx.java:2005)
        ... 25 more
    
    2016-01-28 14:00:01:398 INFO  [10.0.9.105]:2434 [orientdb] [3.5.3] Address[10.0.9.105]:2434 is SHUTTING_DOWN [LifecycleService]
    2016-01-28 14:00:01:398 WARNI [10.0.9.105]:2434 [orientdb] [3.5.3] Terminating forcefully... [Node]
    2016-01-28 14:00:01:399 INFO  [10.0.9.105]:2434 [orientdb] [3.5.3] Shutting down connection manager... [Node]
    

1 个答案:

答案 0 :(得分:1)

tl的严重案件;代表博士。 Orientdb中的分布式体系结构文档清楚地指出“在自动创建集群时,在多个节点上创建数据库可能会导致同步问题。请在分布式模式下运行之前创建数据库”但我没有读到那么远。

通过文档,建议的解决方案似乎是“分区图”(在此处描述http://orientdb.com/docs/2.0/orientdb.wiki/Partitioned-Graphs.html)。该解决方案并未真正解决我们所有的问题,但理论上已经足够好了。

然而,实际上这不起作用,它需要重大的重写,因为事务需要以不同的方式进行管理。更多关于另一个话题......