MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Kompresi Awalan Indeks di MongoDB 3.0 WiredTiger

MongoDB 3.0 dengan WiredTiger memperkenalkan fitur baru yang disebut 'Kompresi Awalan Indeks' yang sangat mengurangi memori yang dikonsumsi oleh indeks. Lebih sedikit memori yang digunakan oleh indeks berarti lebih banyak memori untuk penyimpanan dokumen atau indeks lain yang menyiratkan kinerja yang lebih baik.

Untuk kinerja terbaik di MongoDB, sebaiknya simpan indeks Anda di memori. Kehilangan halaman pada indeks adalah pukulan ganda – kesalahan satu halaman untuk membawa halaman indeks yang sebenarnya ke dalam memori dan kesalahan halaman lainnya nanti untuk membawa halaman data ke dalam memori.

Teknologi

Kompresi awalan indeks tidak menggunakan kompresi blok (seperti zlib, snappy dll) tetapi merupakan teknik yang berbeda untuk menyimpan indeks dalam memori. Ini mengurangi penggunaan memori dengan menyimpan awalan identik hanya sekali. “Kompresi awalan kunci” adalah cara khusus domain untuk mengompresi data dan mengacu pada format penyimpanan kunci di WiredTiger. Untuk detail selengkapnya, Anda dapat merujuk ke dokumentasi format file WiredTiger.

Uji Kinerja

Untuk pengujian kinerja kami, kami menggunakan struktur dokumen seperti yang dijelaskan di bawah ini:

{
   employeeID: <long>,
   firstName: <string>,
   lastName: <string>,
   income: <long>,
   supervisor: {ID: <long>, 'firstName': <string>, 'lastName': <string>;}
}

Kami menambahkan indeks berikut pada pengaturan ini:

Index 1: db.ensureIndex({'employeeID':1});
Index 2: db.ensureIndex({'lastName':1, 'firstName':1});
Index 3: db.ensureIndex({'income':1});
Index 4: db.ensureIndex({'supervisor.lastName':1, 'supervisor.firstName':1})

Hasil

Dalam pengujian kami, kami memasukkan data yang identik (sekitar 10 juta catatan) ke dalam dua kelompok – satu set replika 2.6.x dan yang lainnya adalah MongoDB 3.0 dengan WiredTiger. Kemudian kami menambahkan indeks di atas pada kedua konfigurasi cluster. Hasilnya cukup mengejutkan – dalam beberapa kasus ada perbedaan urutan besarnya dalam ukuran indeks!

 Nama indeks Ukuran indeks MMAP (MB) Ukuran Indeks WT (MB)  % Pengurangan ukuran
{employeeID:1} 230,7 94 59%
{lastName:1, firstName:1} 1530 36 97%
{penghasilan:1} 230 94 59%
{‘supervisor.lastName’:1, ‘supervisor.firstName’:1} 1530 35 97%

Semua memori yang disimpan pada indeks adalah memori yang dapat digunakan untuk menyimpan data, indeks lain, dll. Jarak tempuh Anda mungkin berbeda – pastikan untuk menguji struktur indeks khusus Anda. Pengurangan ukuran indeks adalah peningkatan yang kurang dihargai di Mongo 3.0 dan dapat membuat perbedaan besar pada performa Anda!


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB tidak membuat database di shell

  2. Bagaimana cara menggunakan titik dalam nama bidang?

  3. Dukungan untuk beberapa tipe pengguna dengan Passport-local luwak node.js

  4. Bagaimana cara menambahkan json dalam array bersarang dari dokumen mongodb menggunakan Spring?

  5. MongoDB $cosh