MemoryMappedFile și b-tree pentru aplicația cache

Aceasta este doar o idee, nu am încă cod, am nevoie de sfaturi de proiectare. Aș pune în aplicare o memorie cache (nedistribuită în prima instanță) utilizând MemoryMappedFile în c #. Cred că ar fi bine să avem un b-tree ca pe o structură indisolubilă, dar acest lucru este discutabil, de asemenea. Deci, întrebarea este:

  • B-tree-ul este o strategie bună de folosit pentru a căuta articole rapid atunci când suportul de repornire este un fișier cu memorie mapată?
  • Ce tip și truc avem cu fișierele de memorie mapate? Cât de mult poate fi viziunea mare, care sunt dezavantajele când este prea mică sau prea mare?
  • Considerente multithread: cum ne ocupăm de fișierul de memorie mapat și de concurrency? Cache-ul ar trebui să fie puternic atins de clienți, ce strategie este mai bine să aibă ceva performant?

Ca eroare de server intern @ a întrebat, am integra întrebarea cu acest lucru: Cheia ar fi un șir, aproximativ 64 de caractere max len. Datele ar fi un octet [] de aproximativ 1024 de octeți, dar se va lua în considerare o medie de 128 octeți sau mai bine: ceea ce vreau să cache sunt entități OR/M, să luăm în considerare cât timp este o entitate serializată în octeți cu ceva asemănător unui serializator BSOn .

1
cheie va fi un șir, ia în considerare ceva despre 64 de caractere. Datele ar putea fi o serie de octeți: o entitate serializată, ceva de la 4 la 1k octet, probabil.
adăugat autor Felice Pollano, sursa
@ca ai dreptate, stiu mongodb, dar vreau ceva imbogatit in proiectul meu
adăugat autor Felice Pollano, sursa
de ce rotiți-vă propriul? couchdb, memcached, mongodb; aparent mongodb este rapid
adăugat autor sehe, sursa
Care sunt tipurile de date pe care le cacheți? Ce tip este cheia? Cât de multe date vorbim?
adăugat autor 500 - Internal Server Error, sursa

1 răspunsuri

  • Arborele B este bun (cu fișiere mapate în memorie), dar dacă fișierul nu este întotdeauna păstrat întotdeauna în memoria rezidentă, atunci un arbore B + este mult mai bun. Consultați și .
  • Trucul cu fișiere mapate pe memorie este de a utiliza o arhitectură pe 64 de biți, astfel încât să puteți mapa întregul fișier în memorie, altfel ar trebui să cartografiați numai părțile și codul s ar putea fi mai rapidă decât mmap s.
  • Încercați CAS (compare-and-swap) în memoria partajată. Consultați și .
1
adăugat
Mulțumesc mult, și referințe bune.
adăugat autor Felice Pollano, sursa
Poate că există ceva C# pentru dvs. la nosql-database.org . Sau un proiect C poate servi drept referință.
adăugat autor ArtemGr, sursa