Indlejret DBMS
Et indlejret databasestyringssystem er en arkitektur af databasestyringssystemer, når DBMS er tæt forbundet med applikationsprogrammet og kører på den samme computer uden at kræve professionel administration .
Embedded DBMS bruges i mange programmer, der gemmer store mængder data, men som ikke kræver adgang fra mange computere. På "skrivebordet" af en uerfaren bruger er der også programmer, der kan indeholde et indlejret DBMS: mailklienter og instant messengers (korrespondancedatabaser) [1] , medieafspillere ( afspilningslister og covers) [2] , billedfremvisere ( metadata og thumbnails) [3] , forskellige lokale databaser som telefonbøger og geografiske informationssystemer (leverede data).
Historisk set leverede lokale DBMS'er og filservere et scriptsprog , hvor brugeren kunne skrive et applikationsprogram. Sådan er Microsoft Access , FoxPro , Clipper , 1C: Accounting arrangeret . Ulempen ved denne tilgang var den ekstreme fattigdom i de resulterende programmer, begrænsede fejlfindingsværktøjer. Og ofte var der ikke noget kompakt runtime-miljø, der kunne distribueres med programmet; du skal bruge et program - installer hele pakken. Med udbredelsen af dynamiske links og open source -fællesskabet svingede pendulet den anden vej: Lad programmøren skrive sit program på det sprog på højt niveau, der er praktisk. DBMS vil blive forbundet med programmet og blive ét med det.
Funktioner
Intet separat serverprogram
Et fysisk indlejret DBMS er et
bibliotek, der er statisk eller dynamisk forbundet med hovedprogrammet. Programmet og DBMS kommunikerer ikke gennem
netværkssockets , men gennem en specialiseret
API [4] [5] . Dette har dog en ulempe: ofte skal programmøren selv forhindre flertrådede
løb .
Høj hastighed og lavt hukommelsesforbrug, især på lange
strenge og
BLOB'er
Takket være en specialiseret API er antallet af læse-skrive-operationer minimalt.
Ofte lille efter standarderne i databasen, den maksimale størrelse af databasen
Fra enheder af gigabyte (mængden af pc-hukommelse i 2012) til enheder af terabyte (i størrelsesordenen på størrelsen af en harddisk). For eksempel gemmer
SQLite altid databasens indholdsfortegnelse (analogt med filallokeringstabellen ), dette begrænser størrelsen af databasen
[6] .
Typisk et specialiseret forespørgselssprog eller ikke fuldt kompatibelt med
SQL-92
For ydeevnens skyld implementerer udviklere ofte enten ufuldstændig SQL (
SQLite ),
[7] eller et specialiseret forespørgselssprog (
BerkeleyDB ). Derudover kan indlejret DBMS fungere efter et helt andet princip end klient-server:
Ping til databasen er nul, og forespørgslen kan udføres i dele med flere kald til DBMS.
Typisk er der ingen brugerrettigheder
[7] ; simpel
transaktionsisolering _
En større enkeltbrugerdatabase er ikke nødvendig. Typisk isoleres transaktioner på en
skrivning-en-for-en- basis ved hjælp af standard OS-mekanismer som
fillåse . Adgang til én fil fra flere programmer kan etableres: for eksempel fungerer
SQLite med succes på let indlæste websteder
[6] . Men den høje belastning er for hård for ham.
Som regel er der ingen
arkivering og
replikering af databasen
En indlejret database er kun så pålidelig som DBMS-biblioteket og
det filsystem, som databasen ligger på. Velkendte indlejrede DBMS'er har en tendens til at være velafprøvede
[ 8] , og moderne filsystemer er meget pålidelige. Der er dog mange måder at miste data på,
[9] , således at sådanne løsninger er ringere i pålidelighed i forhold til server-side DBMS.
Som udgangspunkt er der ingen sprogværktøjer, der forenkler adgangen til databasen
Specialiserede DBMS-sprog som
xBase er normalt en kombination af et forespørgselssprog og et applikationsprogrammeringssprog. I almene programmeringssprog vil rigtigheden af anmodningen ikke blive kontrolleret ved kompilering, men kun når anmodningen sendes til DBMS. Og selvfølgelig, i et programmeringssprog til generelle formål, vil databaseadgangsstrukturer (både indlejret og klient-server) være tunge.
C# har dog et
LINQ -forespørgselssprog, der kompileres til en kombination af metodekald, som typisk forbereder almindelig
SQL .
Eksempler
- Accuracer Database System
- Advantage Database Server
- Oracle Berkeley DB
- CSQL
- EffiProz
- ElevateDB
- Empress Embedded Database
- Udvidelig lagermotor
- eXtremeDB
- Indlejret version af Firebird
- HSQLDB
- InfinityDB
- Embedded version af Informix Dynamic Server
- Indlejret version af InnoDB
- Indlejret version af InterBase
- ITTIA DB
- Kyoto kabinet
- Indlejret version af MySQL
- NexusDB
- RDM indlejret
- ScimoreDB
- SolidDB
- SQLite
- Microsoft SQL Server Compact
- TurboDB
- Valentina DB
- VistaDB
Noter
- ↑ Skype bruger især SQLite til at gemme korrespondancedatabaser
- ↑ Især bruger AIMP SQLite til at gemme afspilningslister
- ↑ XnView gemmer især thumbnails og tags i SQLite- databasen
- ↑ Eksempel på BerkeleyDB API
- ↑ Eksempel på SQLite API Arkiveret 20. december 2012 på Wayback Machine
- ↑ 1 2 Brug af SQLite Arkiveret 20. december 2012 på Wayback Machine
- ↑ 1 2 Hvad er der ikke i SQLite Arkiveret 20. december 2012 på Wayback Machine
- ↑ Sådan testes SQLite Arkiveret 21. december 2012 på Wayback Machine
- ↑ Sådan korrumperer du en SQLite-tabel Arkiveret 9. august 2014 på Wayback Machine