Cosmos DB örneği oluşturma

Tamamlandı

Bu ünitede Azure Cosmos DB ve verileri nasıl düzenlediği hakkında bilgi edineceksiniz. Azure Cosmos DB veritabanlarını ve kapsayıcılarını oluşturmak ve korumak için Visual Studio Code'u nasıl kullanacağınızı göreceksiniz.

Azure Cosmos DB nedir?

Azure Cosmos DB, belge veritabanlarını uygulayan bir bulut hizmetidir. Belgedeki verilerin JSON söz dizimine uyması gerekir. JSON belgesi, belgelerin özelliklerini, alt belgelerini ve dizilerini içerebilir.

{
    "id": "08225A9E-F2B3-4FA3-AB08-8C70ADD6C3C2",
    "partitionKey": "Bikes",
    "name": "Touring-1000 Blue, 50",
    "description": "The product called \"Touring-1000 Blue, 50\"",
    "price": 2384.0700000000002,
    "inventory": [
        { "location": "Dallas", "inventory": 96 },
        { "location": "Seattle", "inventory": 85 }
      ]
}

İlişkisel veritabanındaki bir tablodan farklı olarak, Azure Cosmos DB'deki belgeler önceden tanımlanmış bir şemayı izlemez. Bu, veritabanının farklı şekillere ve boyutlara sahip çeşitli belgeleri tutmasına olanak tanır. Örneğin, farklı müşterilerle ilgili farklı bilgileri aynı veritabanında depolayabilirsiniz. Belki de adres geçmişinin tamamını bir müşteri için dizi olarak kaydedebilirsiniz. Kredibilite gibi ek bilgileri kaydedebilirsiniz.

Azure Cosmos DB bulut hizmeti hiyerarşi olarak düzenlenir. En üstte bir Azure Cosmos DB hesabı (kaynağınız) yer alıyor. Azure Cosmos DB hesabı, bir dizi veritabanı için güvenlik birimidir. Azure Cosmos DB hesabı, veritabanlarının konumunu ve bu veritabanlarına erişmek için gereken güvenlik bilgilerini belirtir. Bir hesap içinde, bir veya daha fazla veritabanı oluşturursunuz. Her bir veritabanı içinde bir veya daha fazla kapsayıcı oluşturursunuz. Belgeleri kapsayıcılarda depolarsınız.

Conceptual image of parent-child relationship of account, database, and container in Cosmos D B.

Cosmos DB kapsayıcıları ve bölüm anahtarları

Her kapsayıcı bir dizi bölüm olarak düzenlenir. Bölümler kabaca diskteki fiziksel dosyalara karşılık gelir. Büyük bir bölümün kendi dosyası olabilir, ancak birçok küçük bölüm tek bir dosyada birleştirilebilir. Her belgenin, ait olduğu bölümü tanımlayan bir bölüm anahtarı vardır. Bölümleme kullanarak ilgili belgeleri birlikte depolar ve verilere erişme yönteminizin iyileştirilmesine yardımcı olursunuz.

Aşağıdaki örnekte, Contoso uygulamasının bir parçası olarak ürün bilgilerini depolayan bir JSON belgesi gösterilmektedir. Bu veriler başka bir sistemden geldiği için kimlikler zaten GUID olacak şekilde yapılandırılmıştır. Kendi kapsayıcınızda kimliğinizi getirebilir veya Cosmos DB'nin bir kimlik sağlamasına izin vekleyebilirsiniz. Yeni bir belge eklediğinizde, kimliği ve bölüm anahtarını sağlamanız gerekir (bölüm anahtarları kullanılıyorsa).

