Panduan Insinyur Data Untuk Penyimpanan Data Non-Tradisional

Diterbitkan: 2022-03-11

Rekayasa Data

Dengan munculnya big data dan ilmu data, banyak peran engineering ditantang dan diperluas. Salah satu peran zaman baru adalah rekayasa data .

Awalnya, tujuan rekayasa data adalah memuat sumber data eksternal dan merancang basis data (merancang dan mengembangkan jalur pipa untuk mengumpulkan, memanipulasi, menyimpan, dan menganalisis data).

Sejak itu berkembang untuk mendukung volume dan kompleksitas data besar. Jadi rekayasa data sekarang merangkum berbagai keterampilan, mulai dari perayapan web, pembersihan data, komputasi terdistribusi, serta penyimpanan dan pengambilan data.

Untuk rekayasa data dan insinyur data, penyimpanan dan pengambilan data adalah komponen penting dari alur bersama dengan bagaimana data dapat digunakan dan dianalisis.

Belakangan ini, banyak teknologi penyimpanan data baru dan berbeda telah muncul. Namun, mana yang paling cocok dan memiliki fitur paling sesuai untuk rekayasa data?

Kebanyakan insinyur akrab dengan database SQL, seperti PostgreSQL, MSSQL, dan MySQL, yang terstruktur dalam tabel data relasional dengan penyimpanan berorientasi baris.

Mengingat bagaimana database ini ada di mana-mana, kami tidak akan membahasnya hari ini. Sebagai gantinya, kami mengeksplorasi tiga jenis penyimpanan data alternatif yang semakin populer dan yang telah memperkenalkan pendekatan berbeda untuk menangani data.

Dalam konteks rekayasa data, teknologi ini adalah mesin pencari, penyimpanan dokumen, dan penyimpanan kolom.

  • Mesin pencari unggul dalam kueri teks. Jika dibandingkan dengan pencocokan teks dalam database SQL, seperti LIKE , mesin telusur menawarkan kemampuan kueri yang lebih tinggi dan kinerja yang lebih baik di luar kotak.
  • Penyimpanan dokumen memberikan kemampuan beradaptasi skema data yang lebih baik daripada database tradisional. Dengan menyimpan data sebagai objek dokumen individual, sering direpresentasikan sebagai JSON, mereka tidak memerlukan pradefinisi skema.
  • Toko kolom berspesialisasi dalam kueri kolom tunggal dan agregasi nilai. Operasi SQL, seperti SUM dan AVG , jauh lebih cepat di penyimpanan kolom, karena data dari kolom yang sama disimpan berdekatan di hard drive.

Dalam artikel ini, kami mengeksplorasi ketiga teknologi: Elasticsearch sebagai mesin pencari, MongoDB sebagai penyimpanan dokumen, dan Amazon Redshift sebagai penyimpanan kolom.

Dengan memahami penyimpanan data alternatif, kita dapat memilih yang paling cocok untuk setiap situasi.

Penyimpanan untuk Rekayasa Data: Mana yang Terbaik?

Untuk insinyur data, aspek terpenting dari penyimpanan data adalah
bagaimana mereka mengindeks, shard, dan data agregat.
Menciak

Untuk membandingkan teknologi ini, kami akan memeriksa bagaimana mereka mengindeks, memisahkan, dan menggabungkan data.

Setiap strategi pengindeksan data meningkatkan kueri tertentu sambil menghalangi yang lain.

Mengetahui kueri mana yang paling sering digunakan dapat memengaruhi penyimpanan data mana yang akan diadopsi.

Sharding, sebuah metodologi di mana database membagi datanya menjadi beberapa bagian, menentukan bagaimana infrastruktur akan tumbuh seiring dengan lebih banyak data yang diserap.

Memilih salah satu yang sesuai dengan rencana pertumbuhan dan anggaran kami sangatlah penting, dan ini berlaku untuk perusahaan ilmu data mana pun, berapa pun ukurannya.

Akhirnya, masing-masing teknologi ini mengumpulkan datanya dengan sangat berbeda.

Ketika kita berurusan dengan gigabyte dan terabyte data, strategi agregasi yang salah dapat membatasi jenis dan kinerja laporan yang dapat kita hasilkan.

Sebagai insinyur data, kita harus mempertimbangkan ketiga aspek tersebut saat mengevaluasi penyimpanan data yang berbeda.

pesaing

Mesin Pencari: Elasticsearch

Elasticsearch dengan cepat mendapatkan popularitas di antara rekan-rekannya karena skalabilitas dan kemudahan integrasinya. Dibangun di atas Apache Lucene, ia menawarkan fungsionalitas pencarian dan pengindeksan teks yang kuat dan siap pakai. Selain tugas mesin pencari tradisional, pencarian teks, dan kueri nilai yang tepat, Elasticsearch juga menawarkan kemampuan agregasi berlapis.

Toko Dokumen: MongoDB

Pada titik ini, MongoDB dapat dianggap sebagai database NoSQL masuk. Kemudahan penggunaan dan fleksibilitasnya dengan cepat mendapatkan popularitasnya. MongoDB mendukung kueri yang kaya dan mudah beradaptasi untuk menggali dokumen yang kompleks. Bidang yang sering ditanyakan dapat dipercepat melalui pengindeksan, dan ketika menggabungkan sebagian besar data, MongoDB menawarkan saluran multi-tahap.

