PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara menyimpan jutaan catatan statistik secara efisien?

Jumlah ini tidak setinggi yang Anda kira. Dalam pekerjaan saat ini, kami menyimpan data metrik untuk situs web dan jumlah total baris yang kami miliki jauh lebih tinggi. Dan di pekerjaan sebelumnya saya bekerja dengan database pg yang mengumpulkan metrik dari jaringan seluler dan mengumpulkan ~2 miliar catatan per hari. Jadi jangan takut dengan miliaran jumlah catatan.

Anda pasti perlu mempartisi data - kemungkinan besar pada siang hari. Dengan jumlah data ini Anda dapat menemukan indeks sangat tidak berguna. Tergantung pada pesawat yang akan Anda lihat di EXPLAIN keluaran perintah. Misalnya, aplikasi telco tidak menggunakan indeks sama sekali karena hanya akan memperlambat seluruh mesin.

Pertanyaan lain adalah seberapa cepat tanggapan untuk pertanyaan yang Anda perlukan. Dan langkah mana dalam perincian (jumlah dari jam/hari/minggu dll) untuk kueri yang Anda izinkan untuk pengguna. Anda bahkan mungkin perlu membuat beberapa agregasi untuk perincian seperti minggu atau bulan atau kuartal.

Tambahan:

~2 miliar catatan per hari di aplikasi telekomunikasi itu membutuhkan ~290GB per hari. Dan itu berarti penyisipan ~23000 catatan per detik menggunakan penyisipan massal dengan perintah COPY. Setiap massal adalah beberapa ribu catatan. Data mentah dipartisi berdasarkan menit. Untuk menghindari menunggu disk, db memiliki 4 ruang tabel pada 4 disk/array yang berbeda dan partisi didistribusikan di atasnya. PostreSQL mampu menangani semuanya tanpa masalah. Jadi, Anda juga harus memikirkan konfigurasi HW yang tepat.

Ide bagus juga adalah memindahkan direktori pg_xlog ke disk atau array yang terpisah. Tidak hanya sistem file yang berbeda. Itu semua harus terpisah HW. SSD yang dapat saya rekomendasikan hanya dalam array dengan pemeriksaan kesalahan yang tepat. Akhir-akhir ini kami mengalami masalah dengan database yang rusak pada satu SSD.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TypeError:tidak dapat lepas dari psycopg2.extensions.Binary to binary

  2. Ubah string kosong menjadi NULL ketika kolom memiliki batasan DATE

  3. Pola &Pengubah Template untuk Pemformatan Numerik di PostgreSQL

  4. php cara menggunakan kotak pilih untuk mencari data dalam tampilan daftar (tabel)

  5. Cara membuat fungsi yang tidak menghasilkan apa-apa