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

Membangun Newsfeed seperti Facebook yang dipersonalisasi:SQL, MongoDB?

Kode Anda tidak banyak memberi tahu saya; Saya pikir akan sangat membantu jika Anda dapat menata struktur data Anda dalam JSON/SQL biasa.

Bagaimanapun, saya akan membuat cerita bersambung setiap aliran pengguna ke MongoDB. Saya tidak akan menyimpan HTML dalam database karena berbagai alasan (setidaknya tidak pada tingkat perangkat lunak itu); sebagai gantinya, Anda harus menyimpan data yang relevan dalam koleksi (mungkin polimorfik). Mengambil umpan berita sangat mudah, indeksasi sangat mudah, dll. Struktur tampilan pada dasarnya tidak akan berubah. Jika nanti Anda ingin mengubah HTML, caranya juga mudah.

Kelemahannya adalah ini akan menduplikasi banyak data. Jika orang dapat memiliki banyak pengikut, ini mungkin menjadi masalah. Menggunakan array id pengguna alih-alih satu id pengguna mungkin membantu (jika informasinya sama untuk semua pengikut), tetapi juga terbatas.

Untuk masalah asosiasi yang sangat besar, hanya ada caching. Cara saya memahaminya, keajaiban di facebook dan twitter adalah mereka tidak terlalu sering menekan db dan menyimpan banyak data di RAM. Jika Anda mengaitkan miliaran item, melakukannya merupakan tantangan bahkan di RAM.

Pembaruan harus ditulis terus menerus daripada setiap jam. Misalkan Anda memiliki banyak lalu lintas, dan pembaruan per jam membutuhkan waktu 30 menit. Sekarang, kasus terburuk adalah 90 menit. menunda. Jika Anda memproses perubahan tepat waktu, Anda dapat memotongnya menjadi mungkin 5 menit.

Anda harus memasukkan asumsi di beberapa titik, menggunakan caching dan beberapa heuristik. Beberapa contoh:

  • Semakin baru tweet, semakin banyak lalu lintas yang akan dilihatnya. Ini memiliki peluang lebih tinggi untuk di-retweet, dan terlihat lebih sering. Simpan di RAM.
  • Halaman ikhtisar timeline facebook Anda tahun 1991 mungkin tidak akan berubah setiap hari, jadi ini adalah kandidat untuk cache keluaran jangka panjang.
  • Aktivitas facebook saat ini kemungkinan akan mengalami banyak tulisan. Caching keluaran tidak akan banyak membantu di sini. Sekali lagi, objek harus disimpan dalam RAM.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tentukan Beberapa Kriteria untuk Elemen Array

  2. Tanggal Luwak. Waktu sekarang tidak akurat

  3. Pencarian array multi-sarang Mongodb

  4. injeksi mongoDB

  5. MongoDB:cocokkan dokumen yang tidak kosong dalam array