A PolyBase konfigurálása külső adatok eléréséhez a MongoDB-ben

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:

  1. 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.

  2. 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 , vagy PUSHDOWN = 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 } ])
    [ ; ]
    
  3. 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_columns tárolt eljárás automatikusan elvégzi az összevonást a MongoDB-illesztőhöz készült PolyBase ODBC-illesztőprogramon keresztül.

  4. 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 friends egy 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.profile tá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'
    );
    
  5. 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>
  • 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

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.

Képernyőkép a MongoDB simításáról.

Az objektumcímek az alábbiak szerint vannak normalizálva:

  • A beágyazott mező restaurant.address.buildingrestaurant.address_building lesz
  • A beágyazott mező restaurant.address.coordrestaurant.address_coord lesz
  • A beágyazott mező restaurant.address.streetrestaurant.address_street lesz
  • A beágyazott mező restaurant.address.zipcoderestaurant.address_zipcode lesz

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
);