Rumah  >  Soal Jawab  >  teks badan

mongodb - 模型里包含需要不断增加的数据应该怎么设计?

需要设计的数据模型是一个投票帖子,用户投票后需要记录下来,以免重复投票。 现在的设计是把投过票的用户id保存为在投票贴里的一个数组。

mongodb在文档中嵌入不断增加的数据会对性能有损害,怎么设计能更好一些?

黄舟黄舟2708 hari yang lalu643

membalas semua(1)saya akan balas

  • PHP中文网

    PHP中文网2017-04-22 08:58:19

    Sebelum mereka bentuk, sila sahkan saiz data anda:

    1. Jika data anda sangat kecil dan hanya beberapa orang mengundi (kurang daripada 1,000 orang), anda tidak perlu risau Walaupun ia akan berkembang, anda boleh meletakkannya dalam tatasusunan (Perhatikan saiznya daripada dokumen dalam Limitasi mongodb);
    2. Jika bilangan pengundi melebihi 1K, dan apabila ia terus berkembang, mencapai skala W (sepuluh ribu), bebas awal dan buat Koleksi lain untuk menyimpan rekod undian jawatan itu;
    3. Jika bilangan pengundi mencecah W, dan kekerapan mengundi agak kerap (atau terdapat manipulasi undi yang berniat jahat), mungkin anda harus mempertimbangkan untuk menggunakan cache untuk menyimpan ID semua pengundi ke dalam cache terpusat, melalui Cache ( redis asli menyokong Set struktur) untuk mengesahkan sama ada mengundi berulang kali, dan kemudian menyegerakkan ke mongodb secara kerap di latar belakang;
    4. Jika bilangan pengundi mencecah berjuta-juta dan kekerapan mengundi juga objektif, anda mesti menggunakan cache, dan ia juga merupakan kluster cache yang diedarkan, dan mengira ID semua pengundi (anda boleh melakukan operasi mod ) ialah dipetakan ke pelayan cache tertentu, dan kemudian kaedah pemprosesan adalah serupa dengan 3;
    5. Proses yang serupa dengan 4: majukan ID pengguna melalui apache atau nginx pada hujung hadapan pelayan, dan pindahkannya ke pelayan aplikasi lain untuk pemprosesan Pelayan aplikasi juga melakukan pengembangan mendatar yang diedarkan. PS: Perkara yang anda huraikan hanyalah aspek yang sangat kecil dalam senario perniagaan Tidak kira sama ada anda menggunakan NoSQL atau SQL, apabila skala data meningkat, satu mesin pasti tidak dapat menahannya, dan pengembangan yang diedarkan tidak dapat dielakkan. perlu diingatkan bahawa kerumitan juga meningkat dengan masa yang semakin meningkat, jadi anda perlu memilih pelan secara munasabah berdasarkan saiz data dan keadaan teknikal anda.
    6. balas
      0
  • Batalbalas