Toko Kolom: Amazon Redshift

Bersamaan dengan pertumbuhan popularitas NoSQL, database kolumnar juga menarik perhatian, terutama untuk analitik data. Dengan menyimpan data dalam kolom alih-alih baris biasa, operasi agregasi dapat dijalankan langsung dari disk, sangat meningkatkan kinerja. Beberapa tahun yang lalu, Amazon meluncurkan layanan yang dihosting untuk toko kolumnar bernama Redshift.

pengindeksan

Kemampuan Pengindeksan Elasticsearch

Dalam banyak hal, mesin pencari adalah penyimpanan data yang mengkhususkan diri dalam pengindeksan teks.

Sementara penyimpanan data lain membuat indeks berdasarkan nilai bidang yang tepat, mesin telusur mengizinkan pengambilan hanya dengan sebagian bidang (biasanya teks).

Secara default, pengambilan ini dilakukan secara otomatis untuk setiap bidang melalui penganalisis.

Penganalisis adalah modul yang membuat beberapa kunci indeks dengan mengevaluasi nilai bidang dan memecahnya menjadi nilai yang lebih kecil.

Misalnya, penganalisis dasar mungkin memeriksa "rubah cokelat cepat melompati anjing malas" menjadi kata-kata, seperti "si", "cepat", "coklat", "rubah", dan seterusnya.

Metode ini memungkinkan pengguna untuk menemukan data dengan mencari fragmen dalam hasil, diurutkan berdasarkan berapa banyak fragmen yang cocok dengan data dokumen yang sama.

Penganalisis yang lebih canggih dapat memanfaatkan jarak edit, n-gram, dan filter berdasarkan stopword, untuk membangun indeks pengambilan yang komprehensif.

Kemampuan Pengindeksan MongoDB

Sebagai penyimpanan data generik, MongoDB memiliki banyak fleksibilitas untuk mengindeks data.

Tidak seperti Elasticsearch, ini hanya mengindeks bidang _id secara default, dan kita perlu membuat indeks untuk bidang yang sering ditanyakan secara manual.

Dibandingkan dengan Elasticsearch, penganalisis teks MongoDB tidak sekuat itu. Tapi itu memberikan banyak fleksibilitas dengan metode pengindeksan, dari gabungan dan geospasial untuk kueri yang optimal hingga TTL dan jarang untuk pengurangan penyimpanan.

Kemampuan Pengindeksan Redshift

Tidak seperti Elasticsearch, MongoDB, atau bahkan database tradisional, termasuk PostgreSQL, Amazon Redshift tidak mendukung metode pengindeksan.

Sebaliknya, ini mengurangi waktu kueri dengan mempertahankan pengurutan yang konsisten pada disk.

Sebagai pengguna, kita dapat mengonfigurasi kumpulan nilai kolom yang diurutkan sebagai kunci pengurutan tabel. Dengan data yang diurutkan pada disk, Redshift dapat melewati seluruh blok selama pengambilan jika nilainya berada di luar rentang yang ditanyakan, sangat meningkatkan kinerja.

pecahan

Kemampuan Sharding Elasticsearch

Elasticsearch dibangun di atas Lucene untuk menskalakan secara horizontal dan siap produksi.

Penskalaan dilakukan dengan membuat beberapa instance Lucene (pecahan) dan mendistribusikannya ke beberapa node (server) dalam sebuah cluster.

Secara default, setiap dokumen dirutekan ke shard masing-masing melalui bidang _id -nya.

Selama pengambilan, node master mengirimkan setiap pecahan salinan kueri sebelum akhirnya mengumpulkan dan memeringkatnya untuk keluaran.

Kemampuan Sharding MongoDB

Dalam cluster MongoDB, ada tiga jenis server: router, config, dan shard.

Dengan menskalakan router, server dapat menerima lebih banyak permintaan, tetapi beban berat terjadi di server shard.

Seperti halnya Elasticsearch, dokumen MongoDB dirutekan (secara default) melalui _id ke shard masing-masing. Pada waktu kueri, server konfigurasi memberi tahu router, yang membagi kueri, dan server router kemudian mendistribusikan kueri dan menggabungkan hasilnya.

Kemampuan Sharding Redshift

Cluster Amazon Redshift terdiri dari satu node pemimpin, dan beberapa node komputasi.

Node pemimpin menangani kompilasi dan distribusi kueri serta agregasi hasil antara.

Tidak seperti server router MongoDB, node pemimpin konsisten dan tidak dapat diskalakan secara horizontal.

Meskipun ini menciptakan hambatan, ini juga memungkinkan caching yang efisien dari rencana eksekusi yang dikompilasi untuk kueri populer.

Agregasi

Kemampuan Agregasi Elasticsearch

Dokumen dalam Elasticsearch dapat dikelompokkan berdasarkan nilai tepat, rentang, atau bahkan temporal dan geolokasi.

