2017-12-12 14 views
4

と比較して非常に遅くなります.GraphAPISでCosmosDBを設定すると、 〜4kの頂点と〜10kのエッジを持つグラフ、GraphAPIとDocumentAPIから同じデータベースへの同様のクエリは、実行時間が大きく異なっています。文書であるとして〜1.8秒、中GraphAPIによって返されるために照会されているCosmos DBでグラフAPIを使用すると、(documentdb)SQL API

var Gremlin = require('gremlin'); 
var config = require("./config"); 
var documentdb = require('documentdb'); 

const docClient = new documentdb.DocumentClient(....); 
const graphClient = Gremlin.createClient(....); 


const start = new Date(); 
graphClient.execute('g.V("12345")', {}, (err, results) => { 
    const end = new Date(); 
    if (err) { 
     return console.error(err); 
    } 

    console.log(`GraphDB API Results in: ${(end.getTime() - start.getTime())/1000}`); 
}); 

var querySpec = { 
    query: 'SELECT * FROM c ' + 
      'WHERE c.id = "12345"', 

}; 
const docStart = new Date(); 
docClient.queryDocuments("dbs/graphdb/colls/sn", querySpec).toArray((err, results) => { 
    const docEnd = new Date(); 
    if (err) { 
     console.error(JSON.stringify(err, null, 2)); 
     return; 
    } 

    console.log(`DocumentDB API Results in: ${(docEnd.getTime() - docStart.getTime())/1000}`) 
}); 

は、このコードの出力は、単一の文書を示しています。私は、次のノード・アプリケーションを使用してのAPIの違いをテストしてきました約0.3秒でdocumentdb apiから戻されました。

DocumentDBのAPI結果:

[ 
    { 
    "label": "company", 
    "id": "12345", 
    "parent": [ 
     { 
     "_value": "54321", 
     "id": "de7c87f7-83db-43c2-8ddd-c5487dd5682e" 
     } 
    ], 
    "name": [ 
     { 
     "_value": "Acme Co", 
     "id": "b4316415-d5c3-4dcc-ac5f-64b1d8c8bd62" 
     } 
    ], 
    "_rid": "KPk3APUeEgFcAAAAAAAAAA==", 
    "_self": "dbs/KPk3AA==/colls/KPk3APUeEgE=/docs/KPk3APUeEgFcAAAAAAAAAA==/", 
    "_etag": "\"0000df07-0000-0000-0000-5a2b23bd0000\"", 
    "_attachments": "attachments/", 
    "_ts": 1512776637 
    } 
] 

GraphDBのAPI結果:

[ 
    { 
    "id": "12345", 
    "label": "company", 
    "type": "vertex", 
    "properties": { 
     "parent": [ 
     { 
      "id": "de7c87f7-83db-43c2-8ddd-c5487dd5682e", 
      "value": "54321" 
     } 
     ], 
     "name": [ 
     { 
      "id": "b4316415-d5c3-4dcc-ac5f-64b1d8c8bd62", 
      "value": "Acme Co" 
     } 
     ] 
    } 
    } 
] 

これらの例のすべては10,000 RUの投入すべての方法で、固定サイズのコレクションです。

ここで何か問題がありますか?より良い/より多く/より少ない指標を作成する必要がありますか? Cosmosのようなクラウドスケールのデータベースでは、クエリの構造に関係なく、1秒未満で1つのドキュメントを返すことはできません。

hasLabel( 'x')が返されるときに5秒以上かかる単純なトラバーサル(gV()。hasLabel( 'x')。out( 'y')。hasLabel( 'z'))カウントは〜40です。 hasLabel( 'x')のカウントが〜1000の場合、トラバーサルは15秒以上かかります。これは私にとっては非常に遅いようです。

私はあらゆるパフォーマンス番号を調べましたが、例は見つかりませんでした。今日の終わりに、私はこの技術からあまりにも多くを期待していますか?

+0

gremlinエンドポイントインフラストラクチャをホストする方法を考えれば、gremlinクエリと直接ドキュメントクエリのオーバーヘッドがあるはずです。しかし、数字は私たちが期待しているものとは少し違って見えます。 [email protected]に連絡してください。私たちは非常に喜んで助けてくれるでしょう! –

答えて

0

問題を把握してくれたMSに感謝します。 gremlin APIエンドポイントからのロールアウトにはいくつかの問題がありました。私のインスタンスは、問題の原因となっていたデータベースインスタンスから別の地域のグレムリンエンドポイント(MSからのメッセージを正しく理解していれば)を呼んでいました。

ポータルで新しいインフラストラクチャに新しいデータベースを展開する機能フラグを設定しました。

私は現在、クエリとトラバーサルのすべてのサブ500ms応答時間を見ています。

関連する問題