Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j——如何将本地数据库与远程Neo4j数据库服务器同步_Neo4j_Data Synchronization_Transactional Replication - Fatal编程技术网

Neo4j——如何将本地数据库与远程Neo4j数据库服务器同步

Neo4j——如何将本地数据库与远程Neo4j数据库服务器同步,neo4j,data-synchronization,transactional-replication,Neo4j,Data Synchronization,Transactional Replication,我正在做一个项目,我们使用Neo4j作为数据库。我有一个为应用程序构建的远程数据库,托管在云中。还有另一个数据库(本地数据库)托管在客户端位置 问题是:有没有办法同步这两个数据库?是否有任何直接COTS产品可用于此同步?这取决于您运行的版本。 如果您使用企业版,您可以即时同步,但是如果您使用社区,您必须自己进行同步 我通过记录修改本地数据库上数据的所有查询,然后在远程数据库上重播来实现这一点。 下面的代码是在c中执行此操作的示例# 然后,您可以使用希望在服务器之间传输字符串数据的任何方法(我使用

我正在做一个项目,我们使用Neo4j作为数据库。我有一个为应用程序构建的远程数据库,托管在云中。还有另一个数据库(本地数据库)托管在客户端位置


问题是:有没有办法同步这两个数据库?是否有任何直接COTS产品可用于此同步?

这取决于您运行的版本。 如果您使用企业版,您可以即时同步,但是如果您使用社区,您必须自己进行同步

我通过记录修改本地数据库上数据的所有查询,然后在远程数据库上重播来实现这一点。 下面的代码是在c中执行此操作的示例#

然后,您可以使用希望在服务器之间传输字符串数据的任何方法(我使用RESTful服务)并使用以下方法进行重播:

public void ReplayQuery(ReplayQuery replayQuery)
        {
                foreach (var pair in replayQuery.CypherQueryParameters)
                {
                    replayQuery.CypherQueryText = replayQuery.CypherQueryText.Replace("{" + pair.Key + "}", SerializeWithoutQuote(pair.Value));
                }
                var query = new CypherQuery(replayQuery.CypherQueryText, new Dictionary<string, object>(), CypherResultMode.Set, null);

                _client.Connect();
                ((IRawGraphClient) _client).ExecuteCypher(query);
            }
        }
public void ReplayQuery(ReplayQuery ReplayQuery)
{
foreach(replayQuery.CypherQueryParameters中的var对)
{
replayQuery.CypherQueryText=replayQuery.CypherQueryText.Replace(“{”+pair.Key+“}”),序列化而不引用(pair.Value));
}
var query=new CypherQuery(replayQuery.CypherQueryText,new Dictionary(),CypherResultMode.Set,null);
_client.Connect();
((IRawGraphClient)\ u client.ExecuteCypher(查询);
}
}

注意-您需要确保只回放一次,并且按顺序回放查询。

这取决于您运行的版本。 如果您使用企业版,您可以即时同步,但是如果您使用社区,您必须自己进行同步

我通过记录修改本地数据库上数据的所有查询,然后在远程数据库上重播来实现这一点。 下面的代码是在c中执行此操作的示例#

然后,您可以使用希望在服务器之间传输字符串数据的任何方法(我使用RESTful服务)并使用以下方法进行重播:

public void ReplayQuery(ReplayQuery replayQuery)
        {
                foreach (var pair in replayQuery.CypherQueryParameters)
                {
                    replayQuery.CypherQueryText = replayQuery.CypherQueryText.Replace("{" + pair.Key + "}", SerializeWithoutQuote(pair.Value));
                }
                var query = new CypherQuery(replayQuery.CypherQueryText, new Dictionary<string, object>(), CypherResultMode.Set, null);

                _client.Connect();
                ((IRawGraphClient) _client).ExecuteCypher(query);
            }
        }
public void ReplayQuery(ReplayQuery ReplayQuery)
{
foreach(replayQuery.CypherQueryParameters中的var对)
{
replayQuery.CypherQueryText=replayQuery.CypherQueryText.Replace(“{”+pair.Key+“}”),序列化而不引用(pair.Value));
}
var query=new CypherQuery(replayQuery.CypherQueryText,new Dictionary(),CypherResultMode.Set,null);
_client.Connect();
((IRawGraphClient)\ u client.ExecuteCypher(查询);
}
}

注意-您需要确保只重播一次,并且按顺序重播查询。

我认为这是一个有效的问题,但我认为您应该删除粗体的句子,因为它直接与我们的一个离题原因相冲突:要求非现场资源或产品推荐。我所知道的这些可能会对您有所帮助,这并不会像你想的那样有帮助:我认为这是一个有效的问题,但我相信你应该删除你的粗体句子,因为它直接与我们的一个离题原因相冲突:要求一个离题资源或产品推荐。这是我所知道的可能对你有帮助的全部内容,而且它也不会像你所希望的那样有多大帮助:有没有更简单的方法或者其他可用的工具?我有社区版3,我不知道有什么工具可以帮你做到这一点。因此,要么自己动手,要么为Neo4j Enterprise付出天文数字的成本。有了上面的代码和一些将重播查询存储为字符串的机制,以及一个表示同步是否成功的标志(我使用MongoDB),您应该在一天左右的时间内启动并运行。有没有更简单的方法或可用的工具?我有社区版3,我不知道有什么工具可以帮你做到这一点。因此,要么自己动手,要么为Neo4j Enterprise付出天文数字的成本。使用上面的代码和一些将重播查询存储为字符串的机制,以及一个表示同步是否成功的标志(我使用MongoDB),您应该在一天左右的时间内启动并运行。