Poate fi implementată o colecție de streaming în Java?

Aveam nevoie de implementarea unui server de utilități care să urmărească câteva variabile personalizate care vor fi trimise de la orice alt server. Pentru a urmări variabilele, trebuie colectată o valoare cheie, fie JDK definită, fie personalizată.

Iată câteva considerații -

  • Păstrarea permanentă a tuturor variabilelor din memoria serverului este intensă.
  • Acest server trebuie să fie un server foarte ușor și nu vreau operații de baze de date grele.

Există o colecție predefinită de streaming care poate serializa datele după o memorie de prag și le poate recupera în funcție de necesități?

Sper că sunt clar în definirea declarației de problemă.

Vă sugerăm să aveți o altă abordare mai bună.

4
Depozitați variabilele într-un fișier mapat în memorie?
adăugat autor Jonathon Faust, sursa
Ai putea folosi ceva de genul xml sau JSON, pentru care sunt folosite.
adăugat autor Hassan, sursa

3 răspunsuri

acest lucru arată foarte promițător, dar este în stadiu de dezvoltare ...

JDBM3

Editați versiunea curentă a colecțiilor cu fișiere susținute: MapDB .

2
adăugat
Da. Seamănă exact cu ceea ce am vorbit. Va trece prin asta. Mulțumiri.
adăugat autor user1401472, sursa

Bază de date

What you've described sounds exactly like you should use a Bază de date (i.e. indexed key/value store, too big for memory but want performance benefits of in-memory caching where possible).

I'd recommend a lightweight embedded Bază de date such as H2 - it's small, fast and should suit your purposes very well.

1
adăugat
Utilizarea bazei de date ar economisi multe eforturi din partea aplicației. Urmărirea parametrilor este deja un apel suplimentar și nu-și poate permite să cheltuiască mai mult de câteva mil secunde în acest sens.
adăugat autor user1401472, sursa
Știu că OP a spus asta - cred că ar trebui să-l reconsidere. Utilizați instrumentul potrivit pentru lucrare :-)
adăugat autor mikera, sursa
Sunt de acord ca H2 este o alegere buna, dar cred ca autorul nu vrea baza de date
adăugat autor BlacKow, sursa
dacă mergeți cu baza de date trebuie să folosiți ORM sau să veniți cu o schemă SQL personalizată. Utilizarea ORM va necesita mai multă dependență, așa că cândva doriți să evitați baza de date pentru a obține un cod mai lent .. este întotdeauna un compromis .. ** suspin **
adăugat autor BlacKow, sursa

Te-ai gândit să folosești un magazin de valori pentru coada de pe coadă? Redis , de exemplu?

Dacă doriți să aveți doar java, aveți opțiunea de a utiliza un lib ca ehcache , acesta ar avea funcționalitățile de care aveți nevoie.

0
adăugat