close
Article

Data pipeline гэж юу вэ? Data pipeline үүсгэх нь яагаад чухал гэж ?

Өгөгдлийн шинжлэх ухаан бол аж үйлдвэрийн 4-р хувьсгал дахь чухал түлхүүр хүчин зүйл юм. Өгөгдлийн шинжлэх ухаан ба өгөгдлийн инженерчлэлийн хүрээнд орчин үеийн өгөгдлийн дэд бүтцийг бүрдүүлэх олон бүрэлдэхүүн хэсгүүүд байдаг. Тэдгээрийн гайхалтай бүрэлдэхүүн хэсгийн нэг бол Data pipeline(өгөгдөл дамжуулах хоолой) гэх ухагдахуун юм. Энэ удаад та бүхэндээ өөрийн зүгээс Data pipeline гэх ойлголтыг тайлбарлах гэж хичээе.

Ихэнх Data Pipeline нь доор дурдсан бүх төрлийг агуулсан янз бүрийн эх сурвалжаас өгөгдөл авдаг шинж чанартай байдаг.

  • Гараар өгөгдөл оруулах (spreadsheet, excel etc … )
  • Мэдрэгчээр дамжин ор ирж буй өгөгдлүүд (sensors etc … )
  • SaaS платформ
  • RDBMS
  • Social media болон вэб анализ хийдэг төхөөрөмжүүд
  • ERP
  • CRM
  • Вэб-с scrap хийх байдлаар цуглуулсан өгөгдөл гэх мэт маш олон төрөл байж болно.

Олон эх сурвалжуудаас цуглуулсан өгөгдлийг дамжуулахдаа тодорхой интервалаар API дуудах болон өгөгдлийг дамжуулах job тавих гэх мэтээр тус бүрд нь тохирсон аргуудыг ашиглан SQL хүснэгтүүд, Data warehouse, HDFS эсвэл Amazon S3, Google Cloud Storage гэх мэт янз бүрийн өгөгдөл хадгалах шийдлүүдэд хадгалдаг. Тухайн өгөгдлүүд нь аль хэдийн бүтэцлэгдсэн ч байж болно, бүтэцлэгдээгүй ч байж болно. Гол нь өгөгдлийн төрлүүд болон формат нь data pipeline-н архитектурт асар их нөлөөлнө. Ялангуяа өгөгдлийг хэрхэн задлан шинжлэх болон цэвэрлэхэд ихээхэн нөлөөлнө.

Data pipeline дотор яг юу болдог талаар тайлбарлах гэж оролдоё. (1) Pipeline дотор яг юу болдог вэ ? Data pipeline болгон боловсруулалт хийдэг гэж ойлгож болохгүй, боловсруулалт хийх шаардлага байхгүй нөхцөлүүд бас байдаг. Зарим тохиолдолд түүхий өгөгдлийг (raw data) нэг өгөгдлийн сангаас нөгөө өгөгдлийн сан-руу дамжуулах зорилгоор ч ашиглагдаж болдог. Гэхдээ инэхн тохиолдолд Data pipeline-н зорилго нь өгөгдлийг сайжруулахын тулд зарим төрлийн боловсруулалт эсвэл хувиргалт хийх хэрэгтэй байдаг. Яагаад гэж үү ? Яагаад гэвэл өгөгдлийн хоолойгоор дамжин орж ирж байгаа түүхий өгөгдлүүд нь ихэвчлэн цэвэрлэгдээгүй, шууд ашиглагдах боломжгүй байдаг. Үүнийг дараагийн хэрэглээндээ ашиглах боломжтой болгохын тулд ямар нэгэн байдлаар өөрчлөх хэрэгтэй. Муу эсвэл бохир өгөгдлийг дүн шинжилгээ хийх, загвар сургахад гэх мэтчилэн зорилгоор ашиглавал алдаатай үр дүнгүүд гарах, буруу шийдвэрүүдэд хүргэх нөлөөлөлтэй байдаг. Мөн бохир өгөгдлийг зөөвөрлөсний дараа цэвэрлэхэд асар их хугацаа зарцуулах шаардлага үүсдэг нь цаг хугацааны хувьд алдагдалтай байдаг үүсгэдэг сул талтай.

