Kopiowanie danych z bazy danych MongoDB przy użyciu Azure Data Factory lub usługi Synapse Analytics (starsza wersja)

DOTYCZY: Azure Data Factory Azure Synapse Analytics

Wskazówka

Data Factory w usłudze Microsoft Fabric jest następną generacją Azure Data Factory z prostszą architekturą, wbudowaną sztuczną inteligencją i nowymi funkcjami. Jeśli dopiero zaczynasz integrować dane, zacznij od Fabric Data Factory. Istniejące obciążenia ADF można zaktualizować do Fabric, aby uzyskać dostęp do nowych możliwości w zakresie nauki o danych, analiz w czasie rzeczywistym oraz raportowania.

W tym artykule opisano sposób użycia działania kopiowania w potoku Azure Data Factory lub Synapse Analytics w celu skopiowania danych z bazy danych MongoDB. Opiera się na przeglądzie aktywności kopiowania, który przedstawia ogólny przegląd działania kopiowania.

Ważne

Usługa wydała nowy łącznik bazy danych MongoDB, który zapewnia lepszą natywną obsługę bazy danych MongoDB w porównaniu z tą implementacją opartą na protokole ODBC, zapoznaj się z artykułem dotyczącym łącznika bazy danych MongoDB.

Obsługiwane możliwości

Dane z bazy danych MongoDB można skopiować do dowolnego obsługiwanego docelowego magazynu danych. Aby uzyskać listę magazynów danych obsługiwanych jako źródła/ujścia przez działanie kopiowania, zobacz tabelę Obsługiwane magazyny danych.

W szczególności ten łącznik bazy danych MongoDB obsługuje następujące funkcje:

  • MongoDB w wersji 2.4, 2.6, 3.0, 3.2, 3.4 i 3.6.
  • Kopiowanie danych przy użyciu uwierzytelniania podstawowego lub anonimowego .

Wymagania wstępne

Jeśli magazyn danych znajduje się wewnątrz sieci lokalnej, sieci wirtualnej Azure lub chmury prywatnej Amazon Virtual, musisz skonfigurować self-hosted Integration Runtime aby nawiązać z nim połączenie.

Jeśli magazyn danych jest zarządzaną usługą danych w chmurze, możesz użyć Azure Integration Runtime. Jeśli dostęp jest ograniczony do adresów IP zatwierdzonych w regułach zapory, możesz dodać adresy IP Azure Integration Runtime do listy dozwolonych.

Możesz również użyć funkcji zarządzanego środowiska wykonawczego zintegrowanej sieci wirtualnej w Azure Data Factory, aby uzyskać dostęp do sieci lokalnej bez instalowania i konfigurowania lokalnego środowiska Integration Runtime.

Aby uzyskać więcej informacji na temat mechanizmów zabezpieczeń sieci i opcji obsługiwanych przez usługę Data Factory, zobacz Strategie dostępu do danych.

Integration Runtime udostępnia wbudowany sterownik bazy danych MongoDB, dlatego nie trzeba ręcznie instalować żadnego sterownika podczas kopiowania danych z bazy danych MongoDB.

Wprowadzenie

Aby wykonać działanie kopiowania za pomocą potoku, możesz użyć jednego z następujących narzędzi lub zestawów SDK:

Tworzenie połączonej usługi z bazą danych MongoDB przy użyciu interfejsu użytkownika

Wykonaj poniższe kroki, aby utworzyć połączoną usługę z bazą danych MongoDB w interfejsie użytkownika portalu Azure.

  1. Przejdź do karty Zarządzanie w obszarze roboczym Azure Data Factory lub Synapse i wybierz pozycję Połączone usługi, a następnie kliknij pozycję Nowy:

  2. Wyszukaj Mongo i wybierz łącznik MongoDB.

    Zrzut ekranu przedstawiający łącznik bazy danych MongoDB.

  3. Skonfiguruj szczegóły usługi, przetestuj połączenie i utwórz nową połączoną usługę.

    Zrzut ekranu przedstawiający połączoną konfigurację usługi dla bazy danych MongoDB.

Szczegóły konfiguracji łącznika

Poniższe sekcje zawierają szczegółowe informacje o właściwościach używanych do definiowania jednostek usługi Data Factory specyficznych dla łącznika bazy danych MongoDB.

Właściwości połączonej usługi

Następujące właściwości są obsługiwane w przypadku połączonej usługi MongoDB:

