Esittely upotettuun tietokantaan
Upotetut järjestelmät,tietokannan toiminnalla on ominaisuus, joka on pehmeä aikaraja. Tässä sulautettuun järjestelmään sovellettavaa tietokantajärjestelmää kutsutaan upotetuksi tietokantajärjestelmäksi tai upotetuksi reaaliaikaiseksi tietokantajärjestelmäksi (ERTDBS).
Thereliabilityrequirementsareunquestionable.Theembeddedsystemmustbeabletorununinterruptedlyforalongtimewithoutmanualintervention.Atthesametime,databaseoperationsarerequiredtobepredictable,andthesizeandperformanceofthesystemmustalsobepredictable,soastoensuretheperformanceofthesystem.Embeddedsystemswillinevitablydealwiththeunderlyinghardware,soindatamanagement,theremustalsobetheabilitytocontroltheunderlying,suchaswhendiskoperationswilloccur,thenumberofdiskoperations,howtocontrol,etc.Theabilityoflow-levelcontrolisthekeytodeterminingdatabasemanagementoperations.
Oneofthecurrentchallengesinthedevelopmentofembeddedsoftwaresystemsisembodiedinwhetherasetofreliable,efficientandstablemanagementmodelscanbeestablishedforthemanagementofvariousdata.Embeddeddatabasescanbesaidtohaveemergedasthetimesrequire.
Embeddeddatabaseisanimportantpartofembeddedsystem,andithasalsobecomeanindispensableeffectivemeansformoreandmorepersonalizedapplicationdevelopmentandmanagement.
Embeddeddatabaseshaveawiderangeofuses,suchasconsumerelectronics,mobilecomputingdevices,enterprisereal-timemanagementapplications,networkstorageandmanagement,andvariousspecialequipment.Thismarketiscurrentlyundergoingrapidgrowth.Togiveasimpleexample,mobilephoneswereoriginallyonlyusedformakingcallsandsendingtextmessages.Nowmobilephoneshaveaddedmanynewfunctions,suchasMMS,music,photography,video,etc.,withmoreapplicationfunctions,thesystembecomesmorecomplicated.
Comparisonofcommonlyusedembeddeddatabases
Progress
ProgresssoftwarecompanyannouncedinBeijingat18:00onApril18,2000,thefullreleaseontheLinuxoperatingsystemTherunningdatabaseanditsdeploymentproducts.Progresshastheworld'snumberonemarketshareintheembeddeddatabasemarket.Morethan2millionpeopleintheworldareusingProgressSoftware'sapplicationsoftware.Currently,thenumberofsitesdeployingProgressproductshasexceeded100,000.ThroughProgressSoftware'sfirstLinuxversionoftheembeddeddatabase,independentsoftwaredevelopersandenduserscanportmorethan5,000commercialapplicationsonthispopularoperatingsystem.
----TheproductlaunchedbyProgressSoftwareatthattimewasProgressVersion8.3,andithasnowreachedversion10.2c.Thisisacompletesetofintegrateddevelopmenttools,applicationserversandrelationaldatabaseproducts,andprovidesscalablemulti-layerLinuxsupport.Progresssoftwarecompany’sLinux-specificproductsinclude:
Progress(r)AppServer(tm):Tämä onsovelluspalvelinProgress(r)EnterpriseRDBMS(tm),joka voi ottaa käyttöön jaettuja sovelluskomponentteja heterogeenisessä ympäristössä:Tarjoaa skaalautuvan tallennusratkaisun vaativimpiin sovelluksiin, jotka tarvitsevat tukeakseen suuria tietokanta-, ja useiden erilaisten prosessien käyttöjärjestelmiä.
----ProgressVersion8.3-deploymentproduct forRedHat6.0Linuxille on nyt täysin saatavilla.Progresson julkaisun ProgressVersion9,Progress(r)WebSpeed(r)Version3,Progress(r)Apptivity(tm)ja Progress(r)SonicMQ(tm)forLinuxment
----QAD,maailman pysäkkiautoteollisuudenERP-toimittaja, tukee uusinta PROGRESS-versiota.
SQLite
Kevyen tietokannan SQLiten pääominaisuus:
1.Tuet, ei konfigurointia, ei asennusta ja ei järjestelmänvalvojaa;
2.SupportmostSQL92;
3.Acompletedatabaseisstoredinafileonthedisk,thesamedatabasefilecanbeusedondifferentmachines,andthemaximumsupportdatabaseis2T,CharacterandBLOBsupportisonlylimitedtoavailablememory;
4.Koko järjestelmä on alle 30 000 koodiriviä, alle 250 kilotavua muistitilaa (gcc), useimmat sovellukset ovat enemmän kuin nykyinen yhteinen asiakas/palvelinpuolen tietokanta, eikä sillä ole muita riippuvuuksia.
5.Lähdekoodi on auki, 95 %:ssa koodista on hyvät merkinnät ja yksinkertainen ja helppokäyttöinen API. Virallinen versio tulee TCL:n kanssa.
Empress(kaupallinen tietokanta)
Kehitysvaiheen ominaisuudet:
1.Programscanbeembedded,thisfeatureenablesapplicationsanddatabasestoworkinaunifiedaddressspace,enhancingImprovethestabilityofthesystemandimprovetheefficiencyofthesystem.
2.Determinetheresponsetime.Empresscanmaketheresponsetimeofthedatarelativelyconsistent.Theusercansetatimeoutlimit.Iftheinsertionormodificationisnotcompletedwithinthespecifiedtime,thesystemwillreportanerror.
3.FastoperationEmpressprovidesakernel-levelCAPI,calledMR,andapplicationswrittenwithMRdonotneedtobeparsedduringexecution.Inaddition,theaccelerationmechanisminMRalsoincludesexcellentlockcontrol,memorymanagementandselectionfunctionsbasedonthenumberofrecords.
4.Flexibledevelopmentmethods,Empressprovidesmultipledevelopmentinterfacestospeedupthedevelopmentprocesswithoutrequiringdeveloperstorelearnthedevelopmentlanguageandfamiliarizethemselveswiththedevelopmentenvironment.
5.Friendlystoragemethod,Empressdatabasecanbeplacedinanystoragedevicesupportedbytheoperatingsystem,andEmpressformscanevenbesplitandplacedindifferentstoragedevices,suchasmemory,harddiskandCD-ROM.
6.Themicro-kernelstructureEmpressishighlyunitized,andtherequiredunitcanbeselectedaccordingtotheneeds,therebyreducingtheresourcesoccupiedbytheEmpressdatabaseintheproduct.
7.Broadplatformsupport,Empresssupportsavarietyofhardwareplatformsandsoftwareplatforms,andcanalsobeportedtothehardwareplatformoroperatingsystemrequiredbythecustomer.
Tekniset edut:
1.Mikroydinrakenne, vie vähän muistitilaa, sopii erityisesti kompaktiin suunnitteluun
2. Työskentele jatkuvasti 24 tuntia päivässä, 7 päivää viikossa, ilman lisätoimintoja ja huoltovapaa
3.Ydintason CAPI-rajapinta maksimoida toimintanopeus
4.Erittäin joustavaSQL-käyttöliittymä
5.Erinomainen virransäästönpalautuskyky
6. Vahva tapahtuma ja salpamekanismi
7. Tukee SCSI-, RAID-, IDE-, RAM-, CD-RW-, DVD-ROM-, CF- ja muita tallennusvälineitä
8.SupportUnicodecode
9.Moottori voidaan ladata jamuistiin
eXtremeDB
CharacteristicsofeXtremeDB:
1.In-memorydatabase,eXtremeDBsavesdatainthemainmemoryinaformatdirectlyusedbytheprogram,whichnotonlyeliminatestheoverheadoffileI/O,butalsoeliminatesthefilesystemThebufferandCachemechanismrequiredbythedatabase.Theresultisalimitspeedofonemicrosecondorlesspertransaction,whichishundredsorthousandsoftimesfasterthanadisk-likedatabase.Asanin-memorydatabase,eXtremeDBnotonlyhashighperformance,butalsohashighdatastorageefficiency.Inordertoimproveperformanceandfacilitatetheuseofprograms,dataisnotcompressedineXtremeDB,and100Mofspacecansaveupto70Mofeffectivedata,whichisunimaginableinotherdatabases.
2.Hybriddatabase,eXtremeDBcannotonlybuildanin-memorydatabasethatrunscompletelyinthemainmemory,butalsoadisk/memoryhybriddatabase.IneXtremeDB,wecallthisoperatingmodebasedondisk,memoryordisk+memoryeXtremeDBFusion.eXtremeDBFusiontakesintoaccountthereal-timeandsecurityrequirementsofdatamanagement,andisastep-by-stepimprovementinreal-timedatamanagement.
3.Embeddeddatabase,theeXtremeDBkernelisincludedintheapplicationintheformofalinklibrary,anditsoverheadisonly50KB~130KB.Whetherinanembeddedsystemorareal-timesystem,eXtremeDBisnaturallyembeddedintheapplicationandworkswithouttheenduser'sknowledge.ThisnaturalembeddednessofeXtremeDBisessentialforreal-timedatamanagement:eachprocessdirectlyaccessestheeXtremeDBdatabase,avoidinginter-processcommunication,therebyeliminatingtheoverheadanduncertaintyofinter-processcommunication.Atthesametime,eXtremeDB'suniquedataformatisconvenientfortheprogramtousedirectly,eliminatingtheoverheadofdatacopyinganddatatranslation,andshorteningthecodeexecutionpathoftheapplication.
4.Theapplication-customizedAPI,theapplication'soperatinginterfacetotheeXtremeDBdatabaseisautomaticallygeneratedaccordingtotheapplicationdatabasedesign,whichnotonlyimprovestheperformance,butalsoeliminatesthedynamicmemoryallocationnecessaryforthegeneralinterface,Therebyimprovingthereliabilityoftheapplicationsystem.Thecustomizationprocessissimpleandconvenient.Theapplicationfeaturessuchastables,fields,datatypes,eventtriggers,andaccessmethodsintheeXtremeDBdatabasearecustomizedbyahigh-levellanguage,andtheC/C++APIinterfaceforaccessingthedatabaseisautomaticallygeneratedthroughtheeXtremeDBpre-compiler.
5. Ennustettava tiedonhallinta
TheuniquearchitectureofeXtremeDBensuresthepredictabilityofdatamanagement.eXtremeDBisnotonlyfaster,smaller,andmorecertain.Onaserverwith80dual-coreCPUs,eXtremeDBsaves15Brecordsin1TBofmemory;nomatterhowmanyrecordsare,eXtremeDBcanretrievearecordinone-eightymicroseconds.
Firebirdembeddedserverversion
Firebirdembeddedserverversion(EmbeddedServer),FirebirdderivedfromInterbaseopensource,isfullofvitality.AlthoughitssizeisdozensoftimessmallerthanitspredecessorInterbase,itsfunctionsarenotcastrated.InordertoreflectFirebird'sshortandslickfeatures,thedevelopmentteamaddedanembeddedversionafteraddingasuperserverversion.Thelatestversionis2.0.
TheembeddedversionofFirebirdhasthefollowingfeatures:
1.ThedatabasefileisfullycompatiblewiththeFirebirdnetworkversion.Theonlydifferenceisthattheconnectionmethodisdifferent,whichcanrealizezero-costmigration.
2.Thedatabasefileisonlylimitedbytheoperatingsystem,anditsupportssplittingadatabaseintodifferentfiles,breakingthelimitationofthemaximumfileoftheoperatingsystemandimprovingtheIOthroughput.
3.Se tukee täysin SQL92-standardia ja suurinta osaa SQL-99-standardifunktioista.
4.Richdevelopmenttoolsupport,mostofthecomponentsbasedonInterbasecanbedirectlyusedinFirebird.
5.Tukee kaikkia suhteellisten tietokantojen ominaisuuksia, kuten tapahtumia, tallennettuja toimenpiteitä ja laukaisimia.
6.Voit kirjoittaa omat lisälaajennusfunktiosi (UDF).
IntroductiontomSQL
mSQL(miniSQL)isasingle-userdatabasemanagementsystem,freeforpersonaluseandchargeableforcommercialuse.Becauseofitsshortsize,theapplicationsystemdevelopedbyitisespeciallypopularamongInternetusers.mSQL(miniSQL)isasmallrelationaldatabase,theperformanceisnotverygood,theSQLlanguagesupportisnotcomplete,butitisenoughinsomenetworkdatabaseapplications.BecausemSQLisrelativelysimple,itisslightlyfasterthanMySQLwhenrunningsimpleSQLstatements,whileMySQLhasworkedhardonthreadsandindexestoruncomplexSQLstatementsfasterthanmSQL,PostgreSQL,etc.Thelatestversionis3.7releasedonMay8,2005.ThelogoofMSQLisadeer,asshowninthefigurebelow.Figure1mSQLLOGOlogo
TechnicalcharacteristicsofmSQL:Intermsofsecurity,mSQLsetstheaccessauthorityofeachuseroneachhostthroughACLfiles,andthedefaultisallread/write.mSQLlacksmostofthefeaturesofANSISQL,itonlyimplementsaminimalAPI,withouttransactionsandreferentialintegrity.MSQLiscloselyintegratedwithLite(aC-likescriptinglanguage,releasedwiththedistribution),andyoucangetawebsiteintegrationpackagecalledW3-mSQL,whichisJDBC,ODBC,PerlandPHPAPI.
SQLitedatabase-kokeilu
Oppimisresurssit
sqliteChinesewebsite:ohjelmointiintroduction,opensourceforum
sqliteofficialwebsite:lähdekoodin lataus, aloitusopas, C/C++-viitteet, useat muut asiakirjat, kehittäjäfoorumit jne.
Asenna SQLite Linuxhostiin
Lataa sqlite-amalgamation-3.5.9.tar.gzfile
Uploadsqlite-amalgamation-3.5.9.tar.gztomikedirectory
Unzipsqlite-amalgamation-3.5.9.tar.gz
tarzxvfsqlite-amalgamation-3.5.9.tar.gz
Syötäsqlite-hakemisto:
cdsqlite-amalgamation-3.5.9
Määritykset
./configure
Käännä
p>make
Asennus
tee asennus
Seuraavat tiedostot on pääosin asennettuna:
/usr/local/include/sqlite3.h
/usr/local/include/sqlite3ex.h
/usr/local/lib/libsqlite3*
/usr/local/bin/sqlite3
Theheaderfileisusedtoprovidethelibraryfunctionprototypeprovidedbysqlite.Theseheaderfileswillbeincludedwhenwritingdatabaseapplications;thelibraryfunctionisthedynamiclinklibraryprovidedbysqlite,iftheapplicationusesIfSQLitelibraryfunctionsareadded,theselibrarieswillbedynamicallylinkedduringcompilation;thesqliteapplicationinthebindirectoryisashellprogramthatprovidesausercommandlineinterface,anduserscanexperiencethefunctionsprovidedbysqlite.
3.2.1Kokee sqliten toimintoja isäntäkomentorivin avulla, katso liite1
3.2.2Kirjoita sovellusohjelmakoodi, joka on seuraava:
#sisältää
#sisältää
staticintcallback(void*NotUsed,intargc,char**argv,char**azColName){
inti;
for(i=0;i
printf("%s=%s\n",azSaranNimi[i],argv[i]?argv[i]:"NULL");
}
printf("\n");
palautus0;
}
intmain(intargc,char**argv){
sqlite3*db;
char*zErrMsg=0;
intrc;
if(argc!=3){
fprintf(stderr,"Käyttö:%sDATABASESQL-STATEMENT\n",argv[0]);
poistu(1);
}
rc=sqlite3_open(argv[1],&db);
if(rc){
fprintf(stderr,"Ei voi avata tietokantaa:%s\n",sqlite3_errmsg(db));
sqlite3_close(db);
poistu(1);
}
rc=sqlite3_exec(db,argv[2],takaisinsoitto,0,&zErrMsg);
if(rc!=SQLITE_OK){
fprintf(stderr,"SQLerror:%s\n",zErrMsg);
sqlite3_free(zErrMsg);
}
sqlite3_close(db);
palautus0;
}
(1)Luo tiedostoasqlite_test.cfile withthecontentasabove.Putsqlite_test.cTiedostosijoitetaanmike-hakemistoon.
(2)Compilethesqlite_test.cfile:
gcc-I/usr/local/include-L/usr/local/lib-osqlite_testsqlite_test.c-lsqlite3
p>Sovellus, joka luo qlite_testin.
GccKomentoriviparametrin selitys:
-Lohj
Whencompiling,searchThepathofthelibrary.Forexample,youcanuseittomakeacatalogforyourownlibrary,otherwisethecompilerwillonlyfinditinthecatalogofthestandardlibrary.Thisdiristhenameofthedirectory.
-lkirjasto
Määritä käännettäessä käytetty kirjasto
-Iohj
Kun käytät#include"tiedostoa",gcc/g++hakee ensimmäisen kerran otsikkotiedostoonnykyisessä hakemistossa.Jos sitä ei löydy, se palaa oletusotsikkotiedostohakemistoon löytääkseen sen. Jos käytät-Ionluonnuthakemiston, hän etsii ensimmäistä kertaa hakemistossa.
Järjestelmän#include,gcc/g++hakee hakemistostaI,searchIfnot,hakee sitten järjestelmän oletusotsikkotiedostohakemistosta
(3)Testaasqlite_testiohjelma
Testiohjelma hyväksyy kaksi parametria:ensimmäinen parametri ontietokannan tiedostonnimi,toinen parametri onsuoritettava SQL-lause.Ohjelmassa on neljä pääpaikkaa, jotka liittyvät SQLite3API:hen:sqlite3_open()online27,as3fort3fort38]sqlite3_exec()onlite333 SQLite3:n API-liittymä.
Thefollowingisthecompleteprocessoftestingthetestprogram.Itshouldbenotedthatduetothelongcommand,eachcommandisdividedintomultiplelinesofinput,soitlooksclearer:
[root@Sitsang2root]$./testxyz.db"createtable
>tbl0(namevarchar(10),numbersmallint);"
[root@Sitsang2root]$./testxyz.db"insertinto
>tbl0values('cyc',1);"
[root@Sitsang2root]$./testxyz.db"insertinto
>tbl0values('dzy',2);"
[root@Sitsang2root]$./testxyz.db"select*
>fromtbl0;"
nimi=sykli
numero=1
nimi=dzy
numero=2
Explainthetestcommandusedabove:Thefirstcommandcreatesatbl0tableinthexyz.dbdatabasefile.Thetablecontainstwofields.Thefieldnameisavariable-lengthstring.Thetypeofnumberissmallint;thesecondcommandinsertsarecord('cyc',1)intothetbl0tableofthedatabase;thethirdcommandinsertsarecord('dzy',2)intothetbl0tableofthedatabase;Thefourthcommandistoqueryallthecontentsofthetabletbl0,asexpected,thiscommandprintsexceptforthetwonewlyinsertedrecordsinthedatabase.Itcanbeconcludedthatthesecommandshaveindeedworkedinaccordancewiththeexpectedgoals.
Atthesametime,afterinsertingthedatashownaboveintothedatabase,youcanseethatthesizeofthedatabasefilexyz.dbhaschanged:
[root@Sitsang2root]$ll-hxyz.db
-rw-r--r--1rootroot2.0kJan100:18xyz.db
Thesizeofthedatabasefilexyz.dbatthistimeIs2K.Thetestresultsshowthatthedatabasecanworknormally.
Kehitäsqlite-pohjainen upotettu tietokantaohjelma
3.3.1Siirrä SQLite kehityspöytään ja poista edellinensqlite-yhdistäminen-3.5.9-hakemisto
Unzipsqlite-amalgamation-3.5.9.tar.gz
tarzxvfsqlite-amalgamation-3.5.9.tar.gz
Syötäsqlite-hakemisto
cdsqlite-amalgamation-3.5.9
Wecreateadirectorysqlite_installunderthe/home/mikedirectoryastheinstallationdirectoryforlateruse.
mkdir/home/mike/sqlite_install
ConfiguresourcefilestogenerateMakefilesuitableforthedevelopmentboard
exportPATH=/usr/local/arm-linux/bin:$PATH
./configure--host=arm-linux--prefix=/home/mike/sqlite_install
Explanation:HowtoinstalllinuxsoftwareTherearegenerallytwoways:rpmmode;use./configureconfiguration,thenmakeandthenmakeinstallmode;pleaserefertorelatedinformation.Here,the--hostparameterreferstothecompiledsoftwaretoberunonthearm-linuxplatform;--prefixreferstothesoftwareinstallationdirectory.TheresultofConfigurerunningistoproduceacorrespondingMakefilefilethatfollowsthetwoparametersspecifiedafterconfigure.
Käännä
valmistaa
Asenna
tee asennus
Enter/home/sqlite_installtowatch,Youcanfindthattherearethreedirectories,namelyinclude,lib,bin.Theheaderfilesrequiredforwritingsqlitedatabaseapplications,libraryfunctionsrequiredforapplicationcompilationandruntime,andsqlitecommandlineprogramsthatcanberunonthearmlinuxsystemarerespectivelystored.
3.3.2WritingandcompilingapplicationsusingSQLitefunctionlibraryWeusethecross-developmenttoolchaintorecompiletheprogramsqlite_test.cwrittenin3.2.2sothatitcanrunonthedevelopmentboard.
Käännä lähdeohjelma:
Confirmthatsqlite_test.cisinthemikedirectoryandenterthemikedirectory
arm-linux-gcc-I./sqlite_install/include/-L./sqlite_install/lib/-osqlite_testsqlite_test.c-lsqlite3
Luo suorituksen jälkeenvarsiversionsqlite_testitiedosto
Tarkistaqlite_testitiedoston attribuutit
filesqlite_test
Copythesqlite_testfiletoadirectoryoftherootfilesystem,andcopyallthefilesinthe/home/mike/sqlite_install/libdirectorytotherootofthelibraryfunctionsneededforsqlite_testtorunUnderthelibdirectoryofthefiledirectory,recreatetherootfilesystemimageincramfsoryaffsformatandburnittotheexperimentalsystem.
Järjestelmän käynnistämisen jälkeen voit testatasqlite_testaa samalla tavallaasin3.2.Annex1sqlite3:Komentoriviohjelma SQLite-tietokannassa.SQLitelibrarysisältääyksinkertaisen komentorivityökalun, jonka nimi onsqlite3.sqlite3. 3.
Aloitusopas
Käynnistäsqlite3-ohjelma kirjoittamalla"sqlite3"ja SQLite-tietokannan pitävän tiedostonimen perässä. Jos tiedostoa ei ole olemassa,uusi luodaan automaattisesti.sqlite3-ohjelma käynnistää sen jälkeen SQL:nsuorituksensuorituksen.
Esimerkiksi luoda uusi SQLite-tietokanta nimeltä"ex1"yhdellä taulukolla nimeltä"tbl1",voit tehdä tämän:
$sqlite3ex1
SQLiteversio 3.3.10
Syötä".help"ohjeet
sqlite>luo tablettibl1(onevarchar(10),twosmallint);
sqlite>insertintotbl1values('hei!',10);
sqlite>insertintotbl1values('goodbye',20);
sqlite>select*fromtbl1;
Hei!|10
näkemiin|20
sqlite>
Voit lopettaa sqlite3-ohjelman kirjoittamalla järjestelmän tiedostonlopun merkin (yleensä Control-D) tai keskeytysmerkin (yleensä Control-C).
MakesureyoutypeasemicolonattheendofeachSQLcommand!Thesqlite3programlooksforasemicolontoknowwhenyourSQLcommandiscomplete.Ifyouomitthesemicolon,sqlite3willgiveyouacontinuationpromptandwaitforyoutoentermoretexttobeaddedtothecurrentSQLcommand.ThisfeatureallowsyoutoenterSQLcommandsthatspanmultiplelines.Forexample:
sqlite>CREATETABLEtbl2(
...>f1varchar(30)primarykey,
...>f2text,
...>f3real
...>);
sqlite>
Sivussa: Kyselyt SQLITE_MASTER-taulukosta
ThedatabaseschemainanSQLitedatabaseisstoredinaspecialtablenamed"sqlite_master".Youcanexecute"SELECT"statementsagainstthespecialsqlite_mastertablejustlikeanyothertableinanSQLitedatabase.Forexample:
$sqlite3ex1
SQLliteversio3.3.10
Syötä".help"ohjeet
sqlite>select*fromsqlite_master;
tyyppi=taulukko
nimi=tbl1
tbl_name=tbl1
juurisivu=3
sql=createtabletbl1(onevarchar(10),twosmallint)
sqlite>
ButyoucannotexecuteDROPTABLE,UPDATE,INSERTorDELETEagainstthesqlite_mastertable.Thesqlite_mastertableisupdatedautomaticallyasyoucreateordroptablesandindicesfromthedatabase.Youcannotmakemanualchangestothesqlite_mastertable.
TheschemaforTEMPORARYtablesisnotstoredinthe"sqlite_master"tablesinceTEMPORARYtablesarenotvisibletoapplicationsotherthantheapplicationthatcreatedthetable.TheschemaforTEMPORARYtablesisstoredinanotherspecialtablenamed"sqlite_temp_master".The"sqlite_temp_master"tableistemporaryitself.
Specialcommandstosqlite3
Mostofthetime,sqlite3justreadslinesofinputandpassesthemontotheSQLitelibraryforexecution.Butifaninputlinebeginswithadot("."),thenthatlineisinterceptedandinterpretedbythesqlite3programitself.These"dotcommands"aretypicallyusedtochangetheoutputformatofqueries,ortoexecutecertainprepackagedquerystatements.
Käytettävissä olevienpistekomentojen luetteloiminen, voit syöttää".apua"milloin tahansa.Esimerkki:
sqlite>.help
.bailON|OFFLopeta virheen osumisen jälkeen.DefaultOFF
.databasesListnamesand-tiedostotliitetyistä tietokantoista
.dump?TABLE?...Pidä tietokanta SQL-tekstimuodossa
.echoON|OFFKytke komentodechoonoroff
.exitPoistu tästä ohjelmasta
.explainON|OFFTulostulotilasopiiSELITYSei tai pois.
.header(s)ON|OFFOta otsikoiden näyttö tai pois päältä
.helpNäytä tämä viesti
.importFILETABLETuo tietoja FILE-taulukosta
.indexesTABLEShownamesofallindicesTABLE
.loadFILE?ENTRY?Lataa laajennuskirjasto
.modeMODE?TABLE?SetoutputmodewhereMODEon yksi seuraavista:
csvComma-separatedvalues
sarake vasemmalle tasatut sarakkeet. (Katso leveys)
htmlHTML
insertSQLinsertstatements for TABLE
lineOnevalueperline
listValueseroteltu.separatorsstring
sarkaimet Sarkaimella erotetut arvot
tclTCLlistelements
.nullvalueSTRINGTulostaSTRINGNULLarvojen paikkaan
.outputFILENAMESendoutputtoFILENAME
.outputstdoutSendoutputtothescreen
.promptMAINCONTINUEVaihda vakiokehotteet
.quitPoistu tästä ohjelmasta
.readFILENAMEExecuteSQLinFILENAME
.schema?TABLE?NäytäCREATE-lausekkeet
.separatorSTRINGMuuta erotinta, jota käytetään ulostulotilassa ja tuonnissa
.showNäytä nykyiset arvot eri asetuksille
.tables?PATTERN?ListnamesoftablesmatchingaLIKEpattern
.timeoutMSTryopeninglockedtablesforMSmilliseconds
.widthNUMNUM...Aseta sarakkeenleveydet"sarake"-tilaan
sqlite>
ChangingOutputFormats
Sqlite3-ohjelma voi näyttäätuloksia kahdeksaan eri muotoon: "csv", "sarake", "html", "insert", "rivi", "välilehdet" ja "tcl".Voit käyttää.tila"pistekomentoa vaihtaaksesi näiden tulostusmuotojen välillä.
Thedefaultoutputmodeis"list".Inlistmode,eachrecordofaqueryresultiswrittenononelineofoutputandeachcolumnwithinthatrecordisseparatedbyaspecificseparatorstring.Thedefaultseparatorisapipesymbol("|").Listmodeisespeciallyusefulwhenyouaregoingtosendtheoutputofaquerytoanotherprogram(suchasAWK)foradditionalprocessing.
sqlite>.modelist
sqlite>select*fromtbl1;
hei|10
näkemiin|20
sqlite>
Voit käyttää".erotin"pistekomentoamuuttaaksesierottimenluettelotilan.Esimerkiksi muuttaaksesierottimenkomaandaspace,voit tehdä tämän:
sqlite>.separator","
sqlite>select*fromtbl1;
Hei, 10
hyvästi, 20
sqlite>
In"line"mode,eachcolumninarowofthedatabaseisshownonalinebyitself.Eachlineconsistsofthecolumnname,anequalsignandthecolumndata.Successiverecordsareseparatedbyablankline.Hereisanexampleoflinemodeoutput:
sqlite>.modeline
sqlite>select*fromtbl1;
one=hei
kaksi=10
one=näkemiin
kaksi=20
sqlite>
Saraketila, jokainen tietue näytetään ilman erillistä riviä sarakkeisiin kohdistettujen tietojen kanssa.Esimerkki:
sqlite>.modecolumn
sqlite>select*fromtbl1;
yksi kaksi
--------------------
hei10
näkemiin20
sqlite>
Oletusarvoisesti jokainen sarake on vähintään 10 merkkiä leveä.Tiedot, jotka sopivat sarakkeeseen katkaistu.Voit säätää sarakkeen leveyttä"width"-komennolla.Näin:
sqlite>.width126
sqlite>select*fromtbl1;
yksi kaksi
-------------------
hei10
näkemiin20
sqlite>
The".width"commandintheexampleabovesetsthewidthofthefirstcolumnto12andthewidthofthesecondcolumnto6.Allothercolumnwidthswereunaltered.Youcangivesasmanyargumentsto".width"asnecessarytospecifythewidthsofasmanycolumnsasareinyourqueryresults.
Ifyouspecifyacolumnawidthof0,thenthecolumnwidthisautomaticallyadjustedtobethemaximumofthreenumbers:10,thewidthoftheheader,andthewidthofthefirstrowofdata.Thismakesthecolumnwidthself-adjusting.Thedefaultwidthsettingforeverycolumnisthisauto-adjusting0value.
Thecolumnlabelsthatappearonthefirsttwolinesofoutputcanbeturnedonandoffusingthe".header"dotcommand.Intheexamplesabove,thecolumnlabelsareon.Toturnthemoffyoucoulddothis:
sqlite>.headeroff
sqlite>select*fromtbl1;
hei10
näkemiin20
sqlite>
Anotherusefuloutputmodeis"insert".Ininsertmode,theoutputisformattedtolooklikeSQLINSERTstatements.Youcanuseinsertmodetogeneratetextthatcanlaterbeusedtoinputdataintoadifferentdatabase.
Whenspecifyinginsertmode,youhavetogiveanextraargumentwhichisthenameofthetabletobeinsertedinto.Forexample:
sqlite>.modeinsertnew_table
sqlite>select*fromtbl1;
INSERTINTO'new_table'VALUES('hei',10);
INSERTINTO'new_table'VALUES('näkemiin',20);
sqlite>
Viimeinen ulostulotila on"html".Tässä tilassa sqlite3 kirjoittaa kyselyn tuloksetXHTML-taulukkona.Alku
Kirjoitustulos tiedostoon
Bydefault,sqlite3sendsqueryresultstostandardoutput.Youcanchangethisusingthe".output"command.Justputthenameofanoutputfileasanargumenttothe.outputcommandandallsubsequentqueryresultswillbewrittentothatfile.Use".outputstdout"tobeginwritingtostandardoutputagain.Forexample:
sqlite>.modelist
sqlite>.separator|
sqlite>.outputtest_file_1.txt
sqlite>select*fromtbl1;
sqlite>.exit
$cattest_file_1.txt
hei|10
näkemiin|20
$
Tietokantakaavion kysely
Thesqlite3programprovidesseveralconveniencecommandsthatareusefulforlookingattheschemaofthedatabase.Thereisnothingthatthesecommandsdothatcannotbedonebysomeothermeans.Thesecommandsareprovidedpurelyasashortcut.
Esimerkiksi nähdäksesi tietokannan taulukoiden luettelon, voit syöttää "taulukot".
sqlite>.taulukot
tbl1
tbl2
sqlite>
Tables"-komentoasetusluettelotilassa, kun suoritetaan seuraava kysely:
SELECTnameFROMsqlite_master
WHEREtypeIN('table','view')ANDnameNOTLIKE'sqlite_%'
YHTIÖN KAIKKI
SELECTnameFROMsqlite_temp_master
WHEREtypeIN('taulukko','näkymä')
TILAUS1
Itse asiassa, jos lähdekoodia sqlite3-ohjelmaan (löytyy lähdepuusta tiedostossarc/shell.c), löydät hakemiston juuri edellisestä kyselystä.
The".indexes"commandworksamanamantapainlistoimaanindeksejäerityisen taulukon.Indeksit"komentooottaa yhden argumentin,joka ontaulukonnimi,jolle indeksithalutaan.Viimeksi,mutta ei vähiten,onthe". Jos annat taulukolle nimen".skeemalle",sillä näkyyalkuperäinenCREATE-lause, jota käytettiin taulukon jakaikkiinindikaattoreihin.Meillä on:
sqlite>.schema
luo tablettibl1(onevarchar(10),twosmallint)
CREATETABLEtbl2(
f1varchar(30)primarykey,
f2text,
f3real
)
sqlite>.schematbl2
CREATETABLEtbl2(
f1varchar(30)primarykey,
f2text,
f3real
)
sqlite>
.schema"komento suorittaa saman asetusluettelotilan ja syöttää sitten seuraavan kyselyn:
SELECTsqlFROM
(SELECT*FROMsqlite_masterUNIONALL
SELECT*FROMsqlite_temp_master)
WHEREtype!='meta'
ORDERBYtbl_nimi,tyyppiDESC,nimi
Tai anna argumentti"skeemalle", koska haluat vain kaavion yhdelle pöydälle, kysely näyttää tältä:
SELECTsqlFROM
(SELECT*FROMsqlite_masterUNIONALL
SELECT*FROMsqlite_temp_master)
WHEREtype!='meta'ANDsqlNOTNULLANDnameNOTLIKE'sqlite_%'
ORDERBYsubstr(tyyppi,2,1),nimi
Voit toimittaa argumentin.schemacommandille. Jos teet niin, kysely näyttää tältä:
SELECTsqlFROM
(SELECT*FROMsqlite_masterUNIONALL
SELECT*FROMsqlite_temp_master)
WHEREtbl_nameLIKE'%s'
ANDtype!='meta'ANDsqlNOTNULLANDnameNOTLIKE'sqlite_%'
ORDERBYsubstr(tyyppi,2,1),nimi
Kyselyn "%s" korvataan argumentillasi. Tämän avulla voit tarkastella joidenkin tietokannan osien kaaviota.
sqlite>.schema%abc%
Alongthesesamelines,the".table"commandalsoacceptsapatternasitsfirstargument.Ifyougiveanargumenttothe.tablecommand,a"%"isbothappendedandprependedandaLIKEclauseisaddedtothequery.Thisallowsyoutolistonlythosetablesthatmatchaparticularpattern.
The".databases"commandshowsalistofalldatabasesopeninthecurrentconnection.Therewillalwaysbeatleast2.Thefirstoneis"main",theoriginaldatabaseopened.Thesecondis"temp",thedatabaseusedfortemporarytables.TheremaybeadditionaldatabaseslistedfordatabasesattachedusingtheATTACHstatement.Thefirstoutputcolumnisthenamethedatabaseisattachedwith,andthesecondcolumnisthefilenameoftheexternalfile.
sqlite>.tietokannat
ConvertingAnEntireDatabaseToAnASCIITextFile
Käytä".dump"-komentoa muuntaaksesi tietokannankoko sisällön yhdeksi ASCII-tekstitiedostoksi. Tämä tiedosto voidaan muuntaa takaisin tietokantaksi yhdistämällä se takaisin muotoonsqlite3.
Hyvä tapa tehdä arkistokopio tietokannasta on tämä:
$echo'.dump'|sqlite3ex1|gzip-c>ex1.dump.gz
Tämä luo tiedoston, jonka nimi onex1.dump.gzjoka sisältää kaiken, mitä sinun tarvitsee rakentaatietokannan uudelleenmuodostamiseen joskus tai muulla koneella. Luo tietokanta uudelleen kirjoittamalla:
$zcatex1.dump.gz|sqlite3ex2
ThetextformatispureSQLsoyoucanalsousethe.dumpcommandtoexportanSQLitedatabaseintootherpopularSQLdatabaseengines.Likethis:
$createdbex2
$sqlite3ex1.dump|psqlex2
OtherDotCommands
The".explain"dotcommandcanbeusedtosettheoutputmodeto"column"andtosetthecolumnwidthstovaluesthatarereasonableforlookingattheoutputofanEXPLAINcommand.TheEXPLAINcommandisanSQLite-specificSQLextensionthatisusefulfordebugging.IfanyregularSQLisprefacedbyEXPLAIN,thentheSQLcommandisparsedandanalyzedbutisnotexecuted.Instead,thesequenceofvirtualmachineinstructionsthatwouldhavebeenusedtoexecutetheSQLcommandarereturnedlikeaqueryresult.Forexample:
sqlite>.selitä
sqlite>selitä poistadefromtbl1wheretwo<20;
addropcodep1p2p3
------------------------------------------------ -----------------
0ListaAvaa00
1Avoin01tbl1
2Seuraava09
3Kenttä01
4Kokonaisluku200
5Ge02
6Key00
7ListWrite00
8Goto02
9Noop00
10ListRewind00
11ListRead014
12Poista00
13Goto011
14ListClose00
The".timeout"commandsetstheamountoftimethatthesqlite3programwillwaitforlockstoclearonfilesitistryingtoaccessbeforereturninganerror.Thedefaultvalueofthetimeoutiszerosothatanerrorisreturnedimmediatelyifanyneededdatabasetableorindexislocked.
Ja lopuksi mainitse".exit"-komento, joka aiheuttaa qlite3-ohjelman poistumiseen.
BerkeleyDB
Tekniset ominaisuudet:
1.BerkeleyDBisanopensourceembeddeddatabasemanagementsystemthatcanprovideTheprogramprovideshigh-performancedatamanagementservices.Toapplyit,programmersonlyneedtocallsomesimpleAPIstoaccessandmanagedata.(DoesnotuseSQLlanguage)
2.BerkeleyDB tarjoaa käytännöllisiä API-rajapintoja mille tahansa ohjelmointikielille, mukaan lukien C, C++, Java, Perl, Tcl, Python ja PHP. Kaikki tietokantaan liittyvät toiminnotsuoritetaan tasaisestiBerkeleyDB-toimintokirjastossa.
3.BerkeleyDBisportableandflexible,andcanrunonalmostallUNIXandLinuxsystemsandtheirvariants,Windowsoperatingsystemsandavarietyofembeddedreal-timeoperatingsystems.BerkeleyDBislinkedtotheapplication,andendusersgenerallydonotfeelthatthereisadatabasesystematall.
4.BerkeleyDBisscalable(Scalable),whichismanifestedinmanyaspects.TheDatabaselibraryitselfisverystreamlined(lessthan300KBoftextspace),butitcanmanagedatabasesupto256TBinsize.Itsupportshighconcurrency,thousandsofuserscanmanipulatethesamedatabaseatthesametime.BerkeleyDBcanrunonembeddedsystemswithstrictconstraintswithasmallenoughspacefootprint.
BerkeleyDBisbetterthanrelationaldatabasesandobject-orienteddatabasesinembeddedapplications.Therearetworeasonsforthis:
(1)BecausethedatabaselibraryisatthesameaddressastheapplicationRuninspace,sodatabaseoperationsdonotrequireinter-processcommunication.Thecostofprocesscommunicationbetweendifferentprocessesonamachineorbetweendifferentmachinesinanetworkismuchgreaterthanthecostoffunctioncalls;(2)becauseBerkeleyDBusesoneforalloperationsGroupAPIinterface,sothereisnoneedtoparseacertainquerylanguage,andthereisnoneedtogenerateanexecutionplan,whichgreatlyimprovestheoperatingefficiency.
DomesticembeddeddatabaseOpenBASELite
OpenBASELiteisanembeddeddatabaseproductdevelopedbyNeusoftGroupCo.,Ltd.Itisatypicallightweightdatabase.Thesizeofthecustomizeddatabaseenginescalesbetween250KBand600KB.Itcansupportmultipledesktopoperatingsystems,mainstreamembeddedsystemplatformsanddifferentprocessors.Asafull-featuredrelationaldatabasesystem,OpenBASELitesupportsstandardSQLsyntax,ACIDtransactionfeatures,backup/restoreandotherfunctions,providesstandardizeddevelopmentinterfacesJDBC,ODBC,andcancontinuetouserelationaldatabaseexperienceinanembeddedenvironment.Forapplicationdevelopment.OpenBASELiteprovidesamemorydatabaseoperatingmode,providinghigh-speeddataaccessandupdatecapabilities.
Tuotteen ominaisuudet
1.Completedatamanagementfunctions
OpenBASELiteembeddeddatabasehascompletedatamanagementfunctions,providingasubsetoftheSQL92standardSupport;providesupportforstandarddatatypesandBLOB/CLOBtypes;supportdatabaseintegritycontrol;havecompletedatamanagementcapabilitiesthatcanhandleGB-leveldata;andprovidespatialdatamanagementcapabilities.
2. Laajan käyttöympäristön monipuolisuus
OpenBASELiteembedded-tietokanta voi toimia Windows2000/2003/XP/Vista/Win7-, WindowsMobile5- ja 6-, WindowsCE-, Linux-, EmbeddedLinux-, VxWorks-, Symbian-, Android- ja muissa käyttöjärjestelmissä.
3.Tinycore-kernel
OpenBASELiteembedded-tietokanta sisältää mikroydinominaisuuden, jota voidaan mukauttaa ja räätälöidä äänisäteiden mukaan, ja ytimen koko on skaalattavissa välillä 250 kt ja 600 kt.
4.Truezeromanagement
Tietoja ei tarvitse määrittää käyttämällä OpenBASEL-kohteen upotettua tietokantaa, ja "zeromanagement" on otettu käyttöön mobiilipäätesovelluksissa.
5.Excellentprocessingperformance
OpenBASELiteembeddeddatabasecanbeusedasamemorydatabasetoachievehigh-speeddataaccessandupdate,andtheprocessingtimeofasingledatadoesnotexceed15us;Intermsofconcurrentprocessingperformance,itprovidesconcurrentaccesscontroloflibrary-levellocksandtable-levellocks,whichimprovestheprocessingperformanceofconcurrentaccesstothedatabasebyprocessesandmultiplethreads.
6.Sufficientsecurityguarantee
OpenBASELiteembeddeddatabasesupportsuseridentityauthenticationandautonomousaccesscontrolofdatabaseobjects,whichcaneffectivelypreventillegalaccesstouserdata;support128-bitAESstorageencryptiontoensurethesecurityofdatabasefiles.
7.Fastfailurerecovery
ProvideslogandfailurerecoverymechanismstoeffectivelyguaranteetheACIDcharacteristicsofthetransaction.Inaddition,italsoprovidesonlinehotbackupandmaster-slavereplicationofthedatabase.,Sothatuserscansimplyandquicklyimprovethereliabilityoftheapplicationsystem.
8.Standardikäyttöliittymä
OpenBASELiteembedded-tietokanta tarjoaa CAPI-liitännän ja JDBC/ODBC-standardin käyttöliittymän sulautettujen sovellusten kehittämiseen.
9.Richpracticalt-työkalut
OpenBASELite tarjoaa runsaasti käytännöllisiä työkaluja tietokannanhallintaan, mukaan lukien tietokannan graafisen hallintatyökalut, tietokannan rakennustyökalut, kyselytyökalut, varmuuskopiointi- ja palautustyökalut, salaustyökalujen tuonti-, salaustyökalut ja tietokantojen purku.
Introductiontoembeddeddatabasesthatcanbeusedformobiledevelopment
Embeddeddatabasesarelightweight,independentlibraries,noservercomponents,nomanagement,asmallcodesize,andLimitedresourcerequirements.Therearecurrentlyseveralembeddeddatabasesthatyoucanuseinmobileapplications.Let'stakealookatthesemostpopulardatabases.
Tietokanta | Tietotyypin tallennus | Lisenssi | Tukialusta |
---|---|---|---|
BerkeleyDB | relaatio,objektit,avainarvoparit,asiakirjat | AGPL3.0 | Android, iOS |
CouchbaseLite | asiakirjoja | Apache2.0 | Android, iOS |
LevelDB | avainarvoparit | UusiBSD | Android, iOS |
SQLite | suhteellinen | PublicDomain | Android, iOS, WindowsPhone, Blackberry |
UnQLite | avainarvoparit, asiakirjat | BSD2-lauseke | Android, iOS, WindowsPhone |