Utvidbar lagringsmotor

Utvidbar lagringsmotor

Informasjon
Utviklet av Microsoft
Innskudd github.com/microsoft/Extensible-Storage-Engine
Miljø Windows
Type Databasemotor
Tillatelse MIT-lisens
Nettsted [1]

Extensible Storage Engine (Rep. ESE), også kalt Jet Blue, er en databasemotor med etablerte Microsoft i 1996. Den er innlemmet i operativsystemene til Windows NT- serien og produkter som brukes av Active Directory og Exchange Server .

Det er et programvarebibliotek som manipulerer databaser i henhold til den indekserte sekvensielle metoden ( ISAM ). Den implementerer mekanismer for å utføre transaksjoner atomiske, konsistente, isolerte og holdbare ( ACID ) samt mekanismer som cache til lås og avis (engelsk logg ) for å sikre sikkerhets- og ytelsesdatabaseoperasjoner.

Extensible Storage Engine brukes på databaser som varierer i størrelse fra 1 megabyte til over 1 terabyte .

Historie

Utviklingen av produktet startet i 1996, det ble opprinnelig kalt Jet Blue (JET for Joint Engine Technology ), med referanse til konkurrenten Jet Red , databasemotoren for Microsoft Access . Deretter ble det omdøpt til Extensible Storage Engine fordi de to produktene har forskjellig programmering, forskjellig historie, ulik funksjonalitet og ikke kan byttes ut.

det er to versjoner ESE97 og ESE98, med referanse til utgivelsesåret. Den ESENT versjon, basert på ESE97, brukes for Active Directory katalogtjeneste .

Funksjoner

Extensible Storage Engine brukes ved å ringe til funksjoner i programmeringsgrensesnittet . Dette grensesnittet gir muligheten til å lagre data i tabeller og deretter hente dem ved hjelp av indekser og markører . Atomisitet, konsistens, isolasjon og holdbarhet av samtidige data og metadataendringer er gitt av transaksjoner .

Extensible Storage Engine er utstyrt med en hurtigminnemekanisme som leser innholdet i databasen på forhånd, og skriver med forsinkelse, noe som gir raskere drift.

Gjennom flerversjons samtidighetsmekanismen vil programvare som leser innholdet i databasen under en transaksjon, se innholdet i databasen slik den var da transaksjonen startet . Senere endringer gjort i andre transaksjoner vil ikke være synlige. Extensible Storage Engine vil tilbakekalle transaksjonen hvis endringer overlapper andre endringer som er gjort i mellomtiden i andre transaksjoner.

Extensible Storage Engine manipulerer databasefiler som ligger på datamaskinen. Filene kan også plasseres på en annen datamaskin og manipuleres gjennom et distribuert filsystem , men denne bruken anbefales ikke av produsenten.

Database

Extensible Storage Engine databasefiler består av en fast størrelse sett med 4 eller 8 kilobyte - Sidestørrelsen bestemmes når filen er opprettet. Sidene er koblet sammen på et strukturtre B og inneholder en kontrollsum (engelsk kontrollsum ) som kan oppdage mulige feil. Sidene inneholder dataene og metadataene til skjemaet og indeksene . Sider opprettes når data legges til databasen. Hvis en side begynner å bli full, deler Extensible Storage Engine den i to, oppretter en ny side og tilpasser tre B.

Hver database består av en hovedfil, muligens ledsaget av midlertidige filer som inneholder transaksjoner , indekser og operasjonsloggen. Extensible Storage Engine oppretter automatisk indekser, og de slettes automatisk hvis de ikke har blitt brukt på 8 dager.

den tabellen i ESE-databasen kan ha en ikke-ortogonale organisasjon, med felt som ikke er til stede i alle radene i tabellen og felt multi-verdier. De feltopptak kan være av forskjellige typer data , inkludert penge-, dato, GUID , CLOB eller BLOB .

Hver kopi av Extensible Storage Engine kan håndtere opptil 6 databaser om gangen. Hver prosess ved bruk av ESE kan ha opptil 1024 eksemplarer av ESE.

En database kan kobles fra en gjeldende ESE-forekomst og deretter festes til samme forekomst eller til en annen forekomst. Mens løsrevet, kan en database kopieres ved hjelp av standard Windows-verktøy.

Tabeller

Mengden diskplass som er tildelt en tabell i en database, bestemmes av en gitt parameter når tabellen opprettes med CreateTable-operasjonen. Tabellene vokser automatisk som svar på dataopprettelse (opptak).

Tabeller har minst en indeks. Det må være minst en klyngeindeks for opptak av data. Når det ikke er noen applikasjonsdefinert klyngeindeks, brukes en kunstig indeks som bestiller og grupperer postene i kronologisk rekkefølge av postinnsetting.

Indekser er representert ved hjelp av B + trær. ESE har en online komprimeringsfunksjon som kompakterer dataene på nytt. Hvis en tabell skal oppdateres ofte, kan det reserveres plass til den for fremtidige innsettinger ved å spesifisere en passende sidetetthet når du oppretter en side eller indeks.

Registrerer og kolonner

Maksimal poststørrelse er 8.110 byte for sider på 8 kilobyte, med unntak av kolonner med høyt verdsetting. Kolonnetypene "LongText" og "LongBinary" kan inneholde data som er mye større i størrelse enn databasesidestørrelsen. Disse dataene med "lang verdi" kan i seg selv være opptil 2 gigabyte.

Postene er vanligvis ensartede ved at hver post har et sett med verdier for samme sett med kolonner. I ESE er det også mulig å definere et stort antall kolonner for en tabell, og å ha bare noen få fylt med verdier som ikke er null for visse poster. På samme måte kan en tabell også være en samling av heterogene poster.

ESE tilbyr støtte for et bredt utvalg av kolonneverdier, alt fra enkeltbitstørrelse opp til 2 gigabyteverdier. Å velge riktige kolonnetyper er viktig fordi kolonnetypen bestemmer mange av dens egenskaper, inkludert rekkefølgen på indekser. Her er listen over typer som har støtte i ESE:

Kolonnetyper

Etternavn Beskrivelse
Bit ternær verdi (NULL, 0 eller 1)
Usignert byte 1-byte usignert heltall
kort ("kort") 2-byte signert heltall
Kort usignert usignert 2-byte heltall
Lang 4-byte signert heltall
Lang usignert 4-byte usignert heltall
Lang Lang 8-byte signert heltall
Endring 8-byte signert heltall
IEEE singel 4-byte flytende nummer
IEEE Double 8-byte flytende nummer
Tid / dato Dato eller tid kodet på 8 byte (full dato, brøkstid)
GUID unik identifikator på 16 byte
Binær binær streng, lengde ⇐ 255 byte
Tekst ANSI- eller Unicode-tegnstreng med lengde ⇐ 255 byte
Lang binær Stor binær streng med lengde <2 gigabyte
Lang tekst Stor ANSI- eller Unicode-tegnstreng med lengde <2 gigabyte

Faste, variable og merkede kolonner
Hver ESE-tabell kan definere opptil 127 kolonner med fast lengde, 128 kolonner med variabel lengde og 64 993 markerte kolonner.
Faste kolonner er i utgangspunktet kolonner som tar like mye minne for hver post, uavhengig av verdien. Faste kolonner bruker 1 bit for å representere en nullverdi (NULL) og en fast mengde minne for hver post.
Variable kolonner bruker 2 byte for å bestemme en nullverdi (NULL), og en variabel mengde minne for hver post der denne kolonnen er definert.

De merkede kolonnene er kolonner som ikke tar noe plass i minnet hvis de ikke inneholder noen poster. Den samme merkede kolonnen kan inneholde flere verdier i en enkelt post. Når taggede kolonner er definert i en post, tar hver forekomst av en merket kolonne omtrent 4 byte minneplass i tillegg til størrelsen på den merkede kolonneinstansverdien. Når antallet forekomster av en enkelt merket kolonne er stort, er overskriften til hver merkede kolonneinstans omtrent 2 byte.

Referanser

  1. https://www.informatiquenews.fr/une-brique-ancestrale-et-fondamentale-de-windows-passe-en-open-source-76822
  2. (en) http://msdn.microsoft.com/en-us/library/ms684493(EXCHG.10).aspx Extensible Storage Engine - Microsoft Developer Network
  3. (in) Tony Redmond, Microsoft Exchange Server for Windows 2000 , Digital Press - 2001 ( ISBN  9781555582241 )
  4. Jean-François Apréa, Forberedelse til den aktive katalogen for MCSE Windows Server 2003-sertifisering , Editions ENI - 2005, ( ISBN  9782746024984 )
  5. (no) https://technet.microsoft.com/en-us/library/aa998171(EXCHG.65).aspx Extensible Storage Engine Architecture - Microsoft TechNet

Eksterne linker