sql >> Database >  >> NoSQL >> Redis

hibernate tweede niveau cache met Redis - zal het de prestaties verbeteren?

Drastische verschillen die u kunt verwachten als u cachet wat goed is om in de cache te worden opgeslagen en vermijdt het cachen van gegevens die helemaal niet in de cache zouden moeten worden opgeslagen. Zoals schoonheid in het oog van de toeschouwer is, is hetzelfde met de uitvoering. Hier zijn verschillende aspecten waarmee u rekening moet houden bij het gebruik van de hibernate AS-cacheprovider op het tweede niveau:

Geen aangepaste serialisatie - geheugenintensief
Als je caching op het tweede niveau gebruikt, zou je geen raamwerken voor snelle serialisatie, zoals Kryo, kunnen gebruiken en moet je je houden aan java serializable, wat waardeloos is.

Bovendien heb je voor elk type entiteit een aparte regio en binnen elke regio heb je een vermelding voor elke sleutel van elke entiteit. In termen van geheugenefficiëntie is dit inefficiënt.

Ontbreekt de mogelijkheid om rijke objecten op te slaan en te distribueren
De meeste moderne caches bieden ook computerrasterfunctionaliteit, aangezien uw objecten in veel kleine stukjes zijn gefragmenteerd, uw vermogen om gedistribueerde taken uit te voeren met gegarandeerde co-locatie van gegevens verminderen. Dat hangt een beetje af van de Grid provider, maar voor velen zou dat een beperking zijn.

Sub optimale prestatie
Afhankelijk van hoeveel prestaties je nodig hebt en wat voor soort applicatie je gebruikt, kan het gebruik van een slaapstand op het tweede niveau een goede of een slechte keuze zijn. Goed in termen dat het plug-and-play is...." een beetje..." slecht omdat je nooit de prestatie kunt uitknijpen die je zou hebben gewonnen. Het ontwerpen van uitgebreide modellen betekent ook meer werk vooraf en meer OOP.

Beperkte querymogelijkheden OP de cache zelf
Dat hangt af van de cacheprovider, maar sommige providers zijn echt niet goed in het doen van JOIN's met een andere Where-clausule dan de ID. Als je probeert een geheugenindex op te bouwen voor bijvoorbeeld een zoekopdracht op Hazelcast, zul je zien wat ik bedoel.



  1. Grote gegevensworkflows met panda's

  2. Een verzameling inkorten

  3. Een resultatenset willekeurig bestellen in mongo

  4. Sleutelwaardedatabase met Java-client