Inhoudsopgave:
- Cachegeheugengegevens opslaan in het geheugen
- Gegevens repliceren naar slaves
- Gegevensmodellering in sleutelwaardewinkels
- Werken met gegevens
- Redis evalueren
Video: Windows 8 sneltoetsen 2024
Key-value-winkels in NoSQL alles te maken met snelheid. U kunt verschillende technieken gebruiken om die snelheid te maximaliseren, van cachegeheugengegevens tot meerdere kopieën van gegevens of het gebruik van de meest geschikte opslagstructuren.
Cachegeheugengegevens opslaan in het geheugen
Omdat gegevens eenvoudig kunnen worden geopend wanneer ze worden opgeslagen in RAM (Random Access Memory), kan het kiezen van een sleutelwaardeopslag die gegevens in RAM opslaat uw toegang tot gegevens aanzienlijk versnellen, zij het tegen de prijs van hogere serverkosten.
Vaak is deze afweging de moeite waard. U kunt eenvoudig berekenen welk percentage van uw opgeslagen gegevens regelmatig wordt opgevraagd. Als u weet dat vijf procent over het algemeen om de paar minuten wordt gevraagd, neem dan vijf procent van uw datagrootte en voeg dat aantal toe als extra RAM-ruimte op uw databaseservers.
Houd er rekening mee dat het besturingssysteem, andere toepassingen en de databaseserver ook geheugenvereisten hebben.
Gegevens repliceren naar slaves
In sleutelwaardewinkels wordt een bepaalde sleutel opgeslagen op een van de servers in het cluster. Dit proces wordt sleutelverdeling genoemd. Dit betekent dat, als deze sleutel constant wordt aangevraagd, dit knooppunt het grootste deel van de verzoeken ontvangt. Dit knooppunt zal daarom langzamer zijn dan uw gemiddelde verzoeksnelheid en mogelijk van invloed zijn op de kwaliteit van de dienstverlening aan uw gebruikers.
Om deze situatie te voorkomen, ondersteunen sommige winkels met sleutelwaardes het toevoegen van read-only replica's, ook wel slaven genoemd. Redis, Riak en Aerospike zijn goede voorbeelden. Met replicatie kan de sleutel meerdere keren worden opgeslagen op verschillende servers, waardoor de reactiesnelheid toeneemt, maar ten koste van meer hardware.
Bepaalde sleutelwaardevoorraden garanderen dat de replica's van de sleutel altijd dezelfde waarde hebben als de master. Deze garantie wordt volledig consistent genoemd. Als er een update plaatsvindt op de masterserver die de sleutel vasthoudt, zijn alle replica's gegarandeerd up-to-date.
Niet alle winkels met sleutelwaardes garanderen deze status (bijvoorbeeld Riak), dus als het belangrijk is om up to date te zijn met de milliseconde, kies dan een database waarvan de replica's volledig consistent zijn (zoals Aerospike).
Gegevensmodellering in sleutelwaardewinkels
Veel sleutelwaardewinkels ondersteunen alleen basisstructuren voor hun waardetypes, terwijl de toepassingsprogrammeur de taak heeft om de gegevens te interpreteren. Eenvoudige ondersteuning voor gegevenstypen bevat meestal strings, gehele getallen, JSON en binaire waarden.
Voor veel gebruikssituaties werkt dit goed, maar soms is een iets gedetailleerdere toegang tot gegevens nuttig.Redis ondersteunt bijvoorbeeld de volgende soorten gegevenswaarden:
-
String
-
List
-
Set
-
gesorteerde set
-
Hash-kaarten
-
Bitarrays
-
Hyperlog-logboeken
gesorteerde sets kunnen worden opgevraagd voor het afstemmen van waardenbereiken - ongeveer zoals het opvragen van een index van waarden gesorteerd op datum, wat erg handig is voor het zoeken naar een subset van getypte gegevens.
Werken met gegevens
Redis omvat bewerkingen om sleutelwaarden rechtstreeks te verhogen of te verlagen, zonder dat u een set met stappen voor het wijzigen van de lees-wijzigingsupdate (RMU) hoeft uit te voeren. U kunt dit doen binnen een enkele transactie om ervoor te zorgen dat geen enkele andere toepassing de waarde tijdens een update verandert. Deze datatypespecifieke operaties omvatten het toevoegen en verwijderen van items aan lijsten en sets.
U kunt zelfs autocomplete-functionaliteit bieden op de gebruikersinterface van een toepassing met behulp van de opdracht Redis ZRANGEBYLEX. Met deze opdracht wordt een set sleutels opgehaald die gedeeltelijk overeenkomt met een tekenreeks. Dus, als u "NoSQL voor" zou typen in de zoekbalk van een toepassing die is gebouwd op Redis, zou u de suggestie "NoSQL voor Dummies" zien. "
Redis evalueren
Redis is er trots op een zeer lichtgewicht maar razendsnelle winkel met sleutelwaarden te zijn. Het is oorspronkelijk ontworpen als een in-memory key-value store, maar beschikt nu over een schijfgebaseerde gegevensopslag.
U kunt Redis gebruiken om gegevens te beveiligen door de AOF-modus (alleen toevoegen) in te schakelen en Redis te instrueren gegevens op elke schijf te dwingen (dit wordt geforceerd fsync flush ) genoemd. AOF vertraagt natuurlijk schrijvers, maar het biedt een hoger niveau van duurzaamheid voor gegevens. Houd er echter rekening mee dat het nog steeds mogelijk is om maximaal één seconde aan opdrachten te verliezen.
Ook heeft Redis recent ondersteuning voor clustering toegevoegd. In feite bevindt de ondersteuning van Redis zich ten tijde van dit schrijven in de bètatestfase. Gelukkig gebruikt Redis een cluster-model met gedeelde nullen, met masters voor bepaalde sleutels en slaven die nooit rechtstreeks door een cliënt zijn geschreven; alleen de meester doet dat. Het aanbieden van shared-nothing clustering zou het Redis gemakkelijker moeten maken om betrouwbare clustering te implementeren dan voor databases die schrijven naar alle replica's mogelijk maken.
Als u een zeer snelle cachinglaag in het geheugen voor een andere database wilt hebben - MongoDB of Riak worden gewoonlijk gebruikt met Redis - evalueer dan Redis als een optie. Naarmate de ondersteuning voor clustering en dataduurzaamheid evolueert, kan Redis andere back-enddatabases inhalen.