ISAM
ISAM (en akronym för indexerad sekventiell åtkomstmetod ) är en metod för att skapa, underhålla och manipulera datorfiler med data så att poster kan hämtas sekventiellt eller slumpmässigt med en eller flera nycklar . Index över nyckelfält underhålls för att uppnå snabb hämtning av nödvändiga filposter i indexerade filer . IBM utvecklade ursprungligen ISAM för stordatorer , men implementeringar är tillgängliga för de flesta datorsystem.
Termen ISAM används för flera relaterade begrepp:
- IBM ISAM-produkten och algoritmen den använder.
- Ett databassystem där en applikationsutvecklare direkt använder ett applikationsprogrammeringsgränssnitt för att söka i index för att lokalisera poster i datafiler. Däremot använder en relationsdatabas en frågeoptimerare som automatiskt väljer index.
- En indexeringsalgoritm som tillåter både sekventiell och nyckelad åtkomst till data. De flesta databaser använder någon variant av B-trädet för detta ändamål, även om de ursprungliga IBM ISAM- och VSAM -implementeringarna inte gjorde det.
- Mest generellt, vilket index som helst för en databas. Index används av nästan alla databaser.
Organisation
I ett ISAM-system organiseras data i poster som är sammansatta av fält med fast längd, ursprungligen lagrade sekventiellt i nyckelsekvens. Sekundära uppsättningar av poster, kända som index , innehåller pekare till platsen för varje post, vilket gör att individuella poster kan hämtas utan att behöva söka i hela datamängden. Detta skiljer sig från de samtida navigationsdatabaserna , där pekarna till andra poster lagrades i själva posterna. Den viktigaste förbättringen i ISAM är att indexen är små och kan sökas snabbt, möjligen helt i minnet, vilket gör att databasen bara kan komma åt de poster den behöver. Ytterligare modifieringar av data kräver inga ändringar av andra data, bara tabellen och indexen i fråga.
När en ISAM-fil skapas fixeras indexnoder och deras pekare ändras inte under infogning och borttagning som sker senare (endast innehållet i bladnoderna ändras efteråt). Som en konsekvens av detta, om inlägg till någon bladnod överskrider nodens kapacitet, lagras nya poster i överflödeskedjor. Om det finns många fler insättningar än raderingar från en tabell kan dessa överflödeskedjor gradvis bli mycket stora, och detta påverkar tiden som krävs för att hämta en post.
Relationsdatabaser kan enkelt byggas på ett ISAM-ramverk med tillägg av logik för att upprätthålla giltigheten av länkarna mellan tabellerna. Typiskt kommer fältet som används som länk, den främmande nyckeln , att indexeras för snabb uppslag. Även om detta är långsammare än att bara lagra pekaren till relaterade data direkt i posterna, betyder det också att ändringar av den fysiska layouten av datan inte kräver någon uppdatering av pekarna – posten kommer fortfarande att vara giltig.
ISAM är enkelt att förstå och implementera, eftersom det i första hand består av direktåtkomst till en databasfil. Avvägningen är att varje klientdator måste hantera sin egen anslutning till varje fil den kommer åt. Detta leder i sin tur till möjligheten av motstridiga infogningar i dessa filer, vilket leder till ett inkonsekvent databastillstånd. funktionalitet för låsning av hela filer eller individuella poster. Att låsa flera poster löper risk för dödläge om inte ett system för förhindrande av dödläge följs strikt. Problemen med låsning och dödläge löses vanligtvis med tillägget av ett klient-server- ramverk som samlar klientförfrågningar och upprätthåller ordning. Fullständiga ACID- transaktionshanteringssystem tillhandahålls av vissa ISAM-klient-server-implementeringar. Dessa är de grundläggande koncepten bakom ett databashanteringssystem (DBMS), som är ett klientlager över det underliggande datalagret.
ISAM ersattes hos IBM med en metod som kallas VSAM (virtual storage access method). Ännu senare utvecklade IBM SQL/DS och sedan Db2 som IBM marknadsför som deras primära databashanteringssystem . VSAM är den fysiska åtkomstmetoden som används i Db2. [ citat behövs ]
OpenVMS
Operativsystemet OpenVMS använder filsystemet Files-11 i kombination med RMS ( Record Management Services ). RMS tillhandahåller ett extra lager mellan applikationen och filerna på disken som ger en konsekvent metod för dataorganisation och åtkomst över flera 3GL- och 4GL-språk. RMS tillhandahåller fyra olika metoder för att komma åt data; sekventiell, relativ postnummeråtkomst, postfiladressåtkomst och indexerad åtkomst.
Den indexerade åtkomstmetoden för att läsa eller skriva data ger bara det önskade resultatet om filen faktiskt är organiserad som en ISAM-fil med lämpliga, tidigare definierade nycklar. Tillgång till data via de tidigare definierade nyckelna är extremt snabb. Flera nycklar, överlappande nycklar och nyckelkomprimering i hashtabellerna stöds. Ett verktyg för att definiera/omdefiniera nycklar i befintliga filer tillhandahålls. Poster kan raderas, även om "sopsamling" görs via ett separat verktyg.
Designöverväganden
IBMs ingenjörer designade ISAM-systemet för att använda en minimal mängd datorminne . Avvägningen var att ingångs-/utgångskanalen , kontrollenheten och disken hölls mer upptagna. En ISAM-fil består av en samling dataposter och två eller tre nivåer av index. Spårindexet innehåller den högsta nyckeln för varje skivspår på cylindern som den indexerar. Cylinderindexet lagrar den högsta nyckeln på en cylinder och skivadressen för motsvarande spårindex . Ett valfritt huvudindex , som vanligtvis endast används för stora filer, innehåller den högsta nyckeln på ett cylinderindexspår och skivadressen för det cylinderindexet. När en fil väl har laddats flyttas inte dataposter; infogade poster placeras i ett separat spillområde . För att hitta en post med nyckel söks indexen på disken av ett komplext självmodifierande kanalprogram . Detta ökade upptagettiden för kanalen, styrenheten och disken. Med ökade fysiska och virtuella minnesstorlekar i senare system sågs detta som ineffektivt, och VSAM utvecklades för att ändra avvägningen mellan minnesanvändning och diskaktivitet.
ISAM:s användning av självmodifierande kanalprogram orsakade senare svårigheter för CP-67- stöd för OS/360 , eftersom CP-67 kopierade ett helt kanalprogram till det fasta minnet när I/O-operationen startades och översatte virtuella adresser till riktiga adresser.
ISAM-liknande implementeringar
- Advantage Databas Server databashanterare
- Berkeley DB
- Btrieve
- FairCom DB
- C-ISAM
- DataFlex egen databas
- dBase och relaterade produkter Clipper och Foxpro
- Digital Equipment Corporation Record Management Services
- Enscribe är HP Tandem-metoden för strukturerad filåtkomst
- Utdragbar lagringsmotor
- Access Database Engine (ACE och tidigare JET) som används av Microsoft Access
- MySQL implementerar och utökar ISAM som MyISAM
- Paradox
- pblIsam GPL-implementering skriven i C
- Raima databashanterare
- Superbase- databasfamilj
- dbm DBM- och Flat File-databaser arbetar i tandem