Aracılığıyla paylaş


Apache Gremlin için Azure Cosmos DB yürütme profili başvurusu

Önemli

99,999% kullanılabilirlik hizmet düzeyi sözleşmesi (SLA), anında otomatik ölçeklendirme ve birden çok bölgede otomatik yük devretme ile yüksek ölçekli senaryolar için bir veritabanı çözümü mü arıyorsunuz? NoSQL için Azure Cosmos DB'ye göz önünde bulundurun.

Çevrimiçi analitik işleme (OLAP) grafı uygulamak mı yoksa mevcut bir Apache Gremlin uygulamasını geçirmek mi istiyorsunuz? Microsoft Fabric'te Graph'i göz önünde bulundurun.

Bu makalede Apache Gremlin için Azure Cosmos DB'deki yürütme profili özelliğine yönelik bir başvuru sağlanır. İşlev tarafından executionProfile() döndürülen yanıtın yapısını ve özelliklerini açıklar.

Yanıt

İşlev executionProfile() çağrısının yanıtı, aşağıdaki yapıya sahip bir JSON nesnelerinin hiyerarşisini verir.

Gremlin işlemi

Bu nesne yürütülen gremlin işleminin tamamını temsil eder. Bu nesnenin adı gremlin. Bu nesne aşağıdaki özellikleri içerir:

Description
gremlin Yürütülen açık Gremlin deyimi.
totalTime Adımın yürütülmesinin tahakkuk ettirilen milisaniye cinsinden zamanı.
metrics Sorguyu gerçekleştirmek için yürütülen Cosmos DB çalışma zamanı işleçlerinin her birini içeren bir dizi. Bu liste yürütme sırasına göre sıralanır.

Apache Gremlin çalışma zamanı işleçleri için Azure Cosmos DB

Bu liste, Gremlin işleminin tamamının bileşenlerinin her birini temsil eder. Liste olarak adlandırılır metrcis. Bu liste yürütme sırasına göre sıralanır. Her nesne aşağıdaki özellikleri içerir:

Description
name İşlecin adı. Bu özellik, değerlendirilen ve yürütülen adım türüdür.
time Belirli bir işlecin aldığı milisaniye cinsinden süre.
annotations Yürütülen işlecine özgü ek bilgiler içerir.
annotations.percentTime Belirli işleci yürütmek için geçen toplam sürenin yüzdesi.
counts Bu işleç tarafından depolama katmanından döndürülen nesne sayısı. Bu sayı içindeki skaler değerde counts.resultCount yer alır.
storeOps Bir veya birden çok bölüme yayılabilir bir depolama işlemini temsil eder.
storeOps.fanoutFactor Bu belirli depolama işlemine erişilen bölüm sayısını temsil eder.
storeOps.count Bu depolama işleminin döndürdüğünü sonuç sayısını temsil eder.
storeOps.size Belirli bir depolama işleminin sonucunun bayt cinsinden boyutunu temsil eder.

Örnek yanıt

JSON biçiminde bir örnek yanıt aşağıda verilmişti:

[
  {
    "gremlin": "g.V().hasLabel('tweet').out().executionProfile()",
    "totalTime": 42,
    "metrics": [
      {
        "name": "GetVertices",
        "time": 31,
        "annotations": { "percentTime": 73.81 },
        "counts": { "resultCount": 30 },
        "storeOps": [ { "fanoutFactor": 1, "count": 13, "size": 6819, "time": 1.02 } ]
      },
      {
        "name": "GetEdges",
        "time": 6,
        "annotations": { "percentTime": 14.29 },
        "counts": { "resultCount": 18 },
        "storeOps": [ { "fanoutFactor": 1, "count": 20, "size": 7950, "time": 1.98 } ]
      },
      {
        "name": "GetNeighborVertices",
        "time": 5,
        "annotations": { "percentTime": 11.9 },
        "counts": { "resultCount": 20 },
        "storeOps": [ { "fanoutFactor": 1, "count": 4, "size": 1070, "time": 1.19 } ]
      },
      {
        "name": "ProjectOperator",
        "time": 0,
        "annotations": { "percentTime": 0 },
        "counts": { "resultCount": 20 }
      }
    ]
  }
]

Yanıt şeması

Yanıt bu JSON şemasıyla da eşleşir:

[
  {
    "type": "object",
    "properties": {
      "gremlin": { "type": "string" },
      "totalTime": { "type": "number" },
      "metrics": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "name": { "type": "string" },
            "time": { "type": "number" },
            "annotations": {
              "type": "object",
              "properties": {
                "percentTime": { "type": "number" }
              },
              "additionalProperties": true
            },
            "counts": {
              "type": "object",
              "properties": {
                "resultCount": { "type": "number" }
              },
              "additionalProperties": true
            },
            "storeOps": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "fanoutFactor": { "type": "number" },
                  "count": { "type": "number" },
                  "size": { "type": "number" },
                  "time": { "type": "number" }
                },
                "additionalProperties": true
              }
            }
          },
          "additionalProperties": true
        }
      }
    },
    "required": ["gremlin", "totalTime", "metrics"],
    "additionalProperties": true
  }
]

Operatörler

Description
GetVertices Bu adım, kalıcılık katmanından önceden belirlenmiş bir nesne kümesi alır.
GetEdges Bu adım, bir köşe kümesine yakın olan kenarları alır. Bu adım bir veya birden çok depolama işlemine neden olabilir.
GetNeighborVertices Bu adım, bir kenar kümesine bağlı köşeleri alır. Kenarlar, hem kaynak hem de hedef köşelerinin bölüm anahtarlarını ve benzersiz tanımlayıcılarını içerir.
Coalesce Bu adım, Gremlin adımı her yürütülürken iki işlemin değerlendirilmesini coalesce() hesaplar.
CartesianProductOperator Bu adım, iki veri kümesi arasında kartezyen ürünü hesaplar. Koşul her to() kullanıldığında veya from() kullanıldığında yürütülür.
ConstantSourceOperator Bu adım, sonuç olarak sabit bir değer üretmek için bir ifade hesaplar.
ProjectOperator Bu adım, önceki işlemlerin sonucunu kullanarak bir yanıtı hazırlar ve serileştirir.
ProjectAggregation Bu adım, toplama işlemi için bir yanıtı hazırlar ve serileştirir.