Właściwości Opis Wymagane
typ Właściwość type musi być ustawiona na: MongoDb Tak
serwer Adres IP lub nazwa hosta serwera MongoDB. Tak
port Port TCP używany przez serwer MongoDB do nasłuchiwania połączeń klienckich. Nie (wartość domyślna to 27017)
nazwaBazyDanych Nazwa bazy danych MongoDB, do której chcesz uzyskać dostęp. Tak
typ uwierzytelniania Typ uwierzytelniania używanego do nawiązywania połączenia z bazą danych MongoDB.
Dozwolone wartości to: Podstawowa i Anonimowa.
Tak
nazwa użytkownika Konto użytkownika w celu uzyskania dostępu do bazy danych MongoDB. Tak (jeśli jest używane uwierzytelnianie podstawowe).
hasło Hasło użytkownika. Oznacz to pole jako SecureString, aby przechowywać je bezpiecznie lub odwołaj się do sekretu przechowywanego w Azure Key Vault. Tak (jeśli jest używane uwierzytelnianie podstawowe).
authSource Nazwa bazy danych MongoDB, która ma być używana do sprawdzania poświadczeń na potrzeby uwierzytelniania. L.p. W przypadku uwierzytelniania podstawowego ustawieniem domyślnym jest użycie konta administratora i bazy danych określonej przy użyciu właściwości databaseName.
enableSsl Określa, czy połączenia z serwerem są szyfrowane przy użyciu protokołu TLS. Wartość domyślna to false. Nie.
zezwalajNaSamopodpisanyCertyfikatSerwera Określa, czy zezwalać na certyfikaty z podpisem własnym z serwera. Wartość domyślna to false. Nie.
connectVia Integration Runtime używany do nawiązania połączenia z magazynem danych. Dowiedz się więcej w sekcji Wymagania wstępne . Jeśli nie zostanie to określone, zostanie użyta Azure Integration Runtime domyślna. Nie.

Przykład:

{
    "name": "MongoDBLinkedService",
    "properties": {
        "type": "MongoDb",
        "typeProperties": {
            "server": "<server name>",
            "databaseName": "<database name>",
            "authenticationType": "Basic",
            "username": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Właściwości zestawu danych

Aby uzyskać pełną listę sekcji i właściwości dostępnych do definiowania zestawów danych, zobacz Zestawy danych i połączone usługi. Następujące właściwości są obsługiwane w przypadku zestawu danych MongoDB:

Właściwości Opis Wymagane
typ Właściwość type zestawu danych musi być ustawiona na: MongoDbCollection Tak
collectionName Nazwa kolekcji w bazie danych MongoDB. Tak

Przykład:

{
    "name": "MongoDbDataset",
    "properties": {
        "type": "MongoDbCollection",
        "linkedServiceName": {
            "referenceName": "<MongoDB linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {
            "collectionName": "<Collection name>"
        }
    }
}

Właściwości aktywności kopiowania

Aby uzyskać pełną listę sekcji i właściwości dostępnych do definiowania działań, zobacz artykuł Pipelines (Potoki ). Ta sekcja zawiera listę właściwości obsługiwanych przez źródło bazy danych MongoDB.

MongoDB jako źródło

Następujące właściwości są obsługiwane w sekcji źródło działania kopiowania:

Właściwości Opis Wymagane
typ Właściwość type źródła działania kopiowania musi być ustawiona na: MongoDbSource Tak
kwerenda Użyj niestandardowego zapytania SQL-92, aby odczytać dane. Na przykład: wybierz pozycję * z tabeli MyTable. Nie (jeśli określono wartość "collectionName" w zestawie danych)

Przykład:

"activities":[
    {
        "name": "CopyFromMongoDB",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<MongoDB input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "MongoDbSource",
                "query": "SELECT * FROM MyTable"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Wskazówka

Podczas określania zapytania SQL zwróć uwagę na format DateTime. Na przykład: SELECT * FROM Account WHERE LastModifiedDate >= '2018-06-01' AND LastModifiedDate < '2018-06-02' lub użycie parametru SELECT * FROM Account WHERE LastModifiedDate >= '@{formatDateTime(pipeline().parameters.StartTime,'yyyy-MM-dd HH:mm:ss')}' AND LastModifiedDate < '@{formatDateTime(pipeline().parameters.EndTime,'yyyy-MM-dd HH:mm:ss')}'

Schemat według usługi Data Factory

Azure Data Factory wywnioskuje schemat z kolekcji MongoDB przy użyciu ostatnich 100 dokumentów w kolekcji. Jeśli te 100 dokumentów nie zawiera pełnego schematu, niektóre kolumny mogą być ignorowane podczas operacji kopiowania.

Mapowanie typów danych dla bazy danych MongoDB

Podczas kopiowania danych z bazy danych MongoDB następujące mapowania są używane z typów danych Bazy danych MongoDB do tymczasowych typów danych używanych wewnętrznie w usłudze. Zobacz Mapowania schematu i typu danych, aby dowiedzieć się, jak zadanie kopiowania odwzorowuje schemat i typ danych źródła na miejsce przeznaczenia.

Typ danych bazy danych MongoDB Typ danych usługi tymczasowej
Date Int64
Identyfikator Obiektu String
Liczba dziesiętna128 String
Sygnatura czasowa Najważniejsze 32 bity —> Int64
Najmniej znaczące 32 bity —> Int64
String String
Podwójna precyzja Podwójna precyzja
Int32 Int64
Int64 Int64
logiczny logiczny
Null Null
JavaScript String
Wyrażenie regularne String
Minimalny klucz Int64
Maksymalny klucz Int64
Plik binarny String

Uwaga

Aby dowiedzieć się więcej o obsłudze tablic przy użyciu tabel wirtualnych, zapoznaj się z sekcją Obsługa typów złożonych przy użyciu tabel wirtualnych.

Obecnie następujące typy danych bazy danych MongoDB nie są obsługiwane: DBPointer, Symbol, Undefined.

Obsługa złożonych typów przy użyciu tabel wirtualnych

Usługa używa wbudowanego sterownika ODBC do nawiązywania połączenia z bazą danych MongoDB i kopiowania danych. W przypadku typów złożonych, takich jak tablice lub obiekty z różnymi typami w dokumentach, sterownik ponownie normalizuje dane w odpowiednich tabelach wirtualnych. W szczególności jeśli tabela zawiera takie kolumny, sterownik generuje następujące tabele wirtualne:

  • Tabela podstawowa zawierająca te same dane co rzeczywista tabela z wyjątkiem kolumn typu złożonego. Tabela podstawowa używa takiej samej nazwy jak rzeczywista tabela, którą reprezentuje.
  • Tabela wirtualna dla każdej kolumny typu złożonego, która rozszerza zagnieżdżone dane. Tabele wirtualne są nazwane przy użyciu nazwy rzeczywistej tabeli, separatora "_" i nazwy tablicy lub obiektu.

Tabele wirtualne odwołują się do danych w rzeczywistej tabeli, umożliwiając sterownikowi dostęp do danych, które nie są znormalizowane. Dostęp do zawartości tablic Bazy danych MongoDB można uzyskać, wykonując zapytania i łącząc tabele wirtualne.

Przykład

Na przykład tabela ExampleTable to tabela Bazy danych MongoDB zawierająca jedną kolumnę z tablicą obiektów w każdej komórce — Faktury i jedną kolumnę z tablicą typów skalarnych — klasyfikacje.

_id Nazwa klienta Faktury Poziom usługi Oceny
1111 ABC [{invoice_id:"123", item:"oven", price:"456", discount:"0.2"}, {invoice_id:"124", item:"oven", price: "1235", discount: "0.2"}] Srebrny [5,6]
2222 XYZ [{invoice_id:"135", item:"lodówka", price: "12543", discount: "0.0"}] Złoty [1,2]

Sterownik wygenerowałby wiele tabel wirtualnych reprezentujących tę pojedynczą tabelę. Pierwsza tabela wirtualna to tabela podstawowa o nazwie "ExampleTable", pokazana w przykładzie. Tabela podstawowa zawiera wszystkie dane oryginalnej tabeli, ale dane z tablic zostały pominięte i są rozszerzane w tabelach wirtualnych.

_id Nazwa klienta Poziom usługi
1111 ABC Srebrny
2222 XYZ Złoty

W poniższych tabelach przedstawiono tabele wirtualne reprezentujące oryginalne tablice w przykładzie. Te tabele zawierają następujące elementy:

  • Odwołanie z powrotem do oryginalnej kolumny klucza podstawowego odpowiadającej wierszowi oryginalnej tablicy (za pośrednictwem kolumny _id)
  • Wskazanie położenia danych w oryginalnej tablicy
  • Rozwinięte dane dla każdego elementu w tablicy

Tabela "ExampleTable_Invoices":

_id ExampleTable_Faktury_dim1_idx id_faktury element cena Zniżka
1111 0 123 toster 456 0,2
1111 1 124 piekarnik 1235 0,2
2222 0 135 lodówka 12543 0,0

Tabela "ExampleTable_Ratings":

_id ExampleTable_Ratings_dim1_idx ExampleTable_Oceny
1111 0 5
1111 1 6
2222 0 1
2222 1 2

Aby uzyskać listę magazynów danych obsługiwanych jako źródła i ujścia działania kopiowania, zobacz obsługiwane magazyny danych.