Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Tento článek vysvětluje, jak pomocí PolyBase v instanci SQL Serveru dotazovat externí data v MongoDB.
Požadavky
Nainstalujte PolyBase na Windows.
Před vytvořením přihlašovacích údajů s vymezeným oborem databáze vytvořte hlavní klíč databáze (DMK) pro ochranu přihlašovacích údajů. Další informace naleznete v tématu CREATE MASTER KEY.
Konfigurace externího zdroje dat MongoDB
Pokud chcete dotazovat data ze zdroje dat MongoDB, musíte vytvořit externí tabulky pro odkazování na externí data. Tato část obsahuje ukázkový kód pro vytvoření těchto externích tabulek.
V této části se používají následující příkazy Transact-SQL:
- VYTVOŘENÍ POVĚŘENÍ S ROZSAHEM DATABÁZE
- VYTVOŘENÍ EXTERNÍHO ZDROJE DAT
- VYTVOŘENÍ EXTERNÍ TABULKY
- VYTVOŘIT STATISTIKY
Vytvořte přihlašovací údaje s vymezeným oborem databáze pro přístup ke zdroji MongoDB.
Následující skript vytvoří přihlašovací údaje s vymezeným oborem databáze. Před spuštěním skriptu ho aktualizujte pro vaše prostředí:
- Nahraďte
<credential_name>názvem přihlašovacích údajů. - Nahraďte
<username>uživatelským jménem pro externí zdroj. - Nahraďte
<password>odpovídajícím heslem.
CREATE DATABASE SCOPED CREDENTIAL [<credential_name>] WITH IDENTITY = '<username>', SECRET = '<password>';Důležitý
Konektor MongoDB ODBC pro PolyBase podporuje pouze základní ověřování, nikoli ověřování Kerberos.
- Nahraďte
Vytvořte externí zdroj dat.
Následující skript vytvoří externí zdroj dat. Referenční informace najdete v tématu VYTVOŘENÍ EXTERNÍHO ZDROJE DAT. Před spuštěním skriptu ho aktualizujte pro vaše prostředí:
- Aktualizujte umístění. Nastavte
<server>a<port>pro vaše prostředí. - Nahraďte
<credential_name>názvem přihlašovacích údajů, které jste vytvořili v předchozím kroku. - Volitelně můžete zadat
PUSHDOWN = ONneboPUSHDOWN = OFFpokud chcete zadat výpočty pushdownu do externího zdroje.
CREATE EXTERNAL DATA SOURCE external_data_source_name WITH (LOCATION = '<mongodb://<server>[:<port>]>' [ [ , ] CREDENTIAL = <credential_name> ] [ [ , ] CONNECTION_OPTIONS = '<key_value_pairs>'[,...]] [ [ , ] PUSHDOWN = { ON | OFF } ]) [ ; ]- Aktualizujte umístění. Nastavte
Zadejte dotaz na externí schéma v MongoDB.
Pomocí sp_data_source_objects detekujte schéma kolekce (sloupce) pro kolekce MongoDB, které obsahují pole, a ručně vytvořte externí tabulku. Uložená procedura
sp_data_source_table_columnstaké automaticky provede zplošťování prostřednictvím ovladače PolyBase ODBC pro ovladač MongoDB.Vytvořte externí tabulku.
Pokud chcete schéma poskytnout ručně, zvažte vytvoření externí tabulky pomocí následujícího ukázkového skriptu. Referenční informace naleznete v tématu CREATE EXTERNAL TABLE.
Před spuštěním skriptu ho aktualizujte pro vaše prostředí:
Aktualizujte pole jejich názvem a kolací, a pokud jsou součástí kolekcí, zadejte název kolekce a název pole. V tomto příkladu
friendsje vlastní datový typ.Aktualizujte umístění. Nastavte název databáze a název tabulky. Názvy tří částí nejsou povolené, takže je nemůžete pro
system.profiletabulku vytvořit. Nemůžete také zadat zobrazení, protože z něj nemůže získat metadata.Aktualizujte zdroj dat názvem zdroje dat, který jste vytvořili v předchozím kroku.
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' );Volitelné: Vytvoření statistiky pro externí tabulku
Pro zajištění optimálního výkonu dotazů můžete vytvářet statistiky pro sloupce externí tabulky, zejména ty, které se používají pro spojení, filtry a agregace.
CREATE STATISTICS statistics_name ON customer(C_CUSTKEY) WITH FULLSCAN;
Možnosti připojení MongoDB
Informace o možnostech připojení MongoDB najdete v dokumentaci k MongoDB: Formát identifikátoru URI připojovacího řetězce.
Zploštění
U vnořených a opakovaných dat z kolekcí dokumentů MongoDB je povolené zplošťování. Musíte povolit create an external table a explicitně zadat relační schéma pro kolekce dokumentů MongoDB, které můžou obsahovat vnořená nebo opakovaná data.
Vnořené a opakované datové typy JSON jsou zploštěné následujícím způsobem:
Objekt: neseřazená kolekce klíč/hodnota uzavřená do složených závorek (vnořená)
SQL Server vytvoří sloupec tabulky pro každý klíč objektu.
- Název sloupce:
<objectname>_<keyname>
- Název sloupce:
Matice: seřazené hodnoty oddělené čárkami uzavřené v hranatých závorkách (opakované)
SQL Server přidá nový řádek tabulky pro každou položku pole.
SQL Server vytvoří sloupec pro každé pole pro uložení indexu prvku pole.
Název sloupce:
<arrayname>_indexDatový typ: bigint
Tato technika může způsobit několik problémů, mezi které patří:
Prázdné opakované pole maskuje data v plochých polích stejného záznamu.
Více opakovaných polí zvyšuje počet vygenerovaných řádků.
SQL Server například vyhodnotí kolekci restaurace ukázkové datové sady MongoDB uloženou v nerelačním formátu JSON. Každá restaurace má vnořené pole adresy a pole známek, které bylo přiřazeno v různých dnech. Následující obrázek znázorňuje typickou restauraci s vnořenou adresou a opakovaně vnořenými hodnoceními.
Adresy objektů jsou zploštěné takto:
-
restaurant.address.buildingpole se stávárestaurant.address_buildingpolem -
restaurant.address.coordpole se stávárestaurant.address_coordpolem -
restaurant.address.streetpole se stávárestaurant.address_streetpolem -
restaurant.address.zipcodepole se stávárestaurant.address_zipcodepolem
Známky pole jsou zploštěny následujícím způsobem:
| datum známek | stupně_hodnocení | herní skóre |
|---|---|---|
1393804800000 |
A | 2 |
1378857600000 |
A | 6 |
135898560000 |
A | 10 |
1322006400000 |
A | 9 |
1299715200000 |
B | 14 |
Připojení ke službě Cosmos DB
K vytvoření externí tabulky pro instanci Cosmos DB můžete použít rozhraní Mongo API a konektor MongoDB PolyBase. Postupujte podle stejných kroků popsaných výše. Ujistěte se, že přihlašovací údaje v oboru databáze, adresa serveru, port a řetězec umístění odpovídají serveru Cosmos DB.
Příklady
Následující příklad vytvoří externí zdroj dat s následujícími parametry:
| Parametr | Hodnota |
|---|---|
| název | external_data_source_name |
| Service | mongodb0.example.com |
| příklad | 27017 |
| Sada replik | myRepl |
| Protokol TLS | true |
| Výpočet posunu dolů | 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
);
Související obsah
- Transact-SQL PolyBase
- virtualizace dat pomocí PolyBase v SQL Serveru