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
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
Ha még nem telepítette a PolyBase-t, tekintse meg PolyBase telepítésicímű témakört.
Az adatbázis hatókörébe tartozó hitelesítő adatok létrehozása előtt az adatbázisnak rendelkeznie kell egy fő kulccsal 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 szeretné lekérdezni az adatokat, 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:
- CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)
- KÜLSŐ ADATFORRÁS LÉTREHOZÁSA (Transact-SQL)
- HOZZON LÉTRE KÜLSŐ TÁBLÁT (Transact-SQL)
- CREATE STATISTICS (Transact-SQL)
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 megadhat
PUSHDOWN = ONvagyPUSHDOWN = OFF, ha 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.
Az Azure Data Studio Adatvirtualizálási bővítményével csatlakozhat a MongoDB-illesztőHöz tartozó PolyBase ODBC-illesztő által észlelt sémán alapuló KÜLSŐ TÁBLA LÉTREHOZÁSA utasításhoz, és létrehozhatja azt. Manuálisan is testre szabhat egy szkriptet a rendszer által tárolt eljárás kimenete alapján, sp_data_source_objects (Transact-SQL). Az Azure Data Studio adatvirtualizálási bővítménye és
sp_data_source_table_columnsugyanazokat a belső tárolt eljárásokat használják a külső sémaséma lekérdezéséhez.Ha tömböket tartalmazó MongoDB-gyűjteményekhez szeretne külső táblákat létrehozni, javasoljuk, hogy Data Virtualization bővítményt használja az Azure Data Studio. A meghajtó automatikusan végrehajtja a lapítási műveleteket. 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 az Azure Data Studio Adatvirtualizálási bővítményét használja, kihagyhatja ezt a lépést, mivel a CREATE EXTERNAL TABLE utasítás automatikusan létrejön az Ön számára. 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, a rendezéssel, és ha gyűjtemények, akkor 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. Vegye figyelembe, hogy a háromrészes nevek nem engedélyezettek, ezért nem hozható létre a
system.profiletáblához. Emellett nem adhat meg nézetet, mert nem tudja lekérni belőle a metaadatokat. - 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 ( LOCATION='MyDb.RandomData', DATA_SOURCE=[MongoDb])- Frissítse a mezőket a nevükkel, a rendezéssel, és ha gyűjtemények, akkor adja meg a gyűjtemény nevét és a mező nevét. A példában a
Nem kötelező: Statisztikák létrehozása külső táblán.
Javasoljuk, hogy hozzon létre statisztikákat 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;
Fontos
Miután létrehozott egy külső adatforrást, a CREATE EXTERNAL TABLE paranccsal létrehozhat egy lekérdezésre képes táblát a forráson keresztül.
Például lásd Külső tábla létrehozása MongoDB-hez.
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 engedélyezett a MongoDB-dokumentumgyűjteményekből származó beágyazott és ismétlődő adatok esetében. A felhasználónak engedélyeznie kell create an external table, és explicit módon meg kell adnia egy relációs sémát olyan MongoDB-dokumentumgyűjteményeken keresztül, amelyek beágyazott és/vagy ismétlődő adatokat tartalmazhatnak.
A beágyazott/ismétlődő JSON-adattípusok az alábbiak szerint lesznek laposítva.
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
- Az oszlop neve: objectname_keyname
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_index
Adattípus: bigint
Ezzel a technikával számos lehetséges probléma merül fel, amelyek közül kettő a következő:
Egy üres ismétlődő mező hatékonyan elfedi az ugyanazon rekord egybesimított mezőiben lévő adatokat
Több ismétlődő mező jelenléte az előállított sorok számának robbanásához vezethet
Az SQL Server például kiértékeli a MongoDB-mintaadatkészlet-éttermi gyűjteményt, amely nem relációs JSON formátumban van tárolva. 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 ábra egy tipikus éttermet mutat beágyazott címmel és ismétlődően beágyazott osztályzatokkal.
Az objektumcím az alábbi módon lesz összesimulva:
- A beágyazott mező
restaurant.address.buildingrestaurant.address_buildinglesz - A beágyazott mező
restaurant.address.coordrestaurant.address_coord-é változik - A beágyazott mező
restaurant.address.streetrestaurant.address_street-re válik - A beágyazott mező
restaurant.address.zipcoderestaurant.address_zipcodelegyen
Az osztályzatok az alábbi módon lesznek lapítva:
| 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 és a Mongo DB PolyBase-csatlakozó használatával létrehozhat egy külső táblát egy Cosmos DB-példány. Ezt a fenti lépések végrehajtásával érheti el. Győződjön meg arról, hogy az adatbázis hatókörébe tartozó hitelesítő adatok, kiszolgálói cím, port és hely sztring a Cosmos DB-kiszolgálóénak felel meg.
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 |
| Eset | 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',
CONNECTION_OPTIONS = 'replicaSet=myRepl; tls=true',
PUSHDOWN = ON ,
CREDENTIAL = credential_name);
Következő lépések
További oktatóanyagok a külső adatforrások és külső táblák különböző adatforrásokhoz való létrehozásáról: PolyBase Transact-SQL referencia.
További információ a PolyBase-ről: Az SQL Server PolyBaseáttekintése.