Aracılığıyla paylaş


Apache Cassandra için Azure Cosmos DB'de gerçekleştirilmiş görünümler (önizleme)

ŞUNLAR IÇIN GEÇERLIDIR: Cassandra

Önemli

Cassandra için Azure Cosmos DB'deki gerçekleştirilmiş görünümler şu anda önizleme aşamasındadır. Bu özelliği Azure portalını kullanarak etkinleştirebilirsiniz. Gerçekleştirilmiş görünümlerin bu önizlemesi, hizmet düzeyi sözleşmesi olmadan sağlanır. Şu anda üretim iş yükleri için gerçekleştirilmiş görünümler önerilmez. Bu önizlemenin bazı özellikleri desteklenmeyebilir veya kısıtlı özelliklere sahip olabilir. Daha fazla bilgi için bkz . Microsoft Azure önizlemeleri için ek kullanım koşulları.

Gerçekleştirilmiş görünümler tanımlandığında temel tabloyu (veya Azure Cosmos DB'deki kapsayıcıyı) birincil anahtar olmayan filtrelerle verimli bir şekilde sorgulamaya yardımcı olur. Kullanıcılar temel tabloya yazdığında, gerçekleştirilmiş görünüm arka planda otomatik olarak oluşturulur. Bu görünüm, verimli aramalar için farklı bir birincil anahtara sahip olabilir. Görünüm yalnızca temel tablodan açıkça yansıtılan sütunları da içerir. Bu görünüm salt okunur bir tablo olacaktır.

İkincil dizinleri kullanarak bölüm anahtarı belirtmeden bir sütun deposunu sorgulayabilirsiniz. Ancak sorgu, yüksek veya düşük kardinaliteye sahip sütunlar için etkili olmaz. Sorgu, küçük bir sonuç kümesi için tüm verileri tarayabiliyor. Bu tür sorgular yanlışlıkla bölümler arası sorgu olarak yürütülürken pahalıya patlar.

Gerçekleştirilmiş bir görünümle şunları yapabilirsiniz:

  • Aksi takdirde pahalı sorgular olabilecek çapraz bölüm taramalarını kalıcı hale getirmek için arama veya eşleme tablosu olarak kullanın.
  • Yalnızca ön koşulu karşılayan belirli sütunları ve verileri doldurmak için SQL tabanlı bir koşullu koşul sağlayın.
  • Değişiklik akışı tetikleyicilerini kullanarak genellikle ayrı koleksiyonlar olarak depolanan olay tabanlı senaryoları basitleştiren gerçek zamanlı görünümler oluşturun.

Gerçekleştirilmiş görünümlerin avantajları

Gerçekleştirilmiş görünümlerin aşağıdakileri içeren birçok avantajı vardır, ancak bunlarla sınırlı değildir:

  • Gerçekleştirilmiş görünümleri kullanarak sunucu tarafı normalleştirme uygulayabilirsiniz. Sunucu tarafı normalleştirme ile, istemci uygulamalarında birden çok bağımsız tablodan ve hesaplama açısından karmaşık normal dışı bırakma işleminden kaçınabilirsiniz.
  • Gerçekleştirilmiş görünümler, temel tabloyla tutarlı kalmalarını sağlamak için görünümleri otomatik olarak güncelleştirir. Bu otomatik güncelleştirme, temel tabloya ve görünüme çift yazma gerçekleştirmek için genellikle özel mantık uygulayan istemci uygulamalarınızın sorumluluklarını soyutlar.
  • Gerçekleştirilmiş görünümler, tek bir görünümden okuyarak okuma performansını iyileştirir.
  • Gerçekleştirilmiş görünüm için aktarım hızını bağımsız olarak belirtebilirsiniz.
  • Bir görünümü nemlendirmek için gereksinimlerinize eşlenmiş gerçekleştirilmiş bir görünüm oluşturucu katmanı yapılandırabilirsiniz.
  • Yazma işlemlerinin yalnızca temel tabloya yazılması gerektiğinden, gerçekleştirilmiş görünümler yazma performansını artırır.
  • Ayrıca gerçekleştirilmiş görünümlerin Azure Cosmos DB uygulaması bir çekme modelini temel alır. Bu uygulama yazma performansını etkilemez.

Gerçekleştirilmiş görünümleri kullanmaya başlama

Gerçekleştirilmiş görünümler özelliğini yerel bir komutla veya REST API işlemiyle etkinleştirmek üzere Azure CLI kullanarak Cassandra hesapları için yeni API oluşturun.

  1. Azure Portal’ında oturum açın.

  2. Cassandra hesabı için API'nize gidin.

  3. Kaynak menüsünde Ayarlar'ı seçin.

  4. Ayarlar bölümünde Cassandra API(Önizleme) için Gerçekleştirilmiş Görünüm'ü seçin.

  5. Bu özelliği bu hesap için etkinleştirmek için yeni iletişim kutusunda Etkinleştir'i seçin.

    Azure portalında etkinleştirilen Gerçekleştirilmiş Görünümler özelliğinin ekran görüntüsü.

Temel bileşenler

Cassandra API'sinde görünümleri korumak için gerçekleştirilmiş görünüm oluşturucu işlem katmanı kullanılır.

Görünümleri nemlendirmek için gecikme ve gecikme gereksinimlerinize göre görünüm oluşturucusunun işlem örneklerini yapılandırma esnekliğine sahip olursunuz. Teknik bir stand noktasından bu işlem katmanı, veri boyutu büyük ve bölüm sayısı yüksek olsa bile bölümler arasındaki bağlantıların daha verimli bir şekilde yönetilmesine yardımcı olur.

İşlem kapsayıcıları bir Azure Cosmos DB hesabındaki tüm gerçekleştirilmiş görünümler arasında paylaşılır. Sağlanan her işlem kapsayıcısı, temel tablo bölümlerinden değişiklik akışını okuyan ve verileri hedef gerçekleştirilmiş görünüme[s] yazan birden çok görev oluşturur. İşlem kapsayıcısı, hesaptaki her gerçekleştirilmiş görünüm için gerçekleştirilmiş görünüm tanımına göre verileri dönüştürür.

Gerçekleştirilmiş görünüm oluşturucu oluşturma

Verileri otomatik olarak dönüştürmek ve gerçekleştirilmiş bir görünüme yazmak için gerçekleştirilmiş görünüm oluşturucusu oluşturun.

  1. Azure Portal’ında oturum açın.

  2. Cassandra hesabı için API'nize gidin.

  3. Kaynak menüsünde Gerçekleştirilmiş Görünümler Oluşturucusu'nu seçin.

  4. Gerçekleştirilmiş Görünüm Oluşturucusu sayfasında, oluşturucu için SKU'yu ve örnek sayısını yapılandırın.

    Not

    Bu kaynak menüsü seçeneği ve sayfası yalnızca hesap için Gerçekleştirilmiş Görünümler özelliği etkinleştirildiğinde görünür.

  5. Kaydet'i seçin.

Gerçekleştirilmiş görünüm oluşturma

Hesabınız ve Gerçekleştirilmiş Görünüm Oluşturucusu ayarlandıktan sonra CQLSH kullanarak Gerçekleştirilmiş görünümler oluşturabilmeniz gerekir.

Not

Tek başına CQLSH aracı henüz yüklü değilse bkz . CQLSH Aracı'nı yükleme. Araçtaki bağlantı dizesi de güncelleştirmeniz gerekir.

Gerçekleştirilmiş görünüm oluşturmak için birkaç örnek komut aşağıda verilmiştir:

  1. İlk olarak, bir anahtar alanı adı uprofileoluşturun.

    CREATE KEYSPACE IF NOT EXISTS uprofile WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 1 };
    
  2. Ardından keyspace içinde adlı user bir tablo oluşturun.

    CREATE TABLE IF NOT EXISTS uprofile.USER (user_id INT PRIMARY KEY, user_name text, user_bcity text);
    
  3. Şimdi, aynı anahtar alanı içinde adlı user_by_bcity gerçekleştirilmiş bir görünüm oluşturun. Bir sorgu kullanarak verilerin temel tablodan görünüme nasıl yansıtılacağını belirtin.

    CREATE MATERIALIZED VIEW uprofile.user_by_bcity AS 
    SELECT
        user_id,
        user_name,
        user_bcity 
    FROM
        uprofile.USER 
    WHERE
        user_id IS NOT NULL 
        AND user_bcity IS NOT NULL PRIMARY KEY (user_bcity, user_id);
    
  4. Temel tabloya satır ekleyin.

    INSERT INTO
        uprofile.USER (user_id, user_name, user_bcity) 
    VALUES
        (
            101, 'johnjoe', 'New York' 
        );
    
    INSERT INTO
        uprofile.USER (user_id, user_name, user_bcity) 
    VALUES
        (
            102, 'james', 'New York' 
        );
    
  5. Gerçekleştirilmiş görünümü sorgula.

    SELECT * FROM user_by_bcity; 
    
  6. Gerçekleştirilmiş görünümden çıkışı gözlemleyin.

     user_bcity | user_id | user_name 
    ------------+---------+----------- 
       New York |     101 |   johnjoe 
       New York |     102 |     james 
    
    (2 rows) 
    

