Vestavěná databáze

Ú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

code

insertSQLinsertstatementsforTABLE

lineOnevalueperline

listValues​​delimitedby.separatorstring

tabsTab-separatedvalues

tclTCLlistelements

.nullvalueSTRINGPrintSTRINGnamísto hodnot NULL

.outputFILENAMESendoutputtoFILENAME

.outputstdoutOdeslat výstup na obrazovku

.promptMAINCONTINUERnahraďte standardní výzvy

.quitExitthisprogram

.readFILENAMEExecuteSQLinFILENAME

.schema?TABLE?Ukažte prohlášení CREATE

.separatorSTRINGZměňteseparatorpoužitývýstupnímrežimema.importem

.showZobrazí aktuální hodnoty​​pro různá nastavení

.tables?PATTERN?ListnamesoftablespatingaLIKEpattern

.timeoutMSTryopeninglockedtablesforMSmilliseconds

.widthNUMNUM...Nastavit šířku sloupce pro režim "sloupec".

sqlite>

ChangingOutputFormats

Program Sqlite3 je schopen zobrazit výsledky dotazů v osmi různých formátech: "csv", "sloupce", html","insert", "line", "tabs" a "tcl".Pro přepínání mezi těmito výstupními formáty můžete použít "režim" dotcommand.

Thedefaultoutputmodeis"list".Inlistmode,eachrecordofaqueryresultiswrittenononelineofoutputandeachcolumnwithinthatrecordisseparatedbyaspecificseparatorstring.Thedefaultseparatorisapipesymbol("|").Listmodeisespeciallyusefulwhenyouaregoingtosendtheoutputofaquerytoanotherprogram(suchasAWK)foradditionalprocessing.

sqlite>.modelist

sqlite>select*fromtbl1;

ahoj|10

sbohem|20

sqlite>

Pro změnu oddělovače v režimu seznamu můžete použít tečkový příkaz "separator". Chcete-li například změnit oddělovač na příkaz a mezeru, můžete provést toto:

sqlite>.separator","

sqlite>select*fromtbl1;

Dobrý den, 10

Sbohem, 20

sqlite>

In"line"mode,eachcolumninarowofthedatabaseisshownonalinebyitself.Eachlineconsistsofthecolumnname,anequalsignandthecolumndata.Successiverecordsareseparatedbyablankline.Hereisanexampleoflinemodeoutput:

sqlite>.modeline

sqlite>select*fromtbl1;

jeden=ahoj

dva=10

jeden=sbohem

dva=20

sqlite>

Režim bez sloupců, každý záznam nezobrazuje samostatný řádek s daty zarovnanými ve sloupcích. Příklad:

sqlite>.modecolumn

sqlite>select*fromtbl1;

jedna dvě

--------------------

ahoj10

sbohem20

sqlite>

Ve výchozím nastavení má každý sloupec šířku alespoň 10 znaků. Data, která jsou široká, aby se vešla do uspořádaného sloupce. Šířku sloupce můžete upravit pomocí příkazu.width.Takto:

sqlite>.width126

sqlite>select*fromtbl1;

jedna dvě

-------------------

ahoj10

sbohem20

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;

ahoj10

sbohem20

sqlite>

Anotherusefuloutputmodeis"insert".Ininsertmode,theoutputisformattedtolooklikeSQLINSERTstatements.Youcanuseinsertmodetogeneratetextthatcanlaterbeusedtoinputdataintoadifferentdatabase.

Whenspecifyinginsertmode,youhavetogiveanextraargumentwhichisthenameofthetabletobeinsertedinto.Forexample:

sqlite>.modeinsertnew_table

sqlite>select*fromtbl1;

INSERTINTO'new_table'VALUES('ahoj',10);

INSERTINTO'new_table'VALUES('sbohem',20);

sqlite>

Poslední výstupní režim je"html".V tomto režimu sqlite3zapisujevýsledkydotazuv tabulce XHTML.Začátek

akoncovka
nejsou zapsány,ale všechny zasahující,asare.htmlRežim výstupu je považován za užitečný pro CGI.

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

Související články
Copyright © 2023 techintroduce.com. All rights reserved.