Keshni saqlash uchun MemoryMappedFile va b-daraxti

Bu faqat bitta g'oya, menda hali biror kod mavjud emas, menga dizayn bo'yicha maslahat kerak. C# ichida MemoryMappedFile yordamida keshni (birinchi marta taqsimlanmagan) amalga oshiraman. O'ylaymanki, b-daraxtni chinakam bir tuzilishga ega bo'lish yaxshi bo'lar edi, lekin bu ham munozarali. Shunday qilib, savol:

  • B-daraxti undashdan tashqari qo'llab-quvvatlash xotira bilan bog'langan fayllar bo'lsa, qidiruvni tezroq ishlatish uchun yaxshi strategiya bormi?
  • Xotira bilan bog'langan fayllar bilan qanday tip va hiyla ishlatamiz?
  • Juda kichik yoki juda katta bo'lsa, bu ko'rinish qanchalik katta bo'lishi mumkin?

  • Multithread ko'rib chiqish: xotira bilan bog'langan fayl va o'zaro moslik bilan qanday ishlashimiz kerak?

@Internal Server Xato so'raganidek, men bu savolni birlashtiraman: Kalit shunchaki mag'lubiyatga ega bo'lib, taxminan 64 chars max len. Ma'lumotlarni bir bayt [] taxminan 1024 baytga teng bo'lishi mumkin, lekin o'rtacha 128 bayt yoki o'rtacha qiymatni hisoblang: nimani keshlashni xohlaysiz OR/M obyektlari, keling, bytes ichida ketma-ket bayrok bo'lgan ob'ektni BSOn-ning ketma-ketligi .

1
kalit so'z bo'lib, 64 ta belgi haqida o'ylashadi. Ma'lumot baytlarning qatori bo'lishi mumkin: seriyali ob'ekt, ehtimol 4 dan 1k baytgacha bo'lgan narsa.
qo'shib qo'ydi muallif Felice Pollano, manba
@biz haqing, men mongodbni bilaman, lekin loyihamga kiradigan narsalarni xohlayman
qo'shib qo'ydi muallif Felice Pollano, manba
Nima uchun o'zingizni aylantirasiz? couchdb, memcached, mongodb; ko'rinishda mongodb tez
qo'shib qo'ydi muallif sehe, manba
Keshlash qilingan ma'lumotlar turi (lar) nima? Kalit qanday turdagi? Qancha ma'lumotlar haqida gapiramiz?
qo'shib qo'ydi muallif 500 - Internal Server Error, manba

1 javoblar

  • B-daraxti yaxshi (xotira bilan bog'langan fayllar bilan) yaxshi, lekin agar fayl doimo butunlay yashirin xotirada saqlanmasa, sahifa bargli B + daraxti juda yaxshi. Shuningdek, qarang.
  • Xotira kartasiga ega fayllar 64 gigabaytli arxitekturani ishlatishdir, shunda butun faylni xotiraga ajratishingiz mumkin, aks holda siz faqatgina qismlari va keshlangan o'qish mmap dan ko'ra tezroq bo'lishi mumkin.
  • Umumiy xotiradan CAS (taqqoslash va almashtirish) ni harakat qilib ko'ring. Shuningdek, qarang.
1
qo'shib qo'ydi
Juda ko'p rahmat, yaxshi murojaatlar ham.
qo'shib qo'ydi muallif Felice Pollano, manba
Ehtimol, siz uchun nosql-database.org saytida sizning C# -pish mavjud. Yoki Ba'zi C loyihasi mos yozuvlar bo'lishi mumkin.
qo'shib qo'ydi muallif ArtemGr, manba