İsteğe bağlı olarak, gerçekleştirilmiş görünüm oluşturmak veya güncelleştirmek için kaynak sağlayıcısını da kullanabilirsiniz.

Geçerli sınırlamalar

Cassandra'nın gerçekleştirilmiş görünümleri önizleme uygulaması için API ile ilgili birkaç sınırlama vardır:

  • Gerçekleştirilmiş görünümler, hesapta gerçekleştirilmiş görünüm desteği etkinleştirilmeden önce var olan bir tabloda oluşturulamaz. Gerçekleştirilmiş görünümleri kullanmak için özellik etkinleştirildikten sonra yeni bir tablo oluşturun.
  • Gerçekleştirilmiş görünüm tanımının WHERE yan tümcesi için şu anda yalnızca IS NOT NULL filtrelere izin verilir.
  • Temel tabloda gerçekleştirilmiş bir görünüm oluşturulduktan sonra, ALTER TABLE ADD temel tablonun şemasında işlemlere izin verilmez. ALTER TABLE APP yalnızca gerçekleştirilmiş görünümlerden hiçbiri tanımlarında seçilmediyse * izin verilir.
  • Bölüm anahtarı boyutu (2 Kb) ve kümeleme anahtarı boyutunun toplam uzunluğu (1 Kb) ile ilgili sınırlar vardır. Bu boyut sınırı aşılırsa, sorumlu ileti zehirli ileti kuyruğuna eklenir.
  • Temel tabloda kullanıcı tanımlı türler (UDT) varsa ve gerçekleştirilmiş görünüm tanımı öngörülen sütunlardan birinde UDT'ye sahipse SELECT * FROM , hesapta UDT güncelleştirmelerine izin verilmez.
  • Gerçekleştirilmiş görünümler, otomatik bölgesel yük devretme sonrasında birkaç satır için temel tabloyla tutarsız hale gelebilir. Bu tutarsızlığı önlemek için yük devretmeden sonra gerçekleştirilmiş görünümü yeniden oluşturun.
  • 32 çekirdekle gerçekleştirilmiş görünüm oluşturucu örnekleri oluşturma desteklenmez. Gerekirse, daha az sayıda çekirdek içeren birden çok oluşturucu örneği oluşturabilirsiniz.

