⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sysreq.html

📁 sqlite的帮助文档
💻 HTML
📖 第 1 页 / 共 3 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><title>SQLite System Requirements</title><style type="text/css">body {    margin: auto;    font-family: "Verdana" "sans-serif";    padding: 8px 1%;}a { color: #45735f }a:visited { color: #734559 }.logo { position:absolute; margin:3px; }.tagline {  float:right;  text-align:right;  font-style:italic;  width:240px;  margin:12px;  margin-top:58px;}.toolbar {  font-variant: small-caps;  text-align: center;  line-height: 1.6em;  margin: 0;  padding:1px 8px;}.toolbar a { color: white; text-decoration: none; padding: 6px 12px; }.toolbar a:visited { color: white; }.toolbar a:hover { color: #80a796; background: white; }.content    { margin: 5%; }.content dt { font-weight:bold; }.content dd { margin-bottom: 25px; margin-left:20%; }.content ul { padding:0px; padding-left: 15px; margin:0px; }/* rounded corners */.se  { background: url(images/se.png) 100% 100% no-repeat #80a796}.sw  { background: url(images/sw.png) 0% 100% no-repeat }.ne  { background: url(images/ne.png) 100% 0% no-repeat }.nw  { background: url(images/nw.png) 0% 0% no-repeat }</style><meta http-equiv="content-type" content="text/html; charset=UTF-8">  </head><body><div><!-- container div to satisfy validator --><a href="index.html"><img class="logo" src="images/SQLite.gif" alt="SQLite Logo" border="0"></a><div><!-- IE hack to prevent disappearing logo--></div><div class="tagline">Small. Fast. Reliable.<br>Choose any three.</div><table width=100% style="clear:both"><tr><td>  <div class="se"><div class="sw"><div class="ne"><div class="nw">  <div class="toolbar">    <a href="about.html">About</a>    <a href="sitemap.html">Sitemap</a>    <a href="docs.html">Documentation</a>    <a href="download.html">Download</a>    <a href="copyright.html">License</a>    <a href="news.html">News</a>    <a href="http://www.sqlite.org/cvstrac/index">Developers</a>    <a href="support.html">Support</a>  </div></div></div></div></div></td></tr></table>  <h1>System Requirements For SQLite</h1><p>This document outlines the high-level objectives of the SQLitelibrary.All of the features and capabilities of SQLite can be traced backto one of the requirements specified here.</p><p>SQLite is not a complete system and so the requirementsprovided by this document are not system requirements in thestrict sense.  Perhaps "sub-system requirements" would be a betterterm, since SQLite is always a sub-component of a larger system.</p><p>This document is targeted primarily at developers who areworking within a waterfall development model that uses detailedrequirements written with the modal auxiliary verb "shall".  However, this document is also useful as a general-purpose high-level description of SQLite for developers who are not working underdifferent development paradigms.</p><h2>1.0 SQLite is a translator from SQL into low-level disk I/O</h2><a name="S10000"></a><p>  SQLite is an SQL database engine.  And the fundamental task of  every SQL database engine it to translate the abstract SQL statements  readily understood by humans into sequences of I/O operations readily  understood by computer hardware.  This requirement expresses the  essense of SQLite.</p><blockquote><b>S10000:</b>  The SQLite library shall translate high-level SQL statements into  low-level I/O calls to persistent storage.</blockquote><a name="S10100"></a><p>  SQL is one of the worlds most widely known programming languages,  but it is also one of the most ill-defined.  There are various SQL  standards documents available.  However the SQL standards documents are   obtuse to the point of being incomprehensible.  And the standards   allow for so much "implementation defined" behavior that there exist  two SQL database engines understand exactly the same language.</p>    <p>SQLite does not attempt to obtain strict compliance with any  one of the various SQL standards.  Instead, SQLite tries to be as compatible as possible with other SQL  database engines.  SQLite attempts to operate on the principle of  least surprise.  That is to say, experienced SQL programmers should  find SQLite's dialect intuitive and natural.</p>    <p>SQLite may omit some obscure features of SQLite.  And the SQL  dialect that SQLite understands might contain some enhancements not  found in some standards documents.  Nevertheless, applications  written for other SQL database engines should be portable to SQLite  with little to no change.  And programmers writing code for SQLite  should not encounter anything unexpected.</p><blockquote><b>S10100:</b>  The SQLite library shall accepts a well-defined dialect of SQL  that conforms to published SQL standards.</blockquote><a name="S10110"></a><p>  SQLite is able to hold content in various datatypes and sizes.</p><blockquote><b>S10110:</b>  The SQLite library shall support BLOB, CLOB, integer, and floating-point  datatypes.</blockquote><a name="S10120"></a><p>  SQLite handles NULLs in accordance with SQL standards.  In cases where  published standards are ambiguous, SQLite will follow the practice of  other popular database engines.</p><blockquote><b>S10120:</b>  The SQLite library shall implement the standard SQL interpretation  of NULL values.</blockquote><a name="S10200"></a><p>  Most other database  engines implement a client/server model in which a small client library  is linked with the application and the client communicates with a separate  server process using interprocess communication (IPC).  SQLite avoids  the complication of having a separate server process by doing direct  I/O directly to the underlying filesystem.</p><blockquote><b>S10200:</b>    The SQLite library shall communicate directly with database files  in persistent storage.</blockquote><a name="S10300"></a><p>  In the database world, "ACID" is an acronym for Atomic, Consistent,  Isolated, and Durable.  Atomic means that a change to the database  happens either entirely or not at all.  Consistent means that if the  database file is well-formed before the start of a transaction then  it is guaranteed to be well-formed after the transaction commits.    Isolated means that when two or more threads are  processes are working with the same database, uncommitted changes   made by one are not visible to the other.  Durable means that once  a transaction commits, it stays committed even if there is a subsequent  software crash or power failure.</p><blockquote><b>S10300:</b>  The SQLite library shall implement ACID transactions.</blockquote><a name="S10500"></a><p>  An operating system crash or an unexpected power loss can  sometimes damage  the underlying persistent storage in ways that no software can defend  against.  (For example, the content of a disk drive might be completely  erased and become unrecoverable.)  Nevertheless, software can take steps to defend against the kinds  of damage that typically occurs following operating system crashes and   power failures.  The usual damage is that some writes are missing  or incomplete and that writes have occurred out of order.  We say  that software is "robust" if it defines against the common kinds of  damage seen following an operating system crash or power loss.</p></p><blockquote><b>S10500:</b>  The SQLite library shall implement transactions that are robust  across application crashes, operating-system crashes, and power  failures.</blockquote><a name="S10600"></a><p>  Many applications benefit from being about to access multiple  database file using the same database connection, so that   information can be transfered from from one database to another   atomically, or so that queries can join data across multiple  databases.</p><blockquote><b>S10600:</b>    The SQLite library shall support simultaneous access to multiple  database files on the same database connection.</blockquote><a name="S10700"></a><p>  A database is of little practical use if one is unable to obtain  information from the database.  Hence:</p><blockquote><b>S10700:</b>  The SQLite library shall provide interfaces that allow the application  to obtain the status and results of SQL operations.</blockquote><h2>2.0 SQLite is designed to be extensible by the application</h2><a name="S20000"></a><p>  SQLite is intended to be an embedded database that functions well  in resource-limited systems.  For that reason we desire to keep the  size of the library small.  That choices argues against a large  default function set.  Instead of having many built-in features, SQLite is  designed to be extensible at compile-time and run-time with new  application-defined functions and behaviors.</p><blockquote><b>S20000:</b>  The SQLite library shall be extensible and configurable.</blockquote><a name="S20100"></a><p>  SQLite works on common workstations and in embedded systems.  Sometimes these devices, particularly embedded systems,  have odd and unusual operating systems.  In order to support  this level of portability, SQLite allows the interface to the operating  system to be defined at run-time.</p><blockquote><b>S20100:</b>  The SQLite library shall provide interfaces that permit the application  to override interfaces to the platform on which the application is running.</blockquote><a name="S20110"></a><blockquote><b>S20110:</b>  The SQLite library shall provide interfaces that permit the application  to override the interfaces used to read and write persistent storage.</blockquote><a name="S20120"></a><blockquote><b>S20120:</b>  The SQLite library shall provide interfaces that permit the application  to override the interfaces used for memory allocation.</blockquote><a name="S20130"></a><blockquote><b>S20130:</b>  The SQLite library shall provide interfaces that permit the application  to override the interfaces used for controlling mutexes.</blockquote><a name="S20200"></a><p>  Most SQL database engines support a rich set of SQL functions.  SQLite, in contrast, supports only a select few SQL functions.  But SQLite makes up for its dearth of built-in SQL functions by   allowing the application to create new SQL function easily.</p><blockquote><b>S20200:</b>  The SQLite library shall provide interfaces that permit the application  to create new SQL functions.</blockquote><a name="S20300"></a><p>  By default, SQLite only understands ASCII text.  The tables needed  to do proper comparisons and case folding  of full unicode text are huge - much larger  than the SQLite library itself.  And, any application that is dealing  with unicode already probably already has those tables built in.  For  SQLite to include unicode comparison tables would be redundant and wasteful.  As a compromise, SQLite allows the application to specify alternative  collating sequences for things such as unicode text,  so that for applications that need such comparison sequences can have  them easily while other applications that are content with ASCII are  not burdened with unnecessary tables.</p><blockquote><b>S20300:</b>  The SQLite library shall provide interfaces that permit the application  to create new text collating sequences.</blockquote><a name="S20400"></a><p>  A virtual table is an SQL object that appears to be an ordinary  SQL table for the purposes of INSERT, UPDATE, DELETE, and SELECT statements.  But instead of being backed by persistent storage, the virtual table is  an object that responds programmatically to INSERT, UPDATE, DELETE, and  SELECT requests.  Virtual tables have been used to implement full-text  search and R-Tree indices, among other things.</p><blockquote><b>S20400:</b>  The SQLite library shall provide interfaces that permit the application  to create new classes of virtual SQL tables.</blockquote><a name="S20500"></a><p>  Some applications choose to package extensions in separate  shared library files and load those extensions at run-time on  an as-needed basis.  Depending on the nature of the application,  this can be an aid to configuration management, since it allows  the extension to be updated without having to replace the core  application.</p><blockquote><b>S20500:</b>  The SQLite library shall provide interfaces that permit the application  to load extensions at run-time using shared libraries.</blockquote><a name="S20600"></a><p>  SQLite has finite limits.  For example, there is a maximum size BLOB  or CLOB that SQLite will store, a maximum size to a database file,  a maximum number of columns in a table or query, and a maximum depth  of an expression parse tree.  All of these have default values that  are sufficiently large that a typical application is very unlikely to   ever reach the limits.  But some applications (for example, applications  that process content from untrusted and possibly hostile sources)  might want to define much lower limits on some database connections for  the purpose of preventing denial-of-service attacks.  Or, an application  might want to select much lower limits in order to prevent over-utilization  of limited resources on an embedded device.  Whatever the rationale, SQLite  permits limits to be queried and set at run-time.</p><blockquote><b>S20600:</b>  The SQLite library shall provide interfaces that permit the application  to dynamically query and modify size limits.</blockquote><h2>3.0 SQLite is lightweight and leak-free</h2>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -