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
Jika Anda belum menginstal PolyBase, lihat penginstalan PolyBase.
Sebelum Anda membuat kredensial lingkup database, database harus memiliki kunci master 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:
- MEMBUAT KREDENSIAL BERCAKUPAN DATABASE (Transact-SQL)
- BUAT SUMBER DATA EKSTERNAL (Transact-SQL)
- BUAT TABEL EKSTERNAL (Transact-SQL)
- MEMBUAT STATISTIK (Transact-SQL)
Buat kredensial cakupan database untuk mengakses sumber MongoDB.
Skrip berikut membuat kredensial dalam lingkup basis data. Sebelum Anda menjalankan skrip, perbarui sesuai dengan 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, sesuaikan terlebih dahulu 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 Anda dapat menentukan
PUSHDOWN = ON
atauPUSHDOWN = OFF
jika 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.
Anda dapat menggunakan ekstensi Virtualisasi Data untuk Azure Data Studio untuk menyambungkan dan menghasilkan pernyataan CREATE EXTERNAL TABLE berdasarkan skema yang terdeteksi oleh driver PolyBase ODBC Driver for MongoDB. Anda juga dapat menyesuaikan skrip secara manual berdasarkan output prosedur tersimpan sistem sp_data_source_objects (Transact-SQL). Ekstensi Virtualisasi Data untuk Azure Data Studio dan
sp_data_source_table_columns
gunakan prosedur tersimpan internal yang sama untuk mengkueri skema skema eksternal.Untuk membuat tabel eksternal ke koleksi MongoDB yang berisi array, rekomendasinya adalah menggunakan ekstensi Virtualisasi Data untuk Azure Data Studio. Tindakan meratakan dilakukan secara otomatis oleh driver. Prosedur
sp_data_source_table_columns
tersimpan juga secara otomatis melakukan meratakan melalui Driver ODBC PolyBase untuk driver MongoDB.Buat tabel eksternal.
Jika Anda menggunakan ekstensi Virtualisasi Data untuk Azure Data Studio, Anda dapat melewati langkah ini, karena pernyataan CREATE EXTERNAL TABLE dibuat untuk Anda. 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 merupakan koleksi, tentukan nama koleksi dan nama bidang. Dalam contoh,
friends
adalah jenis data kustom. - Perbarui lokasi. Atur nama database dan nama tabel. Perhatikan bahwa nama tiga bagian tidak diizinkan, oleh karena itu Anda tidak dapat membuatnya untuk tabel
system.profile
. Anda juga 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 ( LOCATION='MyDb.RandomData', DATA_SOURCE=[MongoDb])
- Perbarui bidang dengan nama, pengurutan, dan jika merupakan koleksi, tentukan nama koleksi dan nama bidang. Dalam contoh,
Opsional: Buat statistik pada tabel eksternal.
Sebaiknya 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;
Penting
Setelah Anda membuat sumber data eksternal, Anda bisa menggunakan perintah CREATE EXTERNAL TABLE untuk membuat tabel yang dapat dikueri di atas sumber tersebut.
Misalnya, lihat Membuat tabel eksternal untuk MongoDB.
Opsi koneksi MongoDB
Untuk informasi tentang opsi koneksi MongoDB, lihat dokumentasi MongoDB: Format URI String Koneksi.
Perataan
Meratakan diaktifkan untuk data berlapis dan berulang dari koleksi dokumen MongoDB. Pengguna diharuskan untuk mengaktifkan create an external table
dan secara eksplisit menentukan skema relasional melalui koleksi dokumen MongoDB yang mungkin memiliki data berlapis dan/atau berulang.
Jenis data berulang/berlapis JSON akan dibuat datar 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
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_index
Jenis Data: bigint
Ada beberapa potensi masalah dengan teknik ini, dua di antaranya adalah:
Bidang berulang kosong akan secara efektif menutupi data yang terkandung dalam bidang datar dari rekaman yang sama
Kehadiran beberapa bidang berulang dapat mengakibatkan ledakan jumlah baris yang dihasilkan
Sebagai contoh, SQL Server mengevaluasi koleksi data sampel restoran MongoDB yang disimpan dalam format JSON yang non-relasional. Setiap restoran memiliki bidang alamat yang bertingkat dan daftar nilai yang diberikan pada hari-hari yang berbeda. Gambar di bawah ini menggambarkan restoran khas dengan alamat yang tersusun dan penilaian berulang yang tersusun.
Alamat objek akan direduksi sebagai berikut:
- Bidang
restaurant.address.building
bersarang menjadirestaurant.address_building
- Bidang bersarang
restaurant.address.coord
menjadirestaurant.address_coord
- Bidang bersarang
restaurant.address.street
menjadirestaurant.address_street
- Bidang
restaurant.address.zipcode
berubah menjadirestaurant.address_zipcode
Nilai array akan diratakan seperti di bawah ini:
tanggal_nilai | nilai_nilai | skor_permainan |
---|---|---|
1393804800000 | A | 2 |
1378857600000 | A | 6 |
135898560000 | A | 10 |
1322006400000 | A | 9 |
1299715200000 | B | 14 |
Koneksi Cosmos DB
Menggunakan Cosmos DB Mongo API dan konektor Mongo DB PolyBase, Anda dapat membuat tabel eksternal dari instans Cosmos DB. Ini dicapai dengan mengikuti langkah-langkah yang sama seperti yang tercantum di atas. Pastikan kredensial yang dicakup oleh database, alamat server, port, dan parameter lokasi mencerminkan server Cosmos DB.
Contoh
Contoh berikut membuat sumber data eksternal dengan parameter berikut:
Parameter | Nilai |
---|---|
Nama | external_data_source_name |
Layanan | mongodb0.example.com |
Kasus | 27017 |
Set replika | myRepl |
TLS | true |
Komputasi pushdown | On |
CREATE EXTERNAL DATA SOURCE external_data_source_name
WITH (LOCATION = 'mongodb://mongodb0.example.com:27017',
CONNECTION_OPTIONS = 'replicaSet=myRepl; tls=true',
PUSHDOWN = ON ,
CREDENTIAL = credential_name);
Langkah berikutnya
Untuk tutorial selengkapnya tentang membuat sumber data eksternal dan tabel eksternal ke berbagai sumber data, lihat referensi PolyBase Transact-SQL.
Untuk mempelajari selengkapnya tentang PolyBase, lihat Gambaran Umum SQL Server PolyBase.