と比較して非常に遅くなります.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秒以上かかります。これは私にとっては非常に遅いようです。
私はあらゆるパフォーマンス番号を調べましたが、例は見つかりませんでした。今日の終わりに、私はこの技術からあまりにも多くを期待していますか?
gremlinエンドポイントインフラストラクチャをホストする方法を考えれば、gremlinクエリと直接ドキュメントクエリのオーバーヘッドがあるはずです。しかし、数字は私たちが期待しているものとは少し違って見えます。 [email protected]に連絡してください。私たちは非常に喜んで助けてくれるでしょう! –