Ölçeği genişletilmiş bulut veritabanları arasında raporlama (önizleme)

Şunlar için geçerlidir:Azure SQL Veritabanı

Query across shards

Parçalı veritabanları, satırları ölçeği genişletilmiş bir veri katmanına dağıtır. Şema, yatay bölümleme olarak da bilinen tüm katılan veritabanlarında aynıdır. Elastik sorgu kullanarak, parçalanmış veritabanındaki tüm veritabanlarını kapsayan raporlar oluşturabilirsiniz.

Hızlı başlangıç için bkz . Ölçeği genişletilmiş bulut veritabanları arasında raporlama.

Parçalanmamış veritabanları için bkz . Farklı şemalara sahip bulut veritabanları arasında sorgulama.

Önkoşullar

Genel Bakış

Bu deyimler, elastik sorgu veritabanında parçalanmış veri katmanınızın meta veri gösterimini oluşturur.

  1. ANA ANAHTAR OLUŞTURMA
  2. CREATE DATABASE SCOPED CREDENTIAL
  3. CREATE EXTERNAL DATA SOURCE
  4. DıŞ TABLO OLUŞTURMA

1.1 Veritabanı kapsamlı ana anahtar ve kimlik bilgileri oluşturma

Kimlik bilgileri, elastik sorgu tarafından uzak veritabanlarınıza bağlanmak için kullanılır.

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password';
CREATE DATABASE SCOPED CREDENTIAL [<credential_name>]  WITH IDENTITY = '<username>',  
SECRET = '<password>';

Not

"Kullanıcı adının>" herhangi bir "<@servername" soneki içermediğinden emin olun.

1.2 Dış veri kaynakları oluşturma

Söz dizimi:

<External_Data_Source> ::=
    CREATE EXTERNAL DATA SOURCE <data_source_name> WITH
        (TYPE = SHARD_MAP_MANAGER,
                   LOCATION = '<fully_qualified_server_name>',
        DATABASE_NAME = '<shardmap_database_name>',
        CREDENTIAL = <credential_name>,
        SHARD_MAP_NAME = '<shardmapname>'
               ) [;]

Örnek

CREATE EXTERNAL DATA SOURCE MyExtSrc
WITH
(
    TYPE=SHARD_MAP_MANAGER,
    LOCATION='myserver.database.windows.net',
    DATABASE_NAME='ShardMapDatabase',
    CREDENTIAL= SMMUser,
    SHARD_MAP_NAME='ShardMap'
);

Geçerli dış veri kaynaklarının listesini alın:

select * from sys.external_data_sources;

Dış veri kaynağı parça haritanıza başvurur. Elastik sorgu daha sonra dış veri kaynağını ve temel alınan parça eşlemesini kullanarak veri katmanına katılan veritabanlarını numaralandırır. Aynı kimlik bilgileri, parça eşlemesini okumak ve elastik sorgu işlenirken parçalardaki verilere erişmek için kullanılır.

1.3 Dış tablolar oluşturma

Söz dizimi:

CREATE EXTERNAL TABLE [ database_name . [ schema_name ] . | schema_name. ] table_name  
    ( { <column_definition> } [ ,...n ])
    { WITH ( <sharded_external_table_options> ) }
) [;]  

<sharded_external_table_options> ::=
  DATA_SOURCE = <External_Data_Source>,
  [ SCHEMA_NAME = N'nonescaped_schema_name',]
  [ OBJECT_NAME = N'nonescaped_object_name',]
  DISTRIBUTION = SHARDED(<sharding_column_name>) | REPLICATED |ROUND_ROBIN

Örnek

CREATE EXTERNAL TABLE [dbo].[order_line](
     [ol_o_id] int NOT NULL,
     [ol_d_id] tinyint NOT NULL,
     [ol_w_id] int NOT NULL,
     [ol_number] tinyint NOT NULL,
     [ol_i_id] int NOT NULL,
     [ol_delivery_d] datetime NOT NULL,
     [ol_amount] smallmoney NOT NULL,
     [ol_supply_w_id] int NOT NULL,
     [ol_quantity] smallint NOT NULL,
      [ol_dist_info] char(24) NOT NULL
)

