2017-08-15 12 views
0

gremlinで2つのクエリがあります。最初は頂点を追加し、もう1つは追加した頂点と存在する頂点の間にエッジを追加します。私はC#でプログラムを書いたようにGraph Cosmos DBでのトランザクション

string query1 = $"g.addV('session').property('id','{session_id}').property('initialState', 'start')"; 
string query2 = $"g.V('{session_id}').addE('belongs').to(g.V('{userId}'))"; 

、最初のアイデアは、上記のコマンドの両方を実行してくださいしたり、それらのいずれも、C#でTransactionScopeを使用しています。しかし、Cosmos DBにはないので、私の問題は解決されていません。質問はです。のGraph Cosmos DBのC#でこれらのコマンドを実行するにはどうすればよいですか?

これをgremlinで解決する方法はありますか? graph.tx().commit()はCosmos DBで動作しますか?

// In A Transaction Scope 
IDocumentQuery<dynamic> query = database.Client.CreateGremlinQuery<dynamic>(database.Graph, query1); 
query.ExecuteNextAsync().Result; 

query = database.Client.CreateGremlinQuery<dynamic>(database.Graph, query2); 
query.ExecuteNextAsync().Result; 

答えて

0

残念ながら、CosmosDBはgremlinコマンドの実行時にサポートトランザクションを持っていません。

あなたがまだいない場合は、少なくともconsistency levelセッションを使用することをおすすめします。これにより、同じセッション内で実行される複数のgremlinコマンド間の書き込みを確実に読み取ることができます。既定では、DocumentClientは、対象のドキュメントコレクションが構成されている整合性レベルを前提としています。

これ以降、SDKのgremlinコマンドのサポートでは、トランザクションを近似する他の手法は提供されていません。 Cosmos DBのSQLコマンドやストアドプロシージャを使用する場合は他にもオプションがありますが、これによりgremlinクエリを使用してデータを操作できなくなります。

+1

こんにちは、この回答は1年以上前に書かれているので、それに何か変更がありますか? Microsoft.Azure.Graphsへのトランザクションサポートを含める予定はありますか?ありがとう –

関連する問題