Data pipeline дотор өгөгдлийг batch processing эсвэл stream processing гэсэн аргачлалуудаар боловсруулж болдог. Batch processing гэдэг нь өгөгдлийг багц хэлбэрээр шилжүүлж, хувиргаж, тогтмол интервалтайгаар дамжуулах тохиргоотойгоор их хэмжээний өгөгдлийг зөөх өөрчлөхөд хамгийн их хэрэгтэй байдаг. Stream processing гэдэг нь near real-time буюу бодит цаг хугацаанд ажилладаг. Өгөгдлийг боловсруулан дамжуулахдаа цаг тутамаас авхуулаад микросекунд хүртэлх хуваариар шууд дамжуулдаг.

Data pipeline явсаар байгаад хүрэх газар нь энгийн өгөгдлийн сан, data warehouse эсвэл data lake ч байж болно. Data warehouse болон өгөгдлийн сангууд нь ETL pipeline-р орж ирсэн боловсруулагдсан өгөгдлүүдийг хадгалдаг. Data lake-үүд нь түүхий болон боловсруулаагүй өгөгдөл рүү илүү чиглэгддэг. Data lake эсвэл өгөгдлийн сангууд нь ELT pipeline-тай илүү нийцтэй ажилладаг.

ETL болон ELT pipeline нь тус бүрдээ data pipeline төрлийн архитектур гэж явдаг. Хэрэв та ETL болон ELT-н талаар илүү дэлгэрэнгүй мэдхийг хүсвэл бидний өмнө нь оруулж байсан нийтлэлийг унших боломжтой.

Тэгвэл бидэнд (2) data pipeline-г хэрхэн үүсгэх вэ ? гэдэг асуулт гарч ирнэ. Ер нь бол data pipeline яагаад үүсгэж байгаа зорилгоо эхлээд тодорхойлох нь зүйтэй байх. Data pipeline үүсгэлээ гэхэд яг ямар үр дүнд, юунд хүрэх гээд байгаа вэ? гэдгээ ойлгодог байх хэрэгтэй. Түүнээс биш бидэнд ийм ийм өгөгдлүүд байна эднийгээ л цуглуулчихмаар байна гэсэн үүднээс хандахгүй байх нь зүгээр. Энэ дээр хамгийн нийтлэг энгийн жишээ татаж авч үзье. Нэгэн байгууллага data warehouse-тай болж BI tool ашиглан байгууллагынхаа өгөгдөл дээр шинжилгээ хиймээр байвч хэрхэн өгөгдлөө автоматаар цуглуулахаа мэдэхгүй байгаа гэж үзье.

Эхний алхам: өгөгдлийн эх үүсвэрүүдээ тодорхойлох хэрэгтэй. Үүний дараагаар тухай бүрт нь зориулсан хадгалах сав суулгаа бэлдэнэ. Таны өгөгдөл ямар ч хэлбэрээр байж болох учраас SQL database, file storage, HDFS гэх мэт өгөгдөл хадгалалтын шийдлүүдээ тодорхойлох нь зөв юм.

Дараагийн алхам: За нэгэнт өгөгдөл болон түүнийг хадгалах саваа бэлдчихсэн бол өгөгдөл дамжуулах шийдлээ тодорхойлох нь зүйтэй. Түүний дараа таны үүсгэсэн data warehouse доторх цаашилбал data mart-уудруу аль аль өгөгдөл ямар хэлбэрээр, хэрхэн боловсруулагдаж орох шаардлагатайг тодорхойлж тэдгээрт зориулан тус бүрт нь ETL tool ч юмуу өгөгдөл дамжуулах хэрэгслийг ашиглан job-ууд үүсгэж өгөх хэрэгтэй. (job гэдэгт нь тухайн өгөгдлийг цэвэрлэх, боловсруулах, field mapping, хэдэн цагт өгөгдлийг дамжуулах гэх зэрэг нь бүгдийг багтаан илэрхийлсэн болно) Өөрийн job-г зөв ажиллаж байна уу ? Үгүй юу? гэдгээ байнга хянах шаардлагатай болно. Хянахын тулд apache airflow гэдэг ч юм уу ийм төрлийн tool-үүдыг ашиглавал зүгээр байдаг.