Bucket ini dapat dikelompokkan lebih lanjut menjadi granularitas yang lebih halus melalui agregasi bersarang.

Metrik, termasuk rata-rata dan deviasi standar, dapat dihitung untuk setiap lapisan, yang menyediakan kemampuan untuk menghitung hierarki analisis dalam satu kueri.

Menjadi penyimpanan berbasis dokumen, ia mengalami keterbatasan perbandingan bidang intra-dokumen.

Misalnya, meskipun pandai memfilter jika pengikut bidang lebih besar dari 10, kami tidak dapat memeriksa apakah pengikut lebih besar dari bidang lain yang mengikuti .

Sebagai alternatif, kita bisa menyuntikkan skrip sebagai predikat kustom. Fitur ini sangat bagus untuk analisis satu kali, tetapi kinerjanya menurun dalam produksi.

Kemampuan Agregasi MongoDB

Agregasi Pipeline kuat dan cepat.

Seperti namanya, ia beroperasi pada data yang dikembalikan secara bertahap.

Setiap langkah dapat memfilter, menggabungkan, dan mengubah dokumen, memperkenalkan metrik baru, atau melepaskan grup yang dikumpulkan sebelumnya.

Karena operasi ini dilakukan secara bertahap, dan dengan memastikan dokumen dan bidang dikurangi menjadi hanya disaring, biaya memori dapat diminimalkan. Dibandingkan dengan Elasticsearch, dan bahkan Redshift, Aggregation Pipeline adalah cara yang sangat fleksibel untuk melihat data.

Terlepas dari kemampuan beradaptasinya, MongoDB mengalami kekurangan yang sama dalam perbandingan bidang intra-dokumen seperti Elasticsearch.

Selanjutnya, beberapa operasi, termasuk $group , memerlukan hasil yang akan diteruskan ke node master.

Dengan demikian, mereka tidak memanfaatkan komputasi terdistribusi.

Mereka yang tidak terbiasa dengan perhitungan pipa bertahap akan menemukan tugas-tugas tertentu tidak intuitif. Misalnya, menjumlahkan jumlah elemen dalam bidang array akan memerlukan dua langkah: pertama, $unwind , dan kemudian operasi $group .

Terkait: Platform Intelijen Bisnis: Tutorial Menggunakan Pipa Agregasi MongoDB

Kemampuan Agregasi Redshift

Manfaat Amazon Redshift tidak dapat diremehkan.

Agregasi yang sangat lambat di MongoDB saat menganalisis lalu lintas seluler diselesaikan dengan cepat oleh Amazon Redshift.

Mendukung SQL, insinyur basis data tradisional akan dengan mudah memigrasikan kueri mereka ke Redshift.

Selain waktu orientasi, SQL adalah bahasa kueri yang terbukti, skalabel, dan kuat, mendukung perbandingan bidang intra-dokumen/baris dengan mudah. Amazon Redshift semakin meningkatkan kinerjanya dengan mengompilasi dan menyimpan kueri populer yang dijalankan di node komputasi.

Sebagai database relasional, Amazon Redshift tidak memiliki fleksibilitas skema yang dimiliki MongoDB dan Elasticsearch. Dioptimalkan untuk operasi baca, ia mengalami hit kinerja selama pembaruan dan penghapusan.

Untuk mempertahankan waktu baca terbaik, baris harus diurutkan, menambahkan upaya operasional ekstra.

Disesuaikan dengan mereka yang memiliki masalah berukuran petabyte, itu tidak murah dan kemungkinan tidak sepadan dengan investasi kecuali ada masalah penskalaan dengan database lain.

Memilih Pemenang

Dalam artikel ini, kami memeriksa tiga teknologi berbeda – Elasticsearch, MongoDB, dan Amazon Redshift – dalam konteks rekayasa data. Namun, tidak ada pemenang yang jelas karena masing-masing teknologi ini adalah yang terdepan dalam kategori jenis penyimpanannya.

Untuk rekayasa data, tergantung pada kasus penggunaan, beberapa opsi lebih baik daripada yang lain.

  • MongoDB adalah database pemula yang fantastis. Ini memberikan fleksibilitas yang kita inginkan ketika skema data masih harus ditentukan. Yang mengatakan, MongoDB tidak mengungguli kasus penggunaan khusus yang menjadi spesialisasi database lain.
  • Sementara Elasticsearch menawarkan skema cairan yang mirip dengan MongoDB, ini dioptimalkan untuk beberapa indeks dan kueri teks dengan mengorbankan kinerja penulisan dan ukuran penyimpanan. Jadi, kita harus mempertimbangkan untuk bermigrasi ke Elasticsearch ketika kita mendapati diri kita mempertahankan banyak indeks di MongoDB.
  • Pergeseran merah memerlukan skema data yang telah ditentukan sebelumnya, dan tidak memiliki kemampuan beradaptasi yang disediakan MongoDB. Sebagai gantinya, ia mengungguli database lain untuk kueri yang hanya melibatkan kolom tunggal (atau beberapa). Ketika anggaran memungkinkan, Amazon Redshift adalah senjata rahasia yang hebat ketika orang lain tidak dapat menangani kuantitas data.