Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Artikel ini menjelaskan cara menggunakan PolyBase pada instans SQL Server untuk mengkueri data eksternal di MongoDB.
Prasyarat
Pasang Pasang PolyBase di Windows.
Sebelum Anda membuat kredensial lingkup database, buat kunci master database (DMK) untuk melindungi kredensial. Untuk informasi selengkapnya, lihat BUAT MASTER KEY.
Mengonfigurasi sumber data eksternal MongoDB
Untuk mengkueri data dari sumber data MongoDB, Anda harus membuat tabel eksternal untuk mereferensikan data eksternal. Bagian ini menyediakan kode sampel untuk membuat tabel eksternal ini.
Perintah Transact-SQL berikut digunakan di bagian ini:
- BUAT KREDENSIAL YANG DIBATASI OLEH DATABASE
- Buat Sumber Data Eksternal
- Buat Tabel Eksternal
- MEMBUAT STATISTIK
Buat kredensial cakupan database untuk mengakses sumber MongoDB.
Skrip berikut membuat kredensial dalam lingkup basis data. Sebelum Anda menjalankan skrip, perbarui untuk lingkungan Anda:
- Ganti
<credential_name>dengan nama untuk kredensial. - Ganti
<username>dengan nama pengguna untuk sumber eksternal. - Ganti
<password>dengan kata sandi yang sesuai.
CREATE DATABASE SCOPED CREDENTIAL [<credential_name>] WITH IDENTITY = '<username>', SECRET = '<password>';Penting
Konektor ODBC MongoDB untuk PolyBase hanya mendukung autentikasi dasar, bukan autentikasi Kerberos.
- Ganti
Buat sumber data eksternal.
Skrip berikut membuat sumber data eksternal. Untuk referensi, lihat MEMBUAT SUMBER DATA EKSTERNAL. Sebelum Anda menjalankan skrip, perbarui untuk lingkungan Anda:
- Perbarui lokasi. Atur
<server>dan<port>untuk lingkungan Anda. - Ganti
<credential_name>dengan nama kredensial yang Anda buat di langkah sebelumnya. - Secara opsional, tentukan
PUSHDOWN = ONatauPUSHDOWN = OFFjika Anda ingin menentukan komputasi pushdown ke sumber eksternal.
CREATE EXTERNAL DATA SOURCE external_data_source_name WITH (LOCATION = '<mongodb://<server>[:<port>]>' [ [ , ] CREDENTIAL = <credential_name> ] [ [ , ] CONNECTION_OPTIONS = '<key_value_pairs>'[,...]] [ [ , ] PUSHDOWN = { ON | OFF } ]) [ ; ]- Perbarui lokasi. Atur
Kueri skema eksternal di MongoDB.
Gunakan sp_data_source_objects untuk mendeteksi skema koleksi (kolom) untuk koleksi MongoDB yang berisi array, dan buat tabel eksternal secara manual. Prosedur
sp_data_source_table_columnstersimpan juga secara otomatis melakukan meratakan melalui Driver ODBC PolyBase untuk driver MongoDB.Buat tabel eksternal.
Untuk menyediakan skema secara manual, pertimbangkan contoh skrip berikut untuk membuat tabel eksternal. Untuk referensi, lihat MEMBUAT TABEL EKSTERNAL.
Sebelum Anda menjalankan skrip, perbarui untuk lingkungan Anda:
Perbarui bidang dengan nama, pengurutan, dan jika bidang tersebut adalah koleksi, tentukan nama koleksi dan nama bidang. Dalam contoh,
friendsadalah jenis data kustom.Perbarui lokasi. Atur nama database dan nama tabel. Nama tiga bagian tidak diizinkan, sehingga Anda tidak dapat membuatnya untuk
system.profiletabel. Selain itu, Anda tidak dapat menentukan tampilan karena tidak dapat memperoleh metadata dari tampilan tersebut.Perbarui sumber data dengan nama yang Anda buat di langkah sebelumnya.
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' );Opsional: Buat statistik pada tabel eksternal.
Buat statistik pada kolom tabel eksternal, terutama yang digunakan untuk gabungan, filter, dan agregat, untuk performa kueri yang optimal.
CREATE STATISTICS statistics_name ON customer(C_CUSTKEY) WITH FULLSCAN;
Opsi koneksi MongoDB
Untuk informasi tentang opsi koneksi MongoDB, lihat dokumentasi MongoDB: Format URI String Koneksi.
Perataan
Meratakan diaktifkan pada data berlapis dan berulang dari koleksi dokumen MongoDB. Anda perlu mengaktifkan create an external table dan secara eksplisit menentukan skema relasional melalui koleksi dokumen MongoDB yang mungkin memiliki data berlapis atau berulang.
Jenis data bersarang dan berulang JSON diluruskan sebagai berikut:
Objek: pengumpulan kunci/nilai yang tidak berurutan diapit kurung kurawal (berlapis)
SQL Server membuat kolom tabel untuk setiap kunci objek
- Nama kolom:
<objectname>_<keyname>
- Nama kolom:
Array: nilai yang diurutkan, dipisahkan oleh koma, diapit dalam tanda kurung siku (berulang)
SQL Server menambahkan baris tabel baru untuk setiap item array
SQL Server membuat kolom untuk tiap array guna menyimpan indeks item array.
Nama kolom:
<arrayname>_indexJenis Data: bigint
Teknik ini dapat menyebabkan beberapa masalah, termasuk:
Bidang berulang kosong menutupi data di bidang datar dari rekaman yang sama.
Beberapa bidang berulang meningkatkan jumlah baris yang dihasilkan.
Misalnya, SQL Server mengevaluasi koleksi restoran dari dataset sampel MongoDB yang disimpan dalam format non-relasional JSON. Setiap restoran memiliki bidang alamat yang bertingkat dan daftar nilai yang diberikan pada hari-hari yang berbeda. Gambar berikut menunjukkan restoran khas dengan alamat berlapis dan nilai berulang berlapis.
Alamat objek diratakan sebagai berikut:
- Bidang
restaurant.address.buildingbersarang menjadirestaurant.address_building - Bidang
restaurant.address.coordbersarang menjadirestaurant.address_coord - Bidang
restaurant.address.streetbersarang menjadirestaurant.address_street - Bidang
restaurant.address.zipcodebersarang menjadirestaurant.address_zipcode
Nilai array diratakan sebagai berikut:
| tanggal_nilai | nilai_nilai | skor_permainan |
|---|---|---|
1393804800000 |
A | 2 |
1378857600000 |
A | 6 |
135898560000 |
A | 10 |
1322006400000 |
A | 9 |
1299715200000 |
B | 14 |
Koneksi Cosmos DB
Anda dapat menggunakan Cosmos DB Mongo API dan konektor MongoDB PolyBase untuk membuat tabel eksternal untuk instans Cosmos DB. Ikuti langkah-langkah yang sama seperti yang dijelaskan sebelumnya. Pastikan kredensial cakupan database, alamat server, port, dan string lokasi cocok dengan server Cosmos DB.
Contoh
Contoh berikut membuat sumber data eksternal dengan parameter berikut:
| Parameter | Nilai |
|---|---|
| Nama | external_data_source_name |
| Layanan | mongodb0.example.com |
| Instans | 27017 |
| Set replika | myRepl |
| TLS | true |
| Komputasi tumpukan | 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
);