• image
  • http://www.orcan.se/index.php/component/comprofiler/registersBli medlem

Oracle TimesTen – Vässa prestanda
med In-Memory Database Cache

Har du applikationer som akut måste snabbas upp? Har ni kommit till vägs ände med applikationsoptimeringar? Lösningen kan vara att slänga minne på problemet. Oracles In-Memory Database Cache snabbar upp dataåtkomst utan några andra förändringar.

Det finns produkter som verkligen behöver hastighet. Vi har nyligen läst om aktierobotar och telefonibolagen har länge fått kämpa för att lagra all data som rinner igenom deras hårdvara. Ofta räcker traditionell databasteknik inte till för att hinna med allting.

En lösning är så kallade minnesdatabaser. Det är specialskrivna lösningar som är byggda för att jobba i internminnet, eftersom minneskapslarna är väldigt mycket snabbare än de vassaste diskarna. Problemet är att de ofta inte erbjuder alla de finesser som exempelvis Oracle 11g erbjuder.

Med In-Memory Database Cache låter Oracle dig få det bästa ur båda världar. Installera, konfigurera och du har den blixtsnabba minnestekniken på toppen av den traditionella disklösningen. Både fart och funktioner, alltså.

Grundtanken med tekniken är att du ska läsa upp den viktigaste informationen i minnet så att användarna och anslutna applikationer får snabbare åtkomst till datat. Skillnaden mellan att läsa från minne, jämfört med disk, kan vara massiv. Inte minst om belastningen är hög.

 

TimesTen optimerad för att arbeta i minnet

Tittar du under ytan kommer du att finna TimesTen. Detta är en produkt som Oracle köpte in för några år sedan och fram tills nyligen enbart sålt som en separat applikation. Fast det har alltid gått att använda den som ett mellanlager. Nu har Oracle knutit den närmare den traditionella databasen och gjort det enklare att koppla ihop de båda produkterna.

Om du har kännedom om Oracle undrar du kanske vad det revolutionerande är. En minnesarea används redan och det finns flera sätt att låsa information där. Frågorna är berättigade. Men databascachen tillför faktiskt en hel del.

Det som framför allt skiljer TimesTen är att den från grunden är byggd som en minnesdatabas. Detta gör att den kan agera på ett mer direkt sätt än traditionella, filbaserade varianter. Dessutom optimeras den för sina förutsättningar. Till exempel kan den jobba direkt med minnesadresser istället för med block.

 

In-Memory Database Cache

Idén med minneshjälp är knappast ny. Lösningar för att lägga data i minnet finns i nära nog varje lager numera. Du har det bland annat på klienten, applikationsservern, filsystemet och lagringsnätet. Men den nära kopplingen till Oracles databasmotor gör TimesTen unik. Detta gäller i synnerhet tillägget In-Memory Database Cache.

Tekniskt skiljer de båda varianterna sig inte i någon egentlig mening. Den fristående produkten passar bättre till integrationslösningar, realtidssystem och som datahanterare i väldigt kritiska delar av affärsprocessen, helt enkelt som en transporthubb.

In-Memory Database Cache är mer av en generell prestandahöjare för dina befintliga applikationer. Nästan alla OLTP-applikationer kan vinna något på att använda tekniken. Det sagt är det givetvis inte säkert att alla behöver den.

För applikationer syns inte den tekniska skillnaden. In-Memory Database Cache är dessutom helt transparent. Även om du pratar med cachen kommer det att se ut precis som vanligt för programmet. Du kan använda allt från ODBC och JDBC till OCI och PL/SQL för att kommunicera med databasen.

Det som faller sig mest naturligt är att använda In-Memory Database Cache som en läscache. Fast det finns ingenting som hindrar dig från att också hantera skrivningar. Du kan endera låta DML gå vidare till den underliggande Oracledatabasen, eller hantera dem direkt i minnet.

 

Styr synkroniseringen med ett regelverk

Synkroniseringen med den underliggande databasen hanteras automatiskt efter ett regelverk som du själv får definiera. Exakt hur det ska byggas hänger mycket på vilken typ av applikation det är tekniken servar.

Alla förändringar lagras i en transaktionslogg, precis som för den vanliga databasen. Skrivningar till den kan ske asynkront eller synkront. Du får alltså själv avgöra om det är viktigare med prestanda eller att varje förändring finns med. Det kan till exempel vara så att loggar över hur dina webbanvändare beter sig inte är så viktigt, medan finansiella transaktioner absolut måste med.

