DataWorks Data Integration içindeki MongoDB Writer eklentisi, diğer veri kaynaklarından MongoDB'ye veri senkronize eder. Bu konuda, MaxCompute'tan MongoDB'ye toplu senkronizasyonun nasıl yapılacağı açıklanmaktadır.
Önkoşullar
Başlamadan önce aşağıdaki gereksinimleri karşıladığınızdan emin olun:
DataWorks etkinleştirilmiş ve bir MaxCompute veri kaynağı eklemiş olmanız gerekir.
-
Bu eğitimde toplu iş görevini çalıştırmak için Data Integration özel kaynak grubu kullanılır. Devam etmeden önce bu kaynak grubunu satın almanız ve yapılandırmanız gerekir. Daha fazla bilgi için bkz. Data Integration için özel kaynak grubu kullanma.
NotBunun yerine sunucusuz bir kaynak grubu da kullanabilirsiniz. Daha fazla bilgi için bkz. Sunucusuz kaynak grubu kullanma.
Örnek verileri hazırlama
Toplu senkronizasyon için bir MongoDB koleksiyonu ve bir MaxCompute tablosu hazırlayın.
-
Bir MaxCompute tablosu oluşturun ve içine veri ekleyin.
-
Bölüm alanı
ptolarak ayarlanmıştest_write_mongoadlı bölümlendirilmiş bir tablo oluşturun.CREATE TABLE IF NOT EXISTS test_write_mongo( id STRING , col_string STRING, col_int int, col_bigint bigint, col_decimal decimal, col_date DATETIME, col_boolean boolean, col_array string ) PARTITIONED BY (pt STRING) LIFECYCLE 10; -
Değeri
20230215olan bir bölüm ekleyin.insert into test_write_mongo partition (pt='20230215') values ('11','name11',1,111,1.22,cast('2023-02-15 15:01:01' as datetime),true,'1,2,3'); -
Bölümlendirilmiş tablonun doğru şekilde oluşturulduğunu doğrulayın.
SELECT * FROM test_write_mongo WHERE pt='20230215';
-
-
Hedef MongoDB koleksiyonunu hazırlayın.
Bu eğitimde örnek olarak ApsaraDB for MongoDB kullanılmaktadır.
test_write_mongoadlı bir koleksiyon oluşturun.db.createCollection('test_write_mongo')
Toplu iş görevi yapılandırması
1. Adım: MongoDB veri kaynağı ekleme
Bir MongoDB veri kaynağı ekleyin ve bu kaynak ile Data Integration özel kaynak grubu arasında ağ bağlantısı kurun. Daha fazla bilgi için bkz. MongoDB veri kaynağını yapılandırma.
2. Adım: Toplu senkronizasyon düğümü oluşturma ve yapılandırma
DataWorks DataStudio'da bir toplu senkronizasyon düğümü oluşturun ve kaynak ile hedefini yapılandırın. Bu bölümde yalnızca temel parametreler açıklanmaktadır. Diğer parametreleri varsayılan değerlerinde bırakın. Ayrıntılı talimatlar için bkz. Kodsuz kullanıcı arayüzünde görev yapılandırma.
-
Senkronizasyon için ağ bağlantısını yapılandırın.
MongoDB veri kaynağını, MaxCompute veri kaynağını ve Data Integration özel kaynak grubunu seçin. Ardından bağlantıyı test edin.
-
Kaynağı ve hedefi yapılandırın.
MaxCompute bölümlendirilmiş tablosunu ve MongoDB koleksiyonunu seçin. Temel parametreler aşağıdaki tabloda açıklanmıştır.
Parametre
Açıklama
write mode
Mevcut verilerin üzerine yazılıp yazılmayacağını belirler. Bu işlev,
write modevebusiness primary keyolmak üzere iki ilgili ayarı içerir:-
write mode:-
No seçeneğini belirlerseniz eklenti her kaydı yeni bir belge olarak ekler. Bu, varsayılan seçenektir.
-
Yes seçeneğini belirlerseniz bir
business primary keybelirtmeniz gerekir. Eklenti daha sonra aynı iş birincil anahtarına sahip kayıtların üzerine yazar.
-
-
business primary key: Üzerine yazma işlemi için kullanılan her kaydın iş birincil anahtarını belirtir. Yalnızca bir alan belirtebilirsiniz. MongoDB'de bu genellikle_idalanına karşılık gelir.
Notwrite modedeğeri Yes olarak ayarlanır ve _id dışında bir alan iş birincil anahtarı olarak belirtilirse aşağıdakine benzer bir hata oluşabilir:After applying the update, the (immutable) field '_id' was found to have been altered to _id: "2". Bu hata, gelen verilerde iş birincil anahtarıyla tanımlanan mevcut belgenin _id'siyle eşleşmeyen bir _id'ye sahip bir kayıt bulunduğunda meydana gelir. Daha fazla bilgi için bkz. Error: After applying the update, the (immutable) field '_id' was found to have been altered to _id: "2".Pre-Import Statement
İçe aktarma görevinden önce çalıştırılacak bir ön koşulu (PreSQL) belirtir. Yapılandırma JSON biçiminde olmalı ve
typeilejsonözelliklerini içermelidir.-
type: Gereklidir. Geçerli değerlerremovevedropşeklindedir (küçük harfle). -
json:-
typedeğeriremoveolarak ayarlanırsa bu parametre gereklidir. Değeri standart bir MongoDB sorgusu olmalıdır. Daha fazla bilgi için bkz. Query Documents. -
typedeğeridropolarak ayarlanırsa bu parametre gerekli değildir.
-
-
-
Alan eşlemesini yapılandırın.
Veri kaynağı MongoDB olduğunda varsayılan olarak Map Fields in Same Row kullanılır. Kaynak tablo alanlarını manuel olarak düzenlemek için
simgesini de tıklayabilirsiniz. Aşağıda manuel düzenlemeye bir örnek verilmiştir.{"name":"id","type":"string"} {"name":"col_string","type":"string"} {"name":"col_int","type":"long"} {"name":"col_bigint","type":"long"} {"name":"col_decimal","type":"double"} {"name":"col_date","type":"date"} {"name":"col_boolean","type":"bool"} {"name":"col_array","type":"array","splitter":","}Alanları manuel olarak düzenledikten sonra kullanıcı arayüzü kaynak ve hedef alanlar arasındaki eşlemeyi gösterir.
Kaynak alanı
Hedef alanı
id{"name":"id","type":"string"}
col_string{"name":"col_string","type":"string"}
col_int{"name":"col_int","type":"long"}
col_bigint{"name":"col_bigint","type":"long"}
col_decimal{"name":"col_decimal","type":"double"}
col_date{"name":"col_date","type":"date"}
col_boolean{"name":"col_boolean","type":"bool"}
col_array{"name":"col_array","type":"array","splitter":","}
3. Adım: Toplu senkronizasyon düğümünü gönderme ve dağıtma
Bu görevi standart mod çalışma alanında periyodik olarak çalıştırmak için toplu senkronizasyon düğümünü üretim ortamına göndermeniz ve dağıtmanız gerekir. Daha fazla bilgi için bkz. düğüm dağıtımı.
4. Adım: Toplu senkronizasyon düğümünü çalıştırma ve sonuçları görüntüleme
Düğümü yapılandırdıktan sonra çalıştırın. Görev tamamlandığında MongoDB koleksiyonundaki senkronize edilen verileri görüntüleyin. Görev, hedef veritabanında aşağıdaki alanlara ve değerlere sahip bir belge kaydı oluşturur: _id değeri 63ecc513143e565c9b037623, col_array değeri [1, 2, 3], col_bigint değeri 111, col_boolean değeri true, col_date değeri 2023-02-15T07:01:01.000Z, col_decimal değeri 1.22, col_int değeri 1, col_string değeri name11 ve id değeri 11.
Ek: Veri türü dönüştürme
type parametresi için desteklenen değerler
type parametresi için desteklenen değerler şunlardır: INT, LONG, DOUBLE, STRING, BOOL, DATE ve ARRAY.
Dizi türü
Verileri MongoDB dizisi olarak yazmak için type parametresini ARRAY olarak ayarlayın ve splitter özelliğini yapılandırın. Örneğin:
Kaynak veriler şu dizedir:
a,b,c.Görev yapılandırmasında type değeri
ARRAYve splitter değeri,olarak ayarlanır.Görev çalıştırıldıktan sonra MongoDB'deki sonuç veriler şöyledir:
["a","b","c"].