{
    "id": "08225A9E-F2B3-4FA3-AB08-8C70ADD6C3C2",
    "categoryName": "Bikes, Touring Bikes",
    "sku": "BK-T79U-50",
    "name": "Touring-1000 Blue, 50",
    "description": "The product called \"Touring-1000 Blue, 50\"",
    "price": 2384.0700000000002,
    "tags": [
        {
            "_id": "27B7F8D5-1009-45B8-88F5-41008A0F0393",
            "name": "Tag-61"
        }
    ],
    "inventory": [
        { "location": "Dallas", "inventory": 96 },
        { "location": "Seattle", "inventory": 85 },
        { "location": "Boston", "inventory": 4 },
        { "location": "Miami", "inventory": 12 },
        { "location": "San Diego", "inventory": 58 }
      ]
}

Contoso şirketi, kategori adı olan categoryName'i bölüm anahtarı olarak kullanmaya karar verdi çünkü bu, belgelerin kapsayıcı genelinde eşit bir şekilde dağıtılmasını sağlıyor. Kapsayıcı oluşturulduğunda kapsayıcı için bölüm anahtarı alanı ayarlanır. Kapsayıcıya eklenen her yeni belge için bölüm anahtarı JSON belgesinin bir parçası olarak eklenir. Yukarıdaki örnekte, doğru biçimlendirilmiş bir belgenin en düşük gereksinimleri benzersiz kimlik ve bölüm anahtarı id olarak ve categoryName'tir. Başka bir sistemden veri kümesi getirir ve diğer sistemlere bağlanmak için benzersiz kimliğini korumak isterseniz, alanını kullanmayı id seçebilir veya Cosmos DB'nin yeni benzersiz bir benzersiz id oluşturmasına izin verirseniz kimliğiniz ayrı bir özellik adında depolanabilir.

Dekont

Azure Cosmos DB, belgelerinize kendi alanlarını ekler. Bu alanların çoğu, iç kullanım amaçlıdır ve çoğu durumda bunları doğrudan değiştirmemeniz gerekir. Özel durum, id adlı bir alandır. Azure Cosmos DB, veritabanındaki belgeyi tanımlamak için bu alanı kullanır ve her belgenin benzersiz bir kimliği olmalıdır.

Azure Cosmos DB aktarım hızı maliyeti

Azure Cosmos DB, veritabanlarının performansını ve faturalamasını yönetmek için saniye başına İstek Birimleri (RU/sn) kavramını kullanır. Bu ölçü, gerekli performansı desteklemek için sağlanması gereken temel fiziksel kaynakları özetler. Bir veritabanı veya kapsayıcı oluşturduğunuzda, kaç RU/s ayrılacağını belirtirsiniz. Uygun şekilde ücretleri yansıtırsınız.

1 KB'lık bir öğe için nokta okuma (kimliğine ve bölüm anahtarı değerine göre tek bir öğeyi getirme) maliyeti 1 İstek Birimi 'dir (veya 1 RU). Diğer tüm veritabanı işlemlerine RU'lar kullanılarak benzer şekilde maliyet atanır. Azure Cosmos DB kapsayıcınızla etkileşim kurmak için hangi API’yi kullanırsanız kullanın maliyetler her zaman RU’lar tarafından ölçülür. Veritabanı işleminin yazma, nokta okuma veya sorgulama olması fark etmez; maliyetler her zaman RU cinsinden ölçülür.

400 RU/sn sağlar ve 40 RU'ya mal olan bir sorgu yayınlarsanız, saniyede bu tür 10 sorgu yayımlayabilirsiniz. Bunun ötesindeki tüm istekler hız sınırlaması alır ve isteği yeniden denemeniz gerekir. İstemci sürücüleri kullanıyorsanız, bunlar otomatik yeniden deneme mantığını destekler.

RU/sn'lerinizi mümkün olduğunca düşük tutmak için aşağıdakileri göz önünde bulundurun:

Object Dikkat edilmesi gereken noktalar
Belge boyutu KB'lerdeki daha büyük bir belge RU'ları artırır.
Belge dizini oluşturma Yüksek performanslı dizin oluşturma RU'ları azaltabilir.
Belge özellik sayısı Tüm özelliklerinizin dizinini oluşturursanız, daha fazla özellik kullanmak RU'ları artırır. Anahtar özelliklerinin seçmeli olarak dizinlenmesi için daha az RU gerekir.
Veri tutarlılığı Güçlü ve sınırlanmış tutarlılık düzeyleri, diğer gevşek tutarlılık düzeylerinden daha fazla RU tüketir.
Belge okuma türü Bir öğenin kimliğini ve bölüm anahtarı maliyetini sorgulardan çok daha az ru kullanarak nokta okuma.
Sorgu desenleri Sorgunun karmaşıklığı, tüketilen RU sayısını etkiler.
Betik kullanımı Saklı yordamlar, tetikleyiciler ve Kullanıcı tanımlı işlevler, bu betiklerin içindeki sorgulara ek olarak RU'ları kullanır.

Cosmos DB'ye erişim

Azure Cosmos DB, Cosmos DB'ye bağlanmak için aşağıdaki yolları içerir:

  • Visual Studio Code
  • JavaScript (ve diğer dil) SDK'ları
  • Azure portal
  • Azure CLI
  • PowerShell
  • REST API

Azure Cosmos DB API'leri

Azure Cosmos DB çeşitli programlı API'leri destekler. Bu API’ler, diğer genel NoSQL veritabanları tarafından kullanılan API’lere olabildiğince yakından uygunluk sağlar. Amaç, geliştiricilerin yeni bir paradigma öğrenmek veya uygulamalarında önemli değişiklikler yapmak zorunda kalmadan bu veritabanlarından Azure Cosmos DB'ye kolay bir geçiş yolu sağlamaktır. Şu anda desteklenen API’ler şunlardır:

  • Çekirdek (SQL)
  • MongoDB
  • Cassandra
  • Gremlin (genel bir grafik veritabanı API’si)
  • Azure Tablo Depolaması

Çekirdek (SQL) API'si, çoğu ilişkisel veritabanı yönetim sistemi tarafından kullanılan SQL dilinin bir çeşididir. Tablolar yerine şemasız belge kümelerini işlemeye yönelik kısıtlamalar ve uyarlamalar söz konusudur.

Azure Cosmos DB'yi yönetmek için Visual Studio Code kullanma

Geliştirme ortamınız olarak Visual Studio Code'u kullanırken, Azure Cosmos DB veritabanlarını ve uygulamalarını derlemek için Azure Veritabanları uzantısını yükleyebilirsiniz.

Screenshot of the Azure Databases extension in Visual Studio Code marketplace

Visual Studio Code için Uzantı Marketi’nden uzantıyı yüklersiniz. Veritabanları uzantısını yükledikten sonra Cosmos DB uzantısını kullanmak için Azure gezgini Shift + Alt + A'yı kullanın.

Azure gezgininden Cosmos DB'yi yönetme

Visual Studio Code'un Azure gezginindeki Veritabanları uzantısı, Visual Studio Code ile tümleştirilmiş bir grafik kullanıcı arabirimi sağlar. Uzantıyı kullanarak Azure Cosmos DB hesapları, veritabanları, kapsayıcılar ve belgeler oluşturabilir, silebilir ve yönetebilirsiniz.

Screenshot of the Azure Databases extension in Visual Studio Code as user right-clicks on the Documents node for a contextual menu to create a new document.

Portalda erişim hesabı

Uzantı ayrıca Hesabınızı Azure portalında açma olanağı sağlayarak Cosmos DB'nin tüm işlevlerine kolay erişim sağlar. Hesabınıza sağ tıklayıp Portalda aç'ı seçtiğinizde buna erişebilirsiniz.

Screenshot of the Azure Databases extension in Visual Studio Code as user right-clicks on the account node to open account in Azure portal.

Portal, Cosmos DB'nizin tüm yapılandırmalarına ve veritabanlarınız ile kapsayıcılarınız için Veri Gezgini erişim sağlar. Verilerinizi eklemek, güncelleştirmek, silmek ve sorgulamak için Veri Gezgini kullanın.

Screenshot of the Azure portal with the Data Explorer showing the query window open with a JSON document displayed.