Эцсийн алхам: Ингээд эцсийн дүндээ таны байгууллагын data warehouse-руу таны үнэт эрдэнэ мэт өгөгдөл цаг алдалгүй шинэчлэгдэн орж та BI tool-ээ ашиглан дата шинжилгээ хийж чухал стратегийн шийдвэрүүдээ гаргаж чадхаар боллоо.

(3) Data pipeline-г ашиглах ямар тохиолдолууд байдаг вэ ?

  • Data migration (өгөгдлийн шилжилт) – байгууллагууд систем хооронд шилжих эсвэл шинэ системтэй болох үед хуучин системээс өгөгдлүүдээ шинэ системдээ тохируулан зөөвөрлөх асуудалтай тулгардаг. Мэдээж үүнийг manual байдлаар хийвэл маш их цаг хугацааны ажил болж, системд өгөгдөлийг буруу байршуулах эрсдэл өндөр байдаг. Тиймээс data pipeline-г энэ тохиолдолд ашиглах нь илүү тохиромжтой зөв шийдэл байдаг. Data pipeline нь өгөгдлийг шилжүүлэх ажлыг гүйцэтгэхэд ашигладаг. Үүнд уламжлалт SQL өгөгдлийн сангаас (Oracle, MySql, MSSQL гэх мэт) cloud өгөгдлийн санруу дамжуулалт ч багтана. Cloud өгөгдлийн сан нь data pipeline-н ажиллах хүчин чадлыг өргөтгөх боломжтой, уян хатан бөгөөд real-time дамжуулах pipeline-г үүсгэх боломж олгодог.
  • Data warehouse үүсгэх ба анализ хийх – хамгийн түгээмэл data pipeline-г ашигладаг тохиолдол нь түүхий өгөгдлийг ETL ашиглан data warehouse-руу дамжуулдаг. Үүний дараа өгөгдлийн шинжээчид өгөгдөлд дүн шинжилгээ хийн тайлан, график болон бүсад дүрслэлийг бий болгож чадна. Дараа нь эдгээр өгөгдлийг стратегийн шийдвэр гаргах, ирээдүйн өгөгдөлд суурилсан төслүүдэд ашиглаж болно.
  • Хиймэл оюун ухаан болон машин сургалтын алгоритмууд – Data pipeline нь өгөгдлийг машин сургалт, хиймэл оюун ухааны загварт шилжүүлэх боломжтой. Машин сургалтын алгоритм нь өгөгдлөөс суралцах, задлан шинжлэх, тэр байтугай маргаантай дэвшилтэт техникийг гүйцэтгэх боломжтой. Эдгээр машин сургалтын загваруудыг дараа нь янз бүрийн програм хангамжид ашиглаж болно. Data pipeline-с өгөгдлөө авдаг машин сургалтын алгоритмыг маркетинг, санхүү, шинжлэх ухаан, харилцаа холбоо гэх мэт салбаруудад ашиглаж болно.
  • IoT (юмсын интернет) интеграцчилал – IoT-д илүү real байдлаар өгөгдлийг шинжилж хурдан үр дүн гаргаж хариу урвалыг үзүүлэх зорилгоор ашиглаж болно. Өгөгдөл боловсруулалт, машин сургалт гэх мэт процессоор дүн шинжилгээ хийвэл удаан хугацаа зарцуулж тэр хэмжээгээр шийдвэр гаргалтууд удаашрах байдал үүсдэг нь IoT-д суурилсан системүүдэд тохиромжгүй байдаг.

