Úvod do vestavěné databáze
Ve vestavěných systémech má provoz databáze charakteristický časový limit. Zde se systém databáze aplikovaný na vestavěný systém nazývá vložený databázový systém nebo vložený databázový systém v reálném čase (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):Toto je aplikační serverProgress(r)EnterpriseRDBMS(tm), který dokáže nasadit sdílené aplikační součásti v heterogenním prostředí: Poskytuje škálovatelné řešení úložiště pro nejnáročnější aplikace, které potřebují podporu velkých a rozsáhlých databází nebo hardwarových.
----ProgressVersion8.3 zaváděcí produkt pro RedHat6.0Linuxi je nyní plně k dispozici.ProgressspuštěnaProgressVersion9,Progress(r)WebSpeed(r)Version3,Progress(r)Apptivity(tm) a Progress(r)SonicdeployM
----QAD, světový dodavatel ERP automobilového průmyslu, podporuje nejnovější verzi PROGRESS.
SQLite
Hlavní funkce odlehčené databázeSQLite:
1.Podpory, žádná konfigurace, žádná instalace a žádný správce;
2.SupportmostSQL92;
3.Acompletedatabaseisstoredinafileonthedisk,thesamedatabasefilecanbeusedondifferentmachines,andthemaximumsupportdatabaseis2T,CharacterandBLOBsupportisonlylimitedtoavailablememory;
4.Celý systém je méně než 30 000 řádků kódu, méně než 250 kB paměťové stopy (gcc), většina aplikací je větší než aktuální běžný klient/databáze na straně serveru je bez dalších závislostí.
5. Zdrojový kód je otevřený, 95 % kódu má dobré poznámky a jednoduché a snadno použitelné API. Oficiální verze je dodávána s TCL.
Empress(komerční databáze)
Funkce fáze vývoje:
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.
Technické výhody:
1. Struktura mikrojádra, zabírající jen malé množství paměti, zvláště vhodné pro kompaktní design
2.Pracujte nepřetržitě 24 hodin denně, 7 dní v týdnu, bez jakýchkoli dalších operací a bez údržby
3.Rozhraní CAPI na úrovni jádra pro maximalizaci provozní rychlosti
4. Vysoce flexibilní rozhraní SQL
5.Vynikající schopnost obnovení napájení
6. Silný transakční a západkový mechanismus
7. Podpora SCSI, RAID, IDE, RAM, CD-RW, DVD-ROM, CF a dalších paměťových médií
8.SupportUnicode
9.Motor lze načíst na disk a do paměti
eXtremeDB
CharakteristikaXtremeDB:
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. Předvídatelná správa dat
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.Plně podporuje standard SQL92 a většinu standardních funkcí SQL-99.
4.Richdevelopmenttoolsupport,mostofthecomponentsbasedonInterbasecanbedirectlyusedinFirebird.
5.Podporují všechny funkce relačních databází, jako jsou transakce, uložené procedury a spouštěče.
6.Můžete napsat své vlastní funkce rozšíření (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.
SQLitedatabaseexperiment
Výukové zdroje
sqliteChinesewebsite:programmingúvod,opensourceforum
oficiální web sqlite: stažení zdrojového kódu, Začínáme, reference C/C++, různé další dokumenty, fóra pro vývojáře atd.
Nainstalujte a spusťte SQLite na hostiteli Linux
Stáhněte si soubor sqlite-amalgamation-3.5.9.tar.gz
Adresář Uploadsqlite-amalgamation-3.5.9.tar.gztomike
Unzipsqlite-amalgamation-3.5.9.tar.gz
tarzxvfsqlite-amalgamation-3.5.9.tar.gz
Vstup do adresářeqlite:
cdsqlite-amalgamation-3.5.9
Konfigurace
./configure
Zkompilujte
p>vytvořit
Instalace
proveďte instalaci
Následující soubory jsou většinou nainstalovány:
/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.1 Použijte hostitelský příkazový řádek a vyzkoušejte funkce sqlite, viz příloha1
3.2.2Napište kód aplikačního programu, který používá databázi, takto:
staticintcallback(void*NotUsed,intargc,char**argv,char**azColName){
inti;
for(i=0;i
printf("%s=%s\n",azColName[i],argv[i]?argv[i]:"NULL");
}
printf("\n");
návrat0;
}
intmain(intargc,char**argv){
sqlite3*db;
char*zErrMsg=0;
intrc;
if(argc!=3){
fprintf(stderr,"Usage:%sDATABASESQL-STATEMENT\n",argv[0]);
exit(1);
}
rc=sqlite3_open(argv[1],&db);
if(rc){
fprintf(stderr,"Can'topendatabase:%s\n",sqlite3_errmsg(db));
sqlite3_close(db);
exit(1);
}
rc=sqlite3_exec(db,argv[2],zpětné volání,0,&zErrMsg);
if(rc!=SQLITE_OK){
fprintf(stderr,"SQLerror:%s\n",zErrMsg);
sqlite3_free(zErrMsg);
}
sqlite3_close(db);
návrat0;
}
(1)Vytvořte souborqlite_test.cs obsahem uvedeným výše.Putsqlite_test.cSoubor je umístěn do adresáře mike.
(2)Compilethesqlite_test.cfile:
gcc-I/usr/local/include-L/usr/local/lib-osqlite_testsqlite_test.c-lsqlite3
p>Aplikace, která generuje sqlite_test.
GccVysvětlení parametru příkazového řádku:
-Lřed
Whencompiling,searchThepathofthelibrary.Forexample,youcanuseittomakeacatalogforyourownlibrary,otherwisethecompilerwillonlyfinditinthecatalogofthestandardlibrary.Thisdiristhenameofthedirectory.
-lknihovna
Upřesněte knihovnu použitou při kompilaci
-Jářed
Když použijete #include"soubor", gcc/g++ nejprve vyhledá soubor záhlaví, který jste vytvořili v aktuálním adresáři. Pokud jej nenaleznete, vrátí se do výchozího adresáře souborů záhlaví, kde najdete.
For#include,gcc/g++bude hledat v adresáři nastaveném-I,searchIfnot,potom hledatve výchozím adresáři souborů hlavičky systému
(3)Testthesqlite_testprogram
Testovací program akceptuje dva parametry: prvním parametrem je název databázového souboru, Druhým parametrem je příkaz SQL, který má být proveden. Existují čtyři hlavní místa související s SQLite3API v programu:sqlite3_open()online27,sqlite3_exec()online33,se3)na 3řádcích 3_clů SQL. položka3.
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;"
name=cyc
číslo=1
jméno=dzy
číslo=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.
Vyvíjejte vestavěný databázový program založený na qlite
3.3.1Migrujte SQLite na vývojovou desku a odstraňte předchozí adresář sqlite-amalgamation-3.5.9
Unzipsqlite-amalgamation-3.5.9.tar.gz
tarzxvfsqlite-amalgamation-3.5.9.tar.gz
Vstupte do adresáře thesqlite
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.
Zkompilujte
vyrobit
Instalovat
proveďte instalaci
Enter/home/sqlite_installtowatch,Youcanfindthattherearethreedirectories,namelyinclude,lib,bin.Theheaderfilesrequiredforwritingsqlitedatabaseapplications,libraryfunctionsrequiredforapplicationcompilationandruntime,andsqlitecommandlineprogramsthatcanberunonthearmlinuxsystemarerespectivelystored.
3.3.2WritingandcompilingapplicationsusingSQLitefunctionlibraryWeusethecross-developmenttoolchaintorecompiletheprogramsqlite_test.cwrittenin3.2.2sothatitcanrunonthedevelopmentboard.
Zkompilujte zdrojový program:
Confirmthatsqlite_test.cisinthemikedirectoryandenterthemikedirectory
arm-linux-gcc-I./sqlite_install/include/-L./sqlite_install/lib/-osqlite_testsqlite_test.c-lsqlite3
Po spuštění vygenerujte soubor sqlite_test thearmversions
Zkontrolujte atribut testovacího souboru thesqlite
test_filesqlite
Copythesqlite_testfiletoadirectoryoftherootfilesystem,andcopyallthefilesinthe/home/mike/sqlite_install/libdirectorytotherootofthelibraryfunctionsneededforsqlite_testtorunUnderthelibdirectoryofthefiledirectory,recreatetherootfilesystemimageincramfsoryaffsformatandburnittotheexperimentalsystem.
Po spuštění systému můžete testsqlite_testin testovat stejně jako v 3.2.Příloha1sqlite3:Program pro přístup k příkazovému řádku pro databázi SQLiteKnihovna SQLite zahrnuje jednoduchý nástroj příkazového řádku s názvemsqlitesqlitesqlitesqlitesqlitesqlitesqlitesqlitesqliteumožňuje vstoupit do tohoto příkazového řádku a jak jej v SQLite 3.
Začínáme
Chcete-li spustit programsqlite3, zadejte "sqlite3" následovaný názvem souboru, který obsahuje databázi SQLite. Pokud soubor neexistuje, automaticky se vytvoří nový. Programsqlite3vyzve k zadání SQL.
Například pro vytvoření nové databáze SQLite s názvem "ex1" s jednou tabulkou s názvem "tbl1", můžete udělat toto:
$sqlite3ex1
SQLiteversion3.3.10
Pro pokyny zadejte "help".
sqlite>createtabletbl1(onevarchar(10),twosmallint);
sqlite>insertintotbl1values('hello!',10);
sqlite>insertintotbl1values('sbohem',20);
sqlite>select*fromtbl1;
ahoj!|10
sbohem|20
sqlite>
Program Qlite3 můžete ukončit zadáním znaku konce souboru (obvykle Control-D) nebo znaku přerušení (obvykle Control-C).
MakesureyoutypeasemicolonattheendofeachSQLcommand!Thesqlite3programlooksforasemicolontoknowwhenyourSQLcommandiscomplete.Ifyouomitthesemicolon,sqlite3willgiveyouacontinuationpromptandwaitforyoutoentermoretexttobeaddedtothecurrentSQLcommand.ThisfeatureallowsyoutoenterSQLcommandsthatspanmultiplelines.Forexample:
sqlite>CREATETABLEtbl2(
...>f1varchar(30)primarykey,
...>f2text,
...>f3real
...>);
sqlite>
Strana: Dotazování na tabulku SQLITE_MASTER
ThedatabaseschemainanSQLitedatabaseisstoredinaspecialtablenamed"sqlite_master".Youcanexecute"SELECT"statementsagainstthespecialsqlite_mastertablejustlikeanyothertableinanSQLitedatabase.Forexample:
$sqlite3ex1
SQlitevresion3.3.10
Pro pokyny zadejte "help".
sqlite>select*fromsqlite_master;
type=table
jméno=tbl1
tbl_name=tbl1
rootpage=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.
Speciální příkazstosqlite3
Mostofthetime,sqlite3justreadslinesofinputandpassesthemontotheSQLitelibraryforexecution.Butifaninputlinebeginswithadot("."),thenthatlineisinterceptedandinterpretedbythesqlite3programitself.These"dotcommands"aretypicallyusedtochangetheoutputformatofqueries,ortoexecutecertainprepackagedquerystatements.
Pro seznam dostupných příkazů můžete zadat "help" kdykoliv.Příklad:
sqlite>.help
.bailON|OFFStop after zásahuerror.DefaultOFF
.databasesSeznamnázvůasouborůpřipojenýchdatabází
.dump?TABLE?...Vypište databázi do textového formátu SQL
.echoON|OFFTurncommandechoonoroff
.exitExitthisprogram
.explainON|OFFRežim výstupu je vhodný pro EXPLAINonoroff.
.header(y) ON|OFFZapnutí zobrazení záhlaví nebo vypnutí
.helpShowthismessage
.importFILETABLEImportovat data ze souboru FILEdoTABLE
.indicesTABLEShownamesofallindicesonTABLE
.loadFILE?ENTRY?Loadanextensionlibrary
.modeMODE?TABLE?SetoutputmodewhereMODEisoneof:
csvComma-separatedvalues
columnSloupce zarovnané doleva. (Viz.šířka)
htmlHTML
Výsledky zápisu do souboru
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
ahoj|10
sbohem|20
$
Dotaz na schéma databáze
Thesqlite3programprovidesseveralconveniencecommandsthatareusefulforlookingattheschemaofthedatabase.Thereisnothingthatthesecommandsdothatcannotbedonebysomeothermeans.Thesecommandsareprovidedpurelyasashortcut.
Například, chcete-li zobrazit seznam tabulek v databázi, můžete zadat "tabulky".
sqlite>.tables
tbl1
tbl2
sqlite>
Příkaz ".tables" se podobá režimu nastavení seznamu a spustí se následující dotaz:
SELECTnameFROMsqlite_master
WHEREtypeIN('table','view')ANDnameNOTLIKE'sqlite_%'
UNIONALL
SELECTnameFROMsqlite_temp_master
WHEREtypeIN('table','view')
OBJEDNÁVKA1
Ve skutečnosti, když se podíváte na zdrojový kód do programu sqlite3 (najdete ho ve zdrojovém stromě v souborechrc/shell.c), budete indexovat výše uvedený dotaz.
Příkaz".indexy"funguje podobně jako seznam všech indexůpro konkrétní tabulku.Příkaz".indexy"používá jeden argument, který je názvem tabulky,pro kterou jsoupožadovány indexy.Poslední,alenejméně,je".schéma"příkaz.a.schéma. schéma",ukáže původní prohlášení CREATE použité k vytvoření této tabulky a všech indexů. Máme:
sqlite>.schéma
createtabletbl1(onevarchar(10),twosmallint)
CREATETABLEtbl2(
f1varchar(30)primarykey,
f2text,
f3real
)
sqlite>.schematbl2
CREATETABLEtbl2(
f1varchar(30)primarykey,
f2text,
f3real
)
sqlite>
Příkaz ".schema" provede totéž v režimu seznamu aktiv a poté zadá následující dotaz:
SELECTsqlFROM
(SELECT*FROMsqlite_masterUNIONALL
SELECT*FROMsqlite_temp_master)
WHEREtype!='meta'
ORDERBYtbl_name,typeDESC,name
Nebo, pokud uvedete argument pro "schéma", protože chcete pouze toto schéma, aby bylo možné, dotaz vypadá takto:
SELECTsqlFROM
(SELECT*FROMsqlite_masterUNIONALL
SELECT*FROMsqlite_temp_master)
WHEREtype!='meta'ANDsqlNOTNULLANDnameNOTLIKE'sqlite_%'
ORDERBYsubstr(typ,2,1),jméno
Můžete dodat argument k příkazu.schema.Pokud ano, bude dotaz vypadat takto:
SELECTsqlFROM
(SELECT*FROMsqlite_masterUNIONALL
SELECT*FROMsqlite_temp_master)
WHEREtbl_nameLIKE'%s'
ANDtype!='meta'ANDsqlNOTNULLANDnameNOTLIKE'sqlite_%'
ORDERBYsubstr(typ,2,1),jméno
„%s“ v dotazu je nahrazeno vaším argumentem.To vám umožní zobrazit schéma pro určitou podmnožinu databáze.
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>.databáze
Převod celé databáze na textový soubor AnASCII
Pomocí příkazu "dump" převeďte celý obsah databáze do jediného textového souboru ASCII. Tento soubor lze převést zpět do databáze pomocí pipetování zpět do sqlite3.
Dobrý způsob, jak vytvořit archivní kopii databáze je toto:
$echo'.dump'|sqlite3ex1|gzip-c>ex1.dump.gz
Tím se vygeneruje soubor s názvemex1.dump.gz, který obsahuje vše, co potřebujete k sestavení databáze v pozdějším čase nebo na jiném stroji. Chcete-li databázi zrekonstruovat, zadejte:
$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>.explain
sqlite>explaindeletefromtbl1wheretwo<20;
addropcodep1p2p3
----------------------------------------------- -----------------
0ListOpen00
1Otevřete01tbl1
2Další09
3Pole01
4Integer200
5Ge02
6Key00
7ListWrite00
8 Přejděte na 02
9Noop00
10ListRewind00
11ListRead014
12Smazat00
13 Přejít na011
14ListClose00
The".timeout"commandsetstheamountoftimethatthesqlite3programwillwaitforlockstoclearonfilesitistryingtoaccessbeforereturninganerror.Thedefaultvalueofthetimeoutiszerosothatanerrorisreturnedimmediatelyifanyneededdatabasetableorindexislocked.
A nakonec zmiňte příkaz".exit", který způsobí ukončení programuqlite3.
BerkeleyDB
Technické vlastnosti:
1.BerkeleyDBisanopensourceembeddeddatabasemanagementsystemthatcanprovideTheprogramprovideshigh-performancedatamanagementservices.Toapplyit,programmersonlyneedtocallsomesimpleAPIstoaccessandmanagedata.(DoesnotuseSQLlanguage)
2.BerkeleyDB poskytuje praktická rozhraní API pro všechny programovací jazyky, včetně C, C++, Java, Perl, Tcl, Python a PHP. Všechny operace související s databází jsou prováděny jednotně pomocí knihovny funkcí BerkeleyDB.
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.
Vlastnosti produktu
1.Completedatamanagementfunctions
OpenBASELiteembeddeddatabasehascompletedatamanagementfunctions,providingasubsetoftheSQL92standardSupport;providesupportforstandarddatatypesandBLOB/CLOBtypes;supportdatabaseintegritycontrol;havecompletedatamanagementcapabilitiesthatcanhandleGB-leveldata;andprovidespatialdatamanagementcapabilities.
2. Široká všestrannost platformy
Vložená databáze OpenBASELite může běžet na platformách Windows 2000/2003/XP/Vista/Win7,WindowsMobile5&6,WindowsCE,Linux,EmbeddedLinux,VxWorks,Symbian,Android a další platformy operačního systému.
3.Tinycorekernel
Otevřete vestavěnou databázi BASELite obsahuje funkci mikrojádra, kterou lze přizpůsobit a upravit podle tónů a velikost jádra lze škálovat mezi 250 kB a 600 kB.
4.Truezeromagement
Není potřeba konfigurovat data na základě použití vložené databáze OpenBASEL a "zeromagement" je implementován v aplikacích mobilních terminálů.
5.Excellentprocessingperformance
OpenBASELiteembeddeddatabasecanbeusedasamemorydatabasetoachievehigh-speeddataaccessandupdate,andtheprocessingtimeofasingledatadoesnotexceed15us;Intermsofconcurrentprocessingperformance,itprovidesconcurrentaccesscontroloflibrary-levellocksandtable-levellocks,whichimprovestheprocessingperformanceofconcurrentaccesstothedatabasebyprocessesandmultiplethreads.
6.Sufficientsecurityguarantee
OpenBASELiteembeddeddatabasesupportsuseridentityauthenticationandautonomousaccesscontrolofdatabaseobjects,whichcaneffectivelypreventillegalaccesstouserdata;support128-bitAESstorageencryptiontoensurethesecurityofdatabasefiles.
7.Fastfailurerecovery
ProvideslogandfailurerecoverymechanismstoeffectivelyguaranteetheACIDcharacteristicsofthetransaction.Inaddition,italsoprovidesonlinehotbackupandmaster-slavereplicationofthedatabase.,Sothatuserscansimplyandquicklyimprovethereliabilityoftheapplicationsystem.
8. Standardní přístupové rozhraní
Vložená databáze OpenBASEL poskytuje rozhraní CAPI a standardní přístupové rozhraní JDBC/ODBC pro vývoj vložených aplikací.
9.Richpracticaltools
OpenBASELite poskytuje velké množství praktických nástrojů pro správu databází, včetně nástrojů pro správu databází, grafiky, nástrojů pro vytváření databází, nástrojů pro dotazy, nástrojů pro zálohování a obnovu, nástrojů pro import, export a nástroje pro šifrování a dešifrování databází atd.
Introductiontoembeddeddatabasesthatcanbeusedformobiledevelopment
Embeddeddatabasesarelightweight,independentlibraries,noservercomponents,nomanagement,asmallcodesize,andLimitedresourcerequirements.Therearecurrentlyseveralembeddeddatabasesthatyoucanuseinmobileapplications.Let'stakealookatthesemostpopulardatabases.
Databáze | Ukládání datových typů | Licence | Platforma podpory |
---|---|---|---|
BerkeleyDB | relační,objekty,páry klíč–hodnota,dokumenty | AGPL3.0 | Android,iOS |
CouchbaseLite | dokumenty | Apache2.0 | Android,iOS |
ÚroveňDB | páry klíč–hodnota | Nové BSD | Android,iOS |
SQLite | vztahové | Veřejná doména | Android,iOS,WindowsPhone,Blackberry |
UnQLite | páry klíč–hodnota, dokumenty | klauzule BSD2 | Android,iOS,WindowsPhone |