Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Ez a cikk bemutatja, hogyan használható a PolyBase egy SQL Server-példányon külső adatok lekérdezésére a MongoDB-ben.
Előfeltételek
Telepítse a PolyBase-t Windows rendszeren.
Adatbázis-hatókörű hitelesítő adatok létrehozása előtt hozzon létre egy adatbázis-főkulcsot (DMK) a hitelesítő adatok védelméhez. További információ: CREATE MASTER KEY.
MongoDB külső adatforrás konfigurálása
Ha mongoDB-adatforrásból szeretne adatokat lekérdezni, külső táblákat kell létrehoznia a külső adatokra való hivatkozáshoz. Ez a szakasz mintakódot biztosít ezeknek a külső tábláknak a létrehozásához.
Ebben a szakaszban a következő Transact-SQL parancsokat használjuk:
- HOZZON LÉTRE ADATBÁZIS LÉPTÉKŰ HITELESSÉGI ADATOKAT
- HOZZÁ EGY KÜLSŐ ADATFORRÁST
- KÜLSŐ TÁBLA LÉTREHOZÁSA
- STATISZTIKA LÉTREHOZÁSA
Hozzon létre egy adatbázis-hatókörű hitelesítő adatot a MongoDB-forrás eléréséhez.
A következő szkript létrehoz egy adatbázis-hatókörű hitelesítő adatot. A szkript futtatása előtt frissítse a környezetet:
- Cserélje le a
<credential_name>-t a hitelesítő adat nevére. - Cserélje le
<username>a külső forrás felhasználónévre. - Cserélje le
<password>a megfelelő jelszóra.
CREATE DATABASE SCOPED CREDENTIAL [<credential_name>] WITH IDENTITY = '<username>', SECRET = '<password>';Fontos
A PolyBase-hez készült MongoDB ODBC-összekötő csak az alapszintű hitelesítést támogatja, a Kerberos-hitelesítést nem.
- Cserélje le a
Hozzon létre egy külső adatforrást.
A következő szkript létrehozza a külső adatforrást. További információt CREATE EXTERNAL DATA SOURCEcímű témakörben talál. A szkript futtatása előtt frissítse a környezetet:
- Frissítse a helyet. Állítsa be a
<server>és<port>értékeket a környezetéhez. - Cserélje le
<credential_name>az előző lépésben létrehozott hitelesítő adatok nevére. - Igény szerint adja meg
PUSHDOWN = ON, vagyPUSHDOWN = OFFha leküldéses számítást szeretne megadni a külső forrásnak.
CREATE EXTERNAL DATA SOURCE external_data_source_name WITH (LOCATION = '<mongodb://<server>[:<port>]>' [ [ , ] CREDENTIAL = <credential_name> ] [ [ , ] CONNECTION_OPTIONS = '<key_value_pairs>'[,...]] [ [ , ] PUSHDOWN = { ON | OFF } ]) [ ; ]- Frissítse a helyet. Állítsa be a
A külső séma lekérdezése a MongoDB-ben.
A sp_data_source_objects segítségével észlelhető a tömböket tartalmazó MongoDB-gyűjtemények gyűjteményséma (oszlopai), és manuálisan hozhatja létre a külső táblát. A
sp_data_source_table_columnstárolt eljárás automatikusan elvégzi az összevonást a MongoDB-illesztőhöz készült PolyBase ODBC-illesztőprogramon keresztül.Hozzon létre egy külső táblát.
Ha manuálisan szeretné megadni a sémát, fontolja meg a következő példaszkriptet egy külső tábla létrehozásához. További információt a CREATE EXTERNAL TABLEcímű témakörben talál.
A szkript futtatása előtt frissítse a környezetet:
Frissítse a mezőket a nevükkel és a rendezéssel; ha ezek gyűjtemények, adja meg a gyűjtemény nevét és a mező nevét. A példában a
friendsegy egyéni adattípus.Frissítse a helyet. Adja meg az adatbázis nevét és a tábla nevét. A háromrészes nevek nem engedélyezettek, ezért nem hozhatja létre a
system.profiletáblához. Emellett nem adhat meg nézetet, mert nem lehet lekérni a metaadatokat belőle.Frissítse az adatforrást az előző lépésben létrehozott névvel.
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' );Nem kötelező: Statisztikák létrehozása külső táblán.
Statisztikákat hozhat létre a külső táblaoszlopokról, különösen az illesztésekhez, szűrőkhöz és összesítésekhez használt oszlopokról az optimális lekérdezési teljesítmény érdekében.
CREATE STATISTICS statistics_name ON customer(C_CUSTKEY) WITH FULLSCAN;
MongoDB-kapcsolat beállításai
A MongoDB kapcsolat beállítási lehetőségeiről bővebben a MongoDB dokumentációjában található: Kapcsolati karakterlánc URI formátum.
Laposítás
A laposítás a MongoDB-dokumentumgyűjteményekből származó beágyazott és ismétlődő adatokon engedélyezett. Engedélyeznie kell a create an external table, és explicit módon meg kell adnia egy relációs sémát olyan MongoDB dokumentumgyűjtemények esetében, amelyek tartalmazhatnak beágyazott vagy ismétlődő adatokat.
A beágyazott és ismétlődő JSON-adattípusok az alábbiak szerint vannak összesimulva:
Objektum: rendezetlen kulcs/értékgyűjtemény, kapcsos zárójelek közé zárva (beágyazott)
Az SQL Server minden objektumkulcshoz létrehoz egy táblaoszlopot
- Oszlop neve:
<objectname>_<keyname>
- Oszlop neve:
Tömb: rendezett értékek, vesszővel elválasztva, szögletes zárójelben (ismétlődő)
Az SQL Server minden tömbelemhez új táblázatsort ad hozzá
Az SQL Server tömbenként létrehoz egy oszlopot a tömbelem-index tárolásához
Oszlop neve:
<arrayname>_indexAdattípus: bigint
Ez a technika számos problémát okozhat, például:
Egy üres ismétlődő mező maszkolja az adatokat ugyanazon rekord sík mezőiben.
Több ismétlődő mező növeli a létrehozott sorok számát.
Az SQL Server például nem relációs JSON formátumban tárolt MongoDB-mintaadatkészlet-éttermi gyűjteményt értékeli ki. Minden étteremhez tartozik egy beágyazott címmező és egy osztályzatok tömbje, amelyeket különböző napokon osztottak ki. Az alábbi képen egy tipikus éttermet láthatunk beágyazott címmel és ismétlődő beágyazott értékelésekkel.
Az objektumcímek az alábbiak szerint vannak normalizálva:
- A beágyazott mező
restaurant.address.buildingrestaurant.address_buildinglesz - A beágyazott mező
restaurant.address.coordrestaurant.address_coordlesz - A beágyazott mező
restaurant.address.streetrestaurant.address_streetlesz - A beágyazott mező
restaurant.address.zipcoderestaurant.address_zipcodelesz
A tömbosztályzatok az alábbiak szerint vannak összeolvadva:
| jegyek_dátum | osztályzatok_fokozat | játékok_eredmény |
|---|---|---|
1393804800000 |
Egy | 2 |
1378857600000 |
Egy | 6 |
135898560000 |
Egy | 10 |
1322006400000 |
Egy | 9 |
1299715200000 |
B | 14 |
Cosmos DB-kapcsolat
A Cosmos DB Mongo API-val és a MongoDB PolyBase-összekötővel létrehozhat egy külső táblát egy Cosmos DB-példányhoz. Kövesse a korábban ismertetett lépéseket. Győződjön meg arról, hogy az adatbázis hatókörébe tartozó hitelesítő adatok, kiszolgálócím, port és hely sztring megegyezik a Cosmos DB-kiszolgálóval.
Példák
Az alábbi példa egy külső adatforrást hoz létre a következő paraméterekkel:
| Paraméter | Érték |
|---|---|
| Név | external_data_source_name |
| Szolgáltatás | mongodb0.example.com |
| példány | 27017 |
| Replikakészlet | myRepl |
| TLS | true |
| Leküldéses számítás | 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
);