Yukarıdaki sınırlamalara ek olarak, aşağıdaki ek sınırlamaları göz önünde bulundurun:

  • Kullanılabilirlik alanları
    • Kullanılabilirlik alanı etkinleştirilmiş bölgeleri olan bir hesapta gerçekleştirilmiş görünümler etkinleştirilemez.
    • Hesapta true olarak ayarlandığında kullanılabilirlik alanına sahip yeni bölge ekleme desteklenmez enableMaterializedViews .
  • Düzenli yedekleme ve geri yükleme
    • Gerçekleştirilmiş görünümler geri yükleme işlemiyle otomatik olarak geri yüklenmez. Geri yükleme işlemi tamamlandıktan sonra gerçekleştirilmiş görünümleri yeniden oluşturmanız gerekir. Ardından, gerçekleştirilmiş görünümleri ve oluşturucuları yeniden oluşturmadan önce geri yüklenen hesaplarında yapılandırmanız enableMaterializedViews gerekir.
  • Apache Cassandra
    • Gerçekleştirilmiş görünümlerde çakışma çözümleme ilkesi tanımlamaya izin verilmez.
    • Gerçekleştirilmiş görünümlerde yazma işlemlerine izin verilmez.
    • Çapraz belge sorguları ve toplama işlevlerinin kullanımı gerçekleştirilmiş görünümlerde desteklenmez.
    • Gerçekleştirilmiş görünümün şeması oluşturulduktan sonra değiştirilemez.
    • Üzerinde en az bir gerçekleştirilmiş görünüm tanımlanmışsa temel tablonun silinmesine izin verilmez. Önce tüm görünümlerin silinmesi gerekir ve ardından temel tablo silinebilir.
    • Statik sütunları olan kapsayıcılarda gerçekleştirilmiş görünümler tanımlamaya izin verilmez.

Sonraki adımlar