Ölçeği genişletilmiş bulut veritabanları arasında raporlama (önizleme)
Şunlar için geçerlidir: Azure SQL Veritabanı
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
- Elastik veritabanı istemci kitaplığını kullanarak bir parça eşlemesi oluşturun. bkz . Parça eşleme yönetimi. Alternatif olarak, Elastik veritabanı araçlarını kullanmaya başlama bölümündeki örnek uygulamayı da kullanabilirsiniz.
- Alternatif olarak bkz . Mevcut veritabanlarını ölçeklendirilen veritabanlarına geçirme.
- Kullanıcının TÜM HARİÇ VERİ KAYNAĞıNı DEĞIŞTIRME iznine sahip olması gerekir. Bu izin ALTER DATABASE iznine dahil edilir.
- ALTER ANY EXTERNAL DATA SOURCE permissions to refer to the underlying data source.
Genel bakış
Bu deyimler, elastik sorgu veritabanında parçalanmış veri katmanınızın meta veri gösterimini oluşturur.
- ANA ANAHTAR OLUŞTURMA
- CREATE DATABASE SCOPED CREDENTIAL
- CREATE EXTERNAL DATA SOURCE
- 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.
- 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<.>
- Ç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.
- 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ı dizesi 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 yöntemler
- Elastik sorgu uç noktası veritabanına SQL Veritabanı güvenlik duvarları aracılığıyla 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
- Elastik sorguya genel bakış için bkz . Elastik sorguya genel bakış.
- Dikey bölümleme öğreticisi için bkz . Veritabanları arası sorguyu (dikey bölümleme) kullanmaya başlama.
- Dikey olarak bölümlenmiş veriler için söz dizimi ve örnek sorgular için bkz . Dikey olarak bölümlenmiş verileri sorgulama)
- Yatay bölümleme (parçalama) öğreticisi için bkz . Yatay bölümleme (parçalama) için elastik sorguyu kullanmaya başlama.
- Yatay bölümleme düzeninde parça olarak hizmet veren tek bir uzak Azure SQL Veritabanı veya veritabanı kümesinde Transact-SQL deyimini yürüten bir saklı yordam için sp_execute _remote bakın.