Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, MongoDB'deki dış verileri sorgulamak için SQL Server örneğinde PolyBase'in nasıl kullanılacağı açıklanmaktadır.
Önkoşullar
Windows'a PolyBase Yükleme'yi yükleyin.
Veritabanı kapsamlı bir kimlik bilgisi oluşturmadan önce, kimlik bilgilerini korumak için bir veritabanı ana anahtarı (DMK) oluşturun. Daha fazla bilgi için bkz. CREATE MASTER KEY .
MongoDB dış veri kaynağını yapılandırma
MongoDB veri kaynağındaki verileri sorgulamak için dış verilere başvurmak için dış tablolar oluşturmanız gerekir. Bu bölüm, bu dış tabloları oluşturmak için örnek kod sağlar.
Bu bölümde aşağıdaki Transact-SQL komutları kullanılır:
- VERITABANı KAPSAMLı KIMLIK BILGISI OLUŞTURMA
- HARİCİ VERİ KAYNAĞI OLUŞTUR
- DıŞ TABLO OLUŞTURMA
- İSTATISTIĞI OLUŞTURMA
MongoDB kaynağına erişmek için veritabanına özgü bir kimlik bilgisi oluşturun.
Aşağıdaki betik, veritabanında tanımlı bir kimlik bilgisi oluşturur. Betiği çalıştırmadan önce ortamınız için güncelleştirin:
- Değiştirin
<credential_name>kimlik bilgisi için bir adla. -
<username>'yi dış kaynağın kullanıcı adıyla değiştirin. - yerine uygun parolayı yazın
<password>.
CREATE DATABASE SCOPED CREDENTIAL [<credential_name>] WITH IDENTITY = '<username>', SECRET = '<password>';Önemli
PolyBase için MongoDB ODBC Bağlayıcısı, Kerberos kimlik doğrulamasını değil yalnızca temel kimlik doğrulamasını destekler.
- Değiştirin
Dış veri kaynağı oluşturma.
Aşağıdaki komut dosyası harici veri kaynağını oluşturur. Referans olarak, CREATE EXTERNAL DATA SOURCE'a bakınız. Betiği çalıştırmadan önce ortamınız için güncelleştirin:
- Konumu güncelleştirin.
<server>ve<port>ortamınız için ayarlayın. -
<credential_name>'yi önceki adımda oluşturduğunuz kimlik bilgilerinin adıyla değiştirin. - İsteğe bağlı olarak, dış kaynağa itme aşağı hesaplaması belirlemek istiyorsanız
PUSHDOWN = ONveyaPUSHDOWN = OFFbelirtin.
CREATE EXTERNAL DATA SOURCE external_data_source_name WITH (LOCATION = '<mongodb://<server>[:<port>]>' [ [ , ] CREDENTIAL = <credential_name> ] [ [ , ] CONNECTION_OPTIONS = '<key_value_pairs>'[,...]] [ [ , ] PUSHDOWN = { ON | OFF } ]) [ ; ]- Konumu güncelleştirin.
MongoDB'de dış şemayı sorgula.
sp_data_source_objects kullanarak diziler içeren MongoDB koleksiyonlarının koleksiyon şemasını (sütunlar) tespit edin ve dış tabloyu manuel olarak oluşturun.
sp_data_source_table_columnssaklı yordamı, MongoDB sürücüsü için PolyBase ODBC Sürücüsü aracılığıyla da otomatik olarak düzleştirme gerçekleştirir.Dış bir tablo oluşturun.
Şemayı manuel olarak sağlamak için, aşağıdaki örnek betiği kullanarak bir dış tablo oluşturmayı düşünün. Daha fazla bilgi için bkz CREATE EXTERNAL TABLE.
Betiği çalıştırmadan önce ortamınız için güncelleştirin:
Alan adlarını, sıralama düzenlerini güncelleyin ve eğer koleksiyonsalar koleksiyon adını ve alan adını belirtin. Örnekte,
friendsözel bir veri türüdür.Konumu güncelleştirin. Veritabanı adını ve tablo adını ayarlayın. Üç bölümlü adlara izin verilmez, bu nedenle tablo için
system.profileoluşturamazsınız. Ayrıca, meta verileri ondan alamadığı için bir görünüm belirtemezsiniz.Veri kaynağını önceki adımda oluşturduğunuz adıyla güncelleştirin.
CREATE EXTERNAL TABLE [MongoDbRandomData] ( [_id] NVARCHAR (24) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, [RandomData_friends_id] INT, [RandomData_tags] NVARCHAR (MAX) COLLATE SQL_Latin1_General_CP1_CI_AS ) WITH ( DATA_SOURCE = [MongoDb], LOCATION = 'MyDb.RandomData' );İsteğe bağlı: Dış tabloda istatistikler oluşturun.
En iyi sorgu performansı için özellikle birleştirmeler, filtreler ve toplamalar için kullanılanlar olmak üzere dış tablo sütunlarında istatistikler oluşturun.
CREATE STATISTICS statistics_name ON customer(C_CUSTKEY) WITH FULLSCAN;
MongoDB bağlantı seçenekleri
MongoDB bağlantı seçenekleri hakkında bilgi için mongoDB belgelerine bakın: Bağlantı Dizesi URI Biçimi.
Düzleştirme
MongoDB belge koleksiyonlarından iç içe ve yinelenen verilerde düzleştirme etkinleştirilir. MongoDB belge koleksiyonları üzerinde iç içe veya yinelenen veriler içeren ilişkisel bir şemayı etkinleştirmeniz create an external table ve açıkça belirtmeniz gerekir.
JSON iç içe yerleştirilmiş ve yinelenen veri türleri aşağıdaki gibi düzleştirilmiştir:
Nesne: süslü parantez içine alınmış sıralanmamış anahtar/değer koleksiyonu (iç içe).
SQL Server her nesne anahtarı için bir tablo sütunu oluşturur
- Sütun adı:
<objectname>_<keyname>
- Sütun adı:
Dizi: virgülle ayrılmış, köşeli ayraç içine alınmış sıralı değerler (yinelenen)
SQL Server her dizi öğesi için yeni bir tablo satırı ekler
SQL Server, dizi öğesi dizinini depolamak için dizi başına bir sütun oluşturur
Sütun adı:
<arrayname>_indexVeri Türü: bigint
Bu teknik aşağıdakiler gibi çeşitli sorunlara neden olabilir:
Boş bir yinelenen alan, aynı kaydın düz alanlarındaki verileri maskeler.
Birden çok yinelenen alan, üretilen satır sayısını artırır.
Örneğin, SQL Server ilişkisel olmayan JSON biçiminde depolanan MongoDB örnek veri kümesi restoran koleksiyonunu değerlendirir. Her restoranın iç içe bir adres alanı ve farklı günlerde atandığı bir dizi not vardır. Aşağıdaki görüntü, alt alta adresler ve alt alta-tekrarlanan derecelendirmelere sahip tipik bir restoranı göstermektedir.
Nesne adresleri aşağıdaki gibi düzleştirilmiştir:
- İç içe alan
restaurant.address.building,restaurant.address_buildingolarak değişir - İç içe alan
restaurant.address.coord,restaurant.address_coordolarak değişir - İç içe alan
restaurant.address.street,restaurant.address_streetolarak değişir - İç içe alan
restaurant.address.zipcode,restaurant.address_zipcodeolarak değişir
Dizi notları aşağıdaki gibi düzleştirilmiştir:
| notlar_tarihi | not_ortalama | oyun_skoru |
|---|---|---|
1393804800000 |
A | 2 |
1378857600000 |
A | 6 |
135898560000 |
A | 10 |
1322006400000 |
A | 9 |
1299715200000 |
B | 14 |
Cosmos DB bağlantısı
Cosmos DB örneği için dış tablo oluşturmak için Cosmos DB Mongo API'sini ve MongoDB PolyBase bağlayıcısını kullanabilirsiniz. Daha önce açıklanan adımları izleyin. Veritabanı kapsamlı kimlik bilgileri, sunucu adresi, bağlantı noktası ve konum dizesinin Cosmos DB sunucusuyla eşleştiğinden emin olun.
Örnekler
Aşağıdaki örnek, aşağıdaki parametrelerle bir dış veri kaynağı oluşturur:
| Parametre | Değer |
|---|---|
| İsim | external_data_source_name |
| Service | mongodb0.example.com |
| Örneği | 27017 |
| Replika kümesi | myRepl |
| TLS | true |
| İtme hesaplaması | ON |
CREATE EXTERNAL DATA SOURCE external_data_source_name
WITH (
LOCATION = 'mongodb://mongodb0.example.com:27017',
PUSHDOWN = ON,
CONNECTION_OPTIONS = 'replicaSet = myRepl; tls = true',
CREDENTIAL = credential_name
);
İlgili içerik
- PolyBase Transact-SQL başvuru
- SQL Server'da PolyBase ile veri sanallaştırma