Sudah lama berlalu ketika database "" adalah Sistem Manajemen Database Relasional tunggal yang biasanya diinstal pada server paling kuat di pusat data. Basis data tersebut melayani semua jenis permintaan - OLTP, OLAP, bisnis apa pun yang diperlukan. Saat ini database berjalan pada perangkat keras komoditas, mereka juga lebih canggih dalam hal ketersediaan tinggi dan khusus untuk menangani jenis lalu lintas tertentu. Spesialisasi memungkinkan mereka mencapai kinerja yang jauh lebih baik - semuanya dioptimalkan untuk menangani jenis data tertentu:pengoptimal, mesin penyimpanan, bahkan bahasa tidak harus SQL, seperti dulu. Ini bisa berbasis SQL dengan beberapa ekstensi yang memungkinkan manipulasi data lebih efisien, atau bisa juga sesuatu yang sama sekali baru, dibuat dari awal.
Saat ini kami memiliki database analitis berbentuk kolom seperti ClickHouse atau MariaDB AX, kami memiliki platform data besar seperti Hadoop, solusi NoSQL seperti MongoDB atau Cassandra, penyimpanan data bernilai kunci seperti Redis. Kami juga memiliki database Time-Series seperti Prometheus atau TimeScaleDB. Inilah yang akan kita fokuskan dalam posting blog ini. Basis data Time-Series - apa itu dan mengapa Anda ingin menggunakan penyimpanan data lain di lingkungan Anda.
Untuk Apa Basis Data Deret Waktu?
Seperti namanya, database deret waktu dirancang untuk menyimpan data yang berubah seiring waktu. Ini bisa berupa data apa pun yang dikumpulkan dari waktu ke waktu. Ini mungkin metrik yang dikumpulkan dari beberapa sistem - semua sistem yang sedang tren adalah contoh data deret waktu.
Setiap kali Anda melihat dasbor di ClusterControl, Anda sebenarnya melihat representasi visual dari data deret waktu yang disimpan di Prometheus, database deret waktu.
Data deret waktu tidak terbatas pada metrik basis data. Semuanya bisa menjadi metrik. Bagaimana arus orang yang memasuki mal berubah dari waktu ke waktu? Bagaimana lalu lintas berubah di sebuah kota? Bagaimana perubahan penggunaan angkutan umum di siang hari? Aliran air di sungai atau sungai. Jumlah energi yang dihasilkan oleh tanaman air. Semua ini dan semua hal lain yang dapat diukur dalam waktu adalah contoh data deret waktu. Data tersebut dapat Anda kueri, plot, analisis untuk menemukan korelasi antara metrik yang berbeda.
Bagaimana Data Terstruktur dalam Basis Data Deret Waktu?
Seperti yang dapat Anda bayangkan, bagian terpenting dari data dalam database deret waktu adalah waktu. Ada dua cara utama untuk menyimpan data. Satu, sesuatu yang menyerupai penyimpanan nilai kunci mungkin terlihat seperti ini:
Stempel waktu | Metrik 1 |
---|---|
28-03-2019 00:00:01 | 2356 |
28-03-2019 00:00:02 | 6874 |
28-03-2019 00:00:03 | 3245 |
28-03-2019 00:00:04 | 2340 |
Singkatnya, untuk setiap stempel waktu, kami memiliki beberapa nilai untuk metrik kami.
Contoh lain akan melibatkan lebih banyak metrik. Alih-alih menyimpan setiap metrik dalam tabel atau kumpulan terpisah, Anda dapat menyimpan beberapa metrik di sampingnya.
Stempel waktu | Metrik 1 | Metrik 2 | Metrik 3 | Metrik 4 | Metrik 5 |
---|---|---|---|---|---|
28-03-2019 00:00:01 | 765 | 873 | 124 | 98 | 0 |
28-03-2019 00:00:02 | 5876 | 765 | 872 | 7864 | 634 |
28-03-2019 00:00:03 | 234 | 7679 | 98 | 65 | 34 |
28-03-2019 00:00:04 | 345 | 3 | 598 | 0 | 7345 |
Struktur data ini membantu melakukan kueri data secara lebih efisien saat metrik terkait. Daripada membaca beberapa tabel dan menggabungkannya untuk mengumpulkan semua metrik, cukup membaca satu tabel dan semua data siap untuk diproses dan disajikan.
Anda mungkin bertanya-tanya - apa yang benar-benar baru di sini? Bagaimana ini berbeda dari tabel biasa di MySQL atau database relasional lainnya? Nah, desain tabel cukup mirip tetapi ada perbedaan signifikan dalam beban kerja yang, ketika penyimpanan data dirancang untuk mengeksploitasinya, dapat meningkatkan kinerja secara signifikan.
Data deret waktu biasanya hanya ditambahkan - sangat kecil kemungkinannya Anda akan memperbarui data lama. Anda biasanya tidak menghapus baris tertentu, di sisi lain Anda mungkin menginginkan semacam agregasi data dari waktu ke waktu. Ini, ketika diperhitungkan ketika merancang internal database, akan membuat perbedaan yang signifikan atas database relasional "standar" (dan bukan relasional juga) yang dimaksudkan untuk melayani jenis lalu lintas Pemrosesan Transaksi Online:yang paling penting adalah kemampuan untuk menyimpan secara konsisten (jngest) sejumlah besar data yang masuk seiring waktu.
Dimungkinkan untuk menggunakan RDBMS untuk menyimpan data deret waktu, tetapi RDBMS tidak dioptimalkan untuk itu. Data dan indeks yang dihasilkan di belakangnya bisa menjadi sangat besar, dan lambat untuk ditanyakan. Mesin penyimpanan yang digunakan dalam RDBMS dirancang untuk menyimpan berbagai tipe data yang berbeda. Mereka biasanya dioptimalkan untuk beban kerja Pemrosesan Transaksi Online yang mencakup modifikasi dan penghapusan data yang sering. Basis data relasional juga cenderung tidak memiliki fungsi dan fitur khusus yang terkait dengan pemrosesan data deret waktu. Kami menyebutkan bahwa Anda mungkin ingin menggabungkan data yang lebih lama dari periode waktu tertentu. Anda mungkin juga ingin dapat dengan mudah menjalankan beberapa fungsi statistik pada data deret waktu Anda untuk memuluskannya, menentukan dan membandingkan tren, menginterpolasi data, dan banyak lagi. Misalnya, di sini Anda dapat menemukan beberapa fungsi yang disediakan Prometheus untuk pengguna.
Contoh Basis Data Deret Waktu
Ada beberapa database deret waktu yang ada di pasaran sehingga tidak mungkin untuk mencakup semuanya. Kami masih ingin memberikan beberapa contoh database deret waktu yang mungkin Anda ketahui atau mungkin Anda gunakan (disadari atau tidak).
InfluxDB
InfluxDB telah dibuat oleh InfluxData. Ini adalah database deret waktu sumber terbuka yang ditulis dalam Go. Datastore menyediakan bahasa seperti SQL untuk mengkueri data, yang memudahkan pengembang untuk berintegrasi ke dalam aplikasi mereka. InfluxDB juga berfungsi sebagai bagian dari penawaran komersial, yang mencakup seluruh tumpukan yang dirancang untuk menyediakan lingkungan berfitur lengkap dan sangat tersedia untuk memproses data deret waktu.
Prometheus
Prometheus adalah proyek open source lain yang juga ditulis dalam Go. Ini biasanya digunakan sebagai backend untuk berbagai alat dan proyek sumber terbuka, misalnya Pemantauan dan Manajemen Percona. Prometheus juga menjadi database rangkaian waktu pilihan untuk ClusterControl.
Prometheus dapat digunakan dari ClusterControl untuk digunakan untuk menyimpan data deret waktu yang dikumpulkan pada server database yang dipantau dan dikelola oleh ClusterControl:
Digunakan secara luas di dunia open source, Prometheus cukup mudah untuk diintegrasikan ke dalam lingkungan Anda yang ada menggunakan banyak eksportir.
alat RRD
Ini mungkin contoh database deret waktu yang digunakan banyak orang tanpa mengetahui bahwa mereka melakukannya. RRDtool adalah proyek sumber terbuka yang sangat populer untuk menyimpan dan memvisualisasikan data deret waktu. Jika Anda pernah menggunakan Cacti, itu didasarkan pada RRDtool. Jika Anda merancang solusi Anda sendiri, kemungkinan besar Anda juga menggunakan RRDtool sebagai backend untuk menyimpan data Anda. Saat ini tidak sepopuler dulu tetapi pada tahun 2000 - 2010 ini adalah cara paling umum untuk menyimpan data deret waktu. Fakta menyenangkan - versi awal ClusterControl memanfaatkannya.
Skala Waktu
TimeScale adalah database deret waktu yang dikembangkan di atas PostgreSQL. Ini adalah ekstensi pada PostgreSQL, yang bergantung pada penyimpanan data yang mendasarinya untuk menyediakan akses ke data, yang berarti ia menerima semua SQL yang mungkin ingin Anda gunakan. Sebagai ekstensi, ia menggunakan semua fitur dan ekstensi PostgreSQL lainnya. Anda dapat mencampur deret waktu dan jenis data lainnya, misalnya untuk menggabungkan deret waktu dan metadata, memperkaya output. Anda juga dapat melakukan pemfilteran lebih lanjut menggunakan JOIN dan tabel non-deret waktu. Memanfaatkan dukungan GIS di PostgreSQL TimeScale dapat dengan mudah digunakan dalam melacak lokasi geografis dari waktu ke waktu. Itu juga dapat memanfaatkan semua kemungkinan penskalaan yang ditawarkan PostgreSQL, termasuk replikasi.
Aliran waktu
Amazon Web Services juga memiliki penawaran untuk database deret waktu. Timestream telah diumumkan baru-baru ini, pada bulan November 2018. Ini menambahkan penyimpanan data lain ke portofolio AWS, kali ini membantu pengguna untuk menangani data deret waktu yang berasal dari sumber seperti peralatan Internet of Things atau layanan yang dipantau. Ini juga dapat digunakan untuk menyimpan metrik yang berasal dari log yang dibuat oleh beberapa layanan, memungkinkan pengguna untuk menjalankan kueri analitik pada mereka, membantu memahami pola dan kondisi di mana layanan bekerja.
Timestream, seperti kebanyakan layanan AWS, menyediakan cara penskalaan yang mudah jika kebutuhan untuk menyimpan dan menganalisis data bertambah seiring waktu.
Seperti yang Anda lihat, ada banyak pilihan di pasar dan ini tidak mengejutkan. Analisis data deret waktu semakin menarik akhir-akhir ini, menjadi semakin penting untuk operasi bisnis. Untungnya, dengan banyaknya penawaran, baik open source maupun komersial, kemungkinan besar Anda dapat menemukan alat yang sesuai dengan kebutuhan Anda.