Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menyimpan 7.300.000.000 baris secara efisien

"Sekarang - bagaimana Anda akan mengatasi masalah yang dijelaskan?"

Dengan file datar sederhana.

Inilah alasannya

Anda memiliki 2.000.000 entitas. Partisi berdasarkan nomor entitas:

level1= entity/10000
level2= (entity/100)%100
level3= entity%100

Setiap file data adalah level1/level2/level3/batch_of_data

Anda kemudian dapat membaca semua file di bagian direktori tertentu untuk mengembalikan sampel untuk diproses.

Jika seseorang menginginkan database relasional, maka muat file untuk entity_id tertentu ke dalam database untuk digunakan.

Sunting Pada nomor hari.

  1. date_id /entity_id aturan keunikan tidak sesuatu yang harus ditangani. Ini (a) secara sepele dikenakan pada nama file dan (b) tidak relevan untuk kueri.

  2. date_id "rollover" tidak berarti apa-apa -- tidak ada kueri, jadi tidak perlu mengganti nama apa pun. date_id hanya harus tumbuh tanpa terikat dari tanggal zaman. Jika Anda ingin menghapus data lama, hapus file lama.

Karena tidak ada kueri yang bergantung pada date_id , tidak ada yang perlu dilakukan dengan itu. Itu bisa menjadi nama file untuk semua yang penting.

Untuk memasukkan date_id di kumpulan hasil, tuliskan dalam file dengan empat atribut lainnya yang ada di setiap baris file.

Sunting saat buka/tutup

Untuk menulis, Anda harus membiarkan file terbuka. Anda melakukan flushes (atau menutup/membuka kembali) secara berkala untuk memastikan bahwa hal-hal tersebut benar-benar masuk ke disk.

Anda memiliki dua pilihan untuk arsitektur penulis Anda.

  1. Memiliki proses "penulis" tunggal yang menggabungkan data dari berbagai sumber. Ini berguna jika kueri relatif sering. Anda membayar untuk menggabungkan data pada waktu penulisan.

  2. Buka beberapa file secara bersamaan untuk ditulis. Saat membuat kueri, gabungkan file-file ini menjadi satu hasil. Ini berguna karena kueri relatif jarang. Anda membayar untuk menggabungkan data pada waktu kueri.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bedakan antara 'tidak ada baris yang terpengaruh' dan baris yang berhasil DIPERBARUI--ke nilai yang sama (MySQL dan PHP)

  2. Kesalahan fatal:Kesalahan Tidak Tertangkap:Panggilan ke fungsi yang tidak ditentukan mysql_pconnect()

  3. Bagaimana cara membuat kelas model entitas generik yang mendukung id generik termasuk id yang dibuat secara otomatis?

  4. Kesalahan penyisipan kutipan tunggal MySQL

  5. CodeIgniter - Kelompokkan dengan urutan dengan tidak bekerja seperti yang diharapkan