WITH
(
    DATA_SOURCE = MyExtSrc,
     SCHEMA_NAME = 'orders',
     OBJECT_NAME = 'order_details',
    DISTRIBUTION=SHARDED(ol_w_id)
);

Geçerli veritabanından dış tabloların listesini alın:

SELECT * from sys.external_tables;

Dış tabloları bırakmak için:

DROP EXTERNAL TABLE [ database_name . [ schema_name ] . | schema_name. ] table_name[;]

Açıklamalar

DATA_SOURCE yan tümcesi, dış tablo için kullanılan dış veri kaynağını (parça eşlemesi) tanımlar.

SCHEMA_NAME ve OBJECT_NAME yan tümceleri dış tablo tanımını farklı bir şemadaki bir tabloyla eşler. Atlanırsa, uzak nesnenin şemasının olduğu varsayılır dbo ve adının tanımlanan dış tablo adıyla aynı olduğu varsayılır. Bu, uzak tablonuzun adı dış tabloyu oluşturmak istediğiniz veritabanında zaten alınmışsa kullanışlıdır. Örneğin, ölçeklendirilen veri katmanınızdaki katalog görünümlerinin veya DMV'lerin toplam görünümünü almak için bir dış tablo tanımlamak istiyorsunuz. Katalog görünümleri ve DMV'ler zaten yerel olarak mevcut olduğundan, dış tablo tanımı için adlarını kullanamazsınız. Bunun yerine farklı bir ad kullanın ve SCHEMA_NAME ve/veya OBJECT_NAME yan tümcelerinde katalog görünümünün veya DMV'nin adını kullanın. (Aşağıdaki örniğe bakın.)

DISTRIBUTION yan tümcesi, bu tablo için kullanılan veri dağıtımını belirtir. Sorgu işlemcisi, en verimli sorgu planlarını oluşturmak için DISTRIBUTION yan tümcesinde sağlanan bilgileri kullanır.

  1. PARÇALI , verilerin veritabanları arasında yatay olarak bölümlendiği anlamına gelir. Veri dağıtımı için bölümleme anahtarı sharding_column_name parametresidir<.>
  2. ÇOĞALTILDI , tablonun özdeş kopyalarının her veritabanında mevcut olduğu anlamına gelir. Çoğaltmaların veritabanlarında aynı olduğundan emin olmak sizin sorumluluğunuzdadır.
  3. ROUND_ROBIN, tablonun uygulamaya bağımlı bir dağıtım yöntemi kullanılarak yatay olarak bölümlendiği anlamına gelir.

Veri katmanı başvurusu: Dış tablo DDL bir dış veri kaynağına başvurur. Dış veri kaynağı, dış tabloya veri katmanınızdaki tüm veritabanlarını bulmak için gerekli bilgileri sağlayan bir parça eşlemesi belirtir.

Güvenlik konuları

Dış tabloya erişimi olan kullanıcılar, dış veri kaynağı tanımında verilen kimlik bilgileri altında temel alınan uzak tablolara otomatik olarak erişim kazanır. Dış veri kaynağının kimlik bilgileri aracılığıyla ayrıcalıkların istenmeyen şekilde yükseltilmesini önleyebilirsiniz. Bir dış tablo için grant veya REVOKE'i normal bir tablo gibi kullanın.

Dış veri kaynağınızı ve dış tablolarınızı tanımladıktan sonra, artık dış tablolarınız üzerinde tam T-SQL kullanabilirsiniz.

Örnek: Yatay bölümlenmiş veritabanlarını sorgulama