Мэдээж хэрэг (4) Data pipeline-д тулгардаг хэд хэдэн асуудал бэрхшээлүүд байдаг. Үүнд:

  • Өгөгдлийн бүрэн бүтэн байдал – Data pipeline-г үүсгэж, ажиллах горимыг нь бүтээх нь дан ганц хангалттай биш ээ. Учир нь таны өгөгдлийн чанарын хувьд суурь асуудлууд байж магадгүй, жишээлбэл таны бичсэн функц одоогоор анзаарагдаагүй хэдэн өдрийн өгөгдлийг дамжуулаагүй байж болзошгүй юм. Та өгөгдлийнхөө чанарыг шалгаж, өгөгдөл зөв урсаж байгаа эсэхийг давхар шалгаж амжилттай, амжилтгүй дамжуулалтыг хянахын тулд Apache Airflow, luigi, prefect зэрэг data pipeline-г хянаж удирддаг хэрэгслүүдийг ашиглах нь зүйтэй.
  • Өөрчлөлт ороход үүсдэг доголдол – Таны data pipeline-н ажиллуулж буй хүснэгт эсвэл өгөгдлийн сан зэрэгт шинэчлэлт ороход л таны data pipeline доголдох магадлалтай. Тиймээс data pipeline-н ажиллуулж буй өгөгдлийн бүтэц өөрчлөгдөх болгонд data pipeline-аа шинэчилж байхаа мартуузай.
  • Гуравдагч этгээдээс хамаарах асуудал – Хэрэв та гуравдагч этгээдийн API ашигладаг байгаад таны хандах эрх хаагдах юмуу дуусах тохиолдолд таны pipeline-н ажил зогсох болно. Нэмж дурдахад хэрэв та data pipeline үүсгэсэн код дотроо олон төрлийн сан ашиглаж байгаа бол эдгээрийн хамгийн сүүлийн хувилбарыг шинэчлэх үед сангуудын интеграцчилал зөрчилдөөний улмаас таны код ажиллахаа больж магадгүй. Тиймээс та гуравдагч талын API гаргагчидаас хамааралтай байх үедээ таны хандах эрх дуусахыг мэдэгдсэн автоматжуулсан тохиргоотой байхад илүүдэхгүй л байх.

Мөн танд тестийн сервертэй байхыг зөвлөж байна. Учир нь дээрх дурдсан асуудлууд үүссэн тохиолдолд production орчин дээрээ засвар хийх нь тийм ч зөв алхам биш болов уу. Тэрний оронд тестийн сервер дээрээ бүх алдаа, зөрчилөө засчихаад production орчинруугаа нэвтрүүлэлт хийвэл оновчтой.

Эцэст нь – data pipeline гэсэн нэр томъёо нь үндсэндээ өгөгдөл дамжуулах, шилжүүлэхтэй холбоотой хэд хэдэн процессийг илэрхийлдэг ерөнхий өргөн цар хүрээтэй нэр томьёо юм. Data pipeline нь маш энгийн, цөөн тооны өгөгдөлтэй ажиллах эсвэл асар том, сая сая хэрэглэгчдийг хамарсан өгөгдөлтэй ажиллах боломжтой. Мэдээж data pipeline-г үүсгэх нь төвөгтэй. Тийм учраас мэргэжлийн дата инженер, энэ чиглэлийн бэлэн шийдлүүд, энэ төрлийн үйлчилгээ үзүүлдэг мэргэжлийн газруудад хандах нь таны бизнес болон өгөгдөлд суурилсан төслүүдэд ихээхэн чухал гэдгийг хэлэх нь зүйтэй.

Өгөгдлийн шинжлэх ухаан Монголд хөгжихийн төлөө !

Tags : review
D-Boy

The author D-Boy

Leave a Response