私はNeo4jをデータベースとして使用しているプロジェクトで作業しています。私はアプリケーションのために構築され、クラウドでホストされているリモートデータベースを持っています。クライアントの場所にホストされている別のデータベース(ローカルデータベース)があります。Neo4j - ローカルデータベースをリモートneo4jデータベースサーバと同期させる方法
質問:2つのデータベースを同期する方法はありますか?この同期に使用できる直接COTS製品はありますか?
私はNeo4jをデータベースとして使用しているプロジェクトで作業しています。私はアプリケーションのために構築され、クラウドでホストされているリモートデータベースを持っています。クライアントの場所にホストされている別のデータベース(ローカルデータベース)があります。Neo4j - ローカルデータベースをリモートneo4jデータベースサーバと同期させる方法
質問:2つのデータベースを同期する方法はありますか?この同期に使用できる直接COTS製品はありますか?
実行中のバージョンによって異なります。 Enterprise Editionを使用している場合は、すぐに同期することができますが、コミュニティを使用する場合は自分で行う必要があります。
これは、ローカルデータベースのデータを変更してからリモートデータベースで再生するすべてのクエリを記録することで行います。以下 のコードは、C#でこれを行うの一例である
var query = _client.Cypher
.Match("(p:Person)")
.Where((Person p) => p.Id == id)
.Set("p = {person}")
.WithParam("person", person);
query.ExecuteWithoutResults();
RecordQuery(query);
private static void RecordQuery(dynamic query)
{
var syncStore = new SynchronisationStore();
var replayQuery = syncStore.Create();
replayQuery.TimeStamp = DateTime.Now;
var queryText = query.Query.QueryText.Replace("\r\n", " ");
replayQuery.CypherQueryText = queryText;
replayQuery.CypherQueryParameters = query.Query.QueryParameters;
syncStore.Store(replayQuery);
}
あなたは、あなたが使用して文字列サーバ間のデータ(私は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);
}
}
注記 - 一度だけ再生し、順番に質問を再生することを確認する必要があります。
もっと簡単な方法や、それを行うためのツールがありますか?私はコミュニティ版のバージョン3を持っています –
私はあなたのためにこれを行うことができるツールを知りません。だから、それは自分自身で行うか、Neo4j Enterpriseの天文的なコストを取り除くことです。上記のコードと、再生クエリを文字列として保存する何らかのメカニズムと、同期が成功したかどうかを示すフラグ(私はMongoDBを使用しています)を使用すると、1日程度で稼働するはずです。 – joe
私はこれが有効な質問だと思いますが、オフサイトのリソースや製品の推奨事項を尋ねる理由に直接反するので、大胆な文章を削除する必要があります。 –
これは私が知っているすべてのもので、あなたを助けてくれるかもしれません。そして、あなたが好きなだけ助けにならないでしょう:http://stackoverflow.com/questions/18830686/export-whole-database-in-cypher-format -ascii-text –