Aşağıdaki sorgu ambarlar, siparişler ve sipariş satırları arasında üç yönlü birleştirme gerçekleştirir ve birkaç toplama ve seçmeli filtre kullanır. (1) yatay bölümleme (parçalama) ve (2) ambarların, siparişlerin ve sipariş satırlarının ambar kimliği sütunu tarafından parçalandığını ve elastik sorgunun parçalardaki birleştirmeleri birlikte bulabileceğini ve sorgunun pahalı kısmını parçalar üzerinde paralel olarak işleyebileceğini varsayar.

    select  
         w_id as warehouse,
         o_c_id as customer,
         count(*) as cnt_orderline,
         max(ol_quantity) as max_quantity,
         avg(ol_amount) as avg_amount,
         min(ol_delivery_d) as min_deliv_date
    from warehouse
    join orders
    on w_id = o_w_id
    join order_line
    on o_id = ol_o_id and o_w_id = ol_w_id
    where w_id > 100 and w_id < 200
    group by w_id, o_c_id

Uzak T-SQL yürütmesi için saklı yordam: sp_execute_remote

Elastik sorgu ayrıca parçalara doğrudan erişim sağlayan bir saklı yordam da sunar. Saklı yordam sp_execute _remote olarak adlandırılır ve uzak veritabanlarında uzak saklı yordamları veya T-SQL kodunu yürütmek için kullanılabilir. Aşağıdaki parametreleri alır:

  • Veri kaynağı adı (nvarchar): RDBMS türündeki dış veri kaynağının adı.
  • Sorgu (nvarchar): Her parçada yürütülecek T-SQL sorgusu.
  • Parametre bildirimi (nvarchar) - isteğe bağlı: Sorgu parametresinde kullanılan parametreler için veri türü tanımlarına sahip dize (sp_executesql gibi).
  • Parametre değer listesi - isteğe bağlı: Parametre değerlerinin virgülle ayrılmış listesi (sp_executesql gibi).

sp_execute_remote, uzak veritabanlarında verilen T-SQL deyimini yürütmek için çağırma parametrelerinde sağlanan dış veri kaynağını kullanır. Shardmap yöneticisi veritabanına ve uzak veritabanlarına bağlanmak için dış veri kaynağının kimlik bilgilerini kullanır.

Örnek:

    EXEC sp_execute_remote
        N'MyExtSrc',
        N'select count(w_id) as foo from warehouse'

Araçlar için bağlantı

Uygulamanızı, IŞ zekanızı ve veri tümleştirme araçlarınızı dış tablo tanımlarınızla veritabanına bağlamak için normal SQL Server bağlantı dizelerini kullanın. SQL Server'ın aracınız için bir veri kaynağı olarak desteklendiğinden emin olun. Ardından, araçla bağlantılı diğer SQL Server veritabanları gibi elastik sorgu veritabanına başvurun ve aracınızdan veya uygulamanızdan dış tabloları yerel tablolar gibi kullanın.

En iyi uygulamalar

  • Sql Veritabanı güvenlik duvarları aracılığıyla elastik sorgu uç noktası veritabanına parça haritası veritabanına ve tüm parçalara erişim verildiğinden emin olun.
  • Dış tablo tarafından tanımlanan veri dağıtımını doğrulayın veya uygulayın. Gerçek veri dağıtımınız tablo tanımınızda belirtilen dağıtımdan farklıysa sorgularınız beklenmeyen sonuçlar verebilir.
  • Elastik sorgu şu anda parçalama anahtarı üzerindeki önkoşullar belirli parçaların işlenmesini güvenli bir şekilde dışlamasına olanak sağlarken parça eleme gerçekleştirmez.
  • Elastik sorgu, hesaplamanın çoğunun parçalar üzerinde yapılabilmesine neden olan sorgular için en iyi sonucu sağlar. Genellikle, tüm parçalarda bölüme hizalı bir şekilde gerçekleştirilebilecek bölümleme anahtarları üzerinden parçalar veya birleşimler üzerinde değerlendirilebilen seçmeli filtre koşullarıyla en iyi sorgu performansını elde edersiniz. Diğer sorgu desenlerinin parçalardan baş düğüme büyük miktarlarda veri yüklemesi gerekebilir ve düşük performans gösterebilir

Sonraki adımlar