Glöm inte att det straffar sig att tänka och arbeta med In-Memory Database Cache som en vanlig databashanterare. Enbart genom att låta den flöda fritt kan du få de stora prestandaförbättringarna. Om ett stort antal poster ändras hela tiden i produkten kommer den att bli oerhört trött.

 

Ladda med cachegrupper

Att använda tekniken är enkelt. Du laddar In-Memory Database Cache med något Oracle kallar för cachegrupper. Det är i praktiken en grupp tabeller från den underliggande databasen som hänger ihop med nycklar. Du kan tanka upp kompletta tabeller, eller bara välja att läsa in delmängder av innehållet.

Eftersom minnet i de flesta fall är mer begränsat än diskutrymmet, är det en god idé att kasta ut information som inte längre behövs. Detta hanterar programmet åt dig automatiskt. Till exempel kan du radera data från föregående dag för att ge plats åt dagsfärsk information. Alternativt låter du behovet styra. Då fungerar lösningen som en LRU-lista.

Även om produkten nu är en del av databasen är den forfarande fristående. Detta innebär att den underliggande instansen kan försvinna utan att det påverkar cachen. När kontakten sedan återkommer synkas de båda komponenterna upp igen.

 

Säkrare tillgänglighet

Av denna anledning är In-Memory Database Cache också ett bra alternativ om du behöver tillgänglighet. För den underliggande databasen kan ta över om minnescachen av någon anledning slutar fungera. Du får helt enkelt en extra åtkomstpunkt.

Givetvis går det dessutom att replikera flera instanser av In-Memory Database Cache mellan maskiner. På detta sätt kan du både sprida lasten mellan flera servrar. Däremot behöver du inte distribuera informationen tvärs över hela lösningen. Istället kan du välja att lägga olika delmängder data i olika minnesareor.

 

Enkelt att komma igång

Att komma igång med TimesTen och In-Memory Database Cache är enkelt. I vanlig ordning finns den att ladda hem på Oracle Technology Network. Klicka dig bara fram till databaser och sedan till TimesTen. Där hittar du även dokumentation och lite tips.

Ladda hem rätt version och installera genom att klicka dig igenom ett GUI. Du kommer att få bestämma hurvida du vill köra den som en egen produkt, eller om den ska kopplas till en Oracledatabas. Sedan är det bara att ansluta sig och köra.

Även om den marknadsförs mot 11g, går det att använda äldre versioner. Version 11.2.2 av TimesTen fungerar till exempel bra mot 10.2.0.5 eller nyare. Supporten på första 11-versionen gäller 11.1.0.7. Givetvis fungerar det med 11.2.0.2 och senare versioner också.

Precis som för många andra komponenter finns det ett tillägg till Oracle Enterprise Manager. Det viktigaste är att du med denna funktion kan övervaka cachen i nära nog realtid. Utmärkt om du vill se hur väl den används. Fast du kan också undersöka inställningar och lägga in larm.

Du kan också ansluta dig till databasen med hjälp av SQL Developer 3.0. Det fungerar precis på samma sätt som när du kopplar upp dig mot en vanlig instans. Klicka bara på fliken ”TimesTen” för att mata in serveruppgifterna.

Med allt detta sagt gäller det att tänka till innan du installerar In-Memory Database Cache. Även om det kan verka lockande att få lite extra prestanda är det sannolikt få applikationer som verkligen behöver detta. Att snabba upp rapportgenerering för slutanvändare kanske är trevligt, men kan de vänta ett par sekunder kanske det dumt att göra miljön mer komplex.

Men det finns också många som verkligen behöver detta. Inte minst inom telekom- och finansmarknaderna. Att blixtsnabb kunna hantera stora volymer är inte simpel på något sätt. Med In-Memory Database Cache blir det väldigt mycket enklare. Detta utan att kräva massiva ändringar av befintliga applikationer. Lysande.

Robert Ilijason

Bilder

Bild1

Att installera TimesTen är till och med enklare än att installera den vanliga databasen. Även med allting aktiverat försvinner heller inte särskilt mycket diskutrymme på servern.

Bild2

Eftersom TimesTen är inköpt skiljer sig verktyg och syntax från Oracle vanliga. Men det går ganska snabbt att komma in i hur minnesdatabasen fungerar.

Bild3

Nyare versioner av SQL Developer gör det fullt möjligt att koppla upp sig mot TimesTen. Detta förenklar arbetet i blandmiljöer rejält.

Logga in

Orcan – Sveriges Oracle-användarförening