Sulautettu tietokanta

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

koodi

insertSQLinsertstatements for TABLE

lineOnevalueperline

listValues​​eroteltu.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

ja loppua
ei ole kirjoitettu, mutta kaikki välissä olevats,s jasare.htmltulostustila on näkinyt olevan hyödyllinenCGI:lle.

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

Related Articles
TOP