Documentation Source Text

Check-in [a6e3e556b4]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Update the "Appropriate Uses" page and the "Documentation" index. Fix the size information in "Distinctive Features".
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: a6e3e556b408fdb5ca5ff824a187e3588da538c6
User & Date: drh 2014-08-15 15:48:22.924
Context
2014-08-15
17:32
Updates to the topical documentation index. (check-in: 19359f2dd7 user: drh tags: trunk)
15:48
Update the "Appropriate Uses" page and the "Documentation" index. Fix the size information in "Distinctive Features". (check-in: a6e3e556b4 user: drh tags: trunk)
15:01
Fix a typo in a hyperlink. (check-in: 7c9241801c user: drh tags: trunk)
Changes
Unified Diff Ignore Whitespace Patch
Changes to pages/different.in.
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
  Most other SQL database engines require you to dump and restore
  the database when moving from one platform to another and often
  when upgrading to a newer version of the software.
}

feature small {Compact} {
  When optimized for size, the whole SQLite library with everything enabled
  is [footprint | less than 400KiB in size]
  (as measured on an ix86 using the "size"
  utility from the GNU compiler suite.)  Unneeded features can be disabled
  at compile-time to further reduce the size of the library to under
  190KiB if desired.
  <p>
  Most other SQL database engines are much larger than this.  IBM boasts
  that its recently released CloudScape database engine is "only" a 2MiB
  jar file - an order of magnitude larger than SQLite even after it is
  compressed!
  Firebird boasts that its client-side library is only 350KiB.  That's
  as big as SQLite and does not even contain the database engine.







|



|







91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
  Most other SQL database engines require you to dump and restore
  the database when moving from one platform to another and often
  when upgrading to a newer version of the software.
}

feature small {Compact} {
  When optimized for size, the whole SQLite library with everything enabled
  is [footprint | less than 500KiB in size]
  (as measured on an ix86 using the "size"
  utility from the GNU compiler suite.)  Unneeded features can be disabled
  at compile-time to further reduce the size of the library to under
  300KiB if desired.
  <p>
  Most other SQL database engines are much larger than this.  IBM boasts
  that its recently released CloudScape database engine is "only" a 2MiB
  jar file - an order of magnitude larger than SQLite even after it is
  compressed!
  Firebird boasts that its client-side library is only 350KiB.  That's
  as big as SQLite and does not even contain the database engine.
Changes to pages/docs.in.
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
  This document describes the SQL language that is understood by
  SQLite.  
}
doc {Pragma commands} {pragma.html} {
  This document describes SQLite performance tuning options and other 
  special purpose database commands.
}
doc {Version 3 DataTypes } {datatype3.html} {
  SQLite version 3 introduces the concept of manifest typing, where the
  type of a value is associated with the value itself, not the column that
  it is stored in.
  This page describes data typing for SQLite version 3 in further detail.
}
doc {Null Handling} {nulls.html} {
  Different SQL database engines handle NULLs in different ways.  The
  SQL standards are ambiguous.  This document describes how SQLite handles
  NULLs in comparison with other SQL database engines.
}
doc {Unsupported SQL} {omitted.html} {
  This page describes features of SQL that SQLite does not support.
}


heading {SQLite Features and Extensions} {
  Pages describing specific features or extension modules of SQLite.
}
doc {Autoincrement} {autoinc.html} {
  A description of the AUTOINCREMENT keyword in SQLite, what it does,







|





<
<
<
<
<
<
<
<







98
99
100
101
102
103
104
105
106
107
108
109
110








111
112
113
114
115
116
117
  This document describes the SQL language that is understood by
  SQLite.  
}
doc {Pragma commands} {pragma.html} {
  This document describes SQLite performance tuning options and other 
  special purpose database commands.
}
doc {DataTypes} {datatype3.html} {
  SQLite version 3 introduces the concept of manifest typing, where the
  type of a value is associated with the value itself, not the column that
  it is stored in.
  This page describes data typing for SQLite version 3 in further detail.
}










heading {SQLite Features and Extensions} {
  Pages describing specific features or extension modules of SQLite.
}
doc {Autoincrement} {autoinc.html} {
  A description of the AUTOINCREMENT keyword in SQLite, what it does,
155
156
157
158
159
160
161









162
163
164
165
166
167
168
}
doc {Using The Online Backup Interface} {backup.html} {
  The [sqlite3_backup_init | online-backup interface] can be used to
  copy content from a disk file into an in-memory database or vice
  versa and it can make a hot backup of a live database.  This application
  note gives examples of how.
}










heading {Upgrading SQLite, Backwards Compatibility}

doc {Moving From SQLite 3.5 to 3.6} {35to36.html} {
  A document describing the differences between SQLite version 3.5.9
  and 3.6.0.
}







>
>
>
>
>
>
>
>
>







147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
}
doc {Using The Online Backup Interface} {backup.html} {
  The [sqlite3_backup_init | online-backup interface] can be used to
  copy content from a disk file into an in-memory database or vice
  versa and it can make a hot backup of a live database.  This application
  note gives examples of how.
}
doc {WITHOUT ROWID Tables} {withoutrowid.html} {
  The WITHOUT ROWID optimization is a option that can sometimes result
  in smaller and faster databases.
}
doc {Write-Ahead Log (WAL) Mode} {wal.html} {
  Transaction control using a write-ahead log offers more concurrency and
  is often faster than the default rollback transactions.  This document
  explains how to use WAL mode for improved performance.
}

heading {Upgrading SQLite, Backwards Compatibility}

doc {Moving From SQLite 3.5 to 3.6} {35to36.html} {
  A document describing the differences between SQLite version 3.5.9
  and 3.6.0.
}
253
254
255
256
257
258
259








260
261
262
263
264
265
266

doc {Limits In SQLite} {limits.html} {
  This document describes limitations of SQLite (the maximum length of a
  string or blob, the maximum size of a database, the maximum number of
  tables in a database, etc.) and how these limits can be altered at
  compile-time and run-time.
}











heading {Obsolete Documents} {
  These documents either pertain to SQLite version 2 or were written
  during the transition period between versions 2 and 3 (circa 2004).
  This documents are no longer up-to-date.  They are retained for 







>
>
>
>
>
>
>
>







254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275

doc {Limits In SQLite} {limits.html} {
  This document describes limitations of SQLite (the maximum length of a
  string or blob, the maximum size of a database, the maximum number of
  tables in a database, etc.) and how these limits can be altered at
  compile-time and run-time.
}
doc {Null Handling} {nulls.html} {
  Different SQL database engines handle NULLs in different ways.  The
  SQL standards are ambiguous.  This document describes how SQLite handles
  NULLs in comparison with other SQL database engines.
}
doc {Unsupported SQL} {omitted.html} {
  This page describes features of SQL that SQLite does not support.
}



heading {Obsolete Documents} {
  These documents either pertain to SQLite version 2 or were written
  during the transition period between versions 2 and 3 (circa 2004).
  This documents are no longer up-to-date.  They are retained for 
Changes to pages/whentouse.in.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<title>Appropriate Uses For SQLite</title>

<h2>Appropriate Uses For SQLite</h2>

<p>
SQLite is different from most other SQL database engines in that its
primary design goal is to be simple:
</p>

<ul>
<li>Simple to administer</li>
<li>Simple to operate</li>
<li>Simple to embed in a larger program</li>
<li>Simple to maintain and customize</li>
</ul>

<p>
Many people like SQLite because it is small and fast.  But those
qualities are just happy accidents.
Users also find that SQLite is very reliable.  Reliability is
a consequence of simplicity.  With less complication, there is
less to go wrong.  So, yes, SQLite is small, fast, and reliable,
but first and foremost, SQLite strives to be simple.
</p>

<p>
Simplicity in a database engine can be either a strength or a
weakness, depending on what you are trying to do.  In order to
achieve simplicity, SQLite has had to sacrifice other characteristics
that some people find useful, such as high concurrency, fine-grained
access control, a rich set of built-in functions, stored procedures,
esoteric SQL language features, XML and/or Java extensions,
tera- or peta-byte scalability, and so forth.  If you need some of these
features and do not mind the added complexity that they
bring, then SQLite is probably not the database for you.
SQLite is not intended to be an enterprise database engine.  It is
not designed to compete with Oracle or PostgreSQL.
</p>

<p>
The basic rule of thumb for when it is appropriate to use SQLite is
this:  Use SQLite in situations where simplicity of administration,
implementation, and maintenance are more important than the countless
complex features that enterprise database engines provide.

As it turns out, situations where simplicity is the better choice
are more common than many people realize.
</p>

<p>
Another way to look at SQLite is this:  SQLite is not designed
to replace [http://www.oracle.com/database/index.html | Oracle].
It is designed to replace [http://man.he.net/man3/fopen | fopen()].
</p>

<h2>Situations Where SQLite Works Well</h2>

<ul>

<tcl>hd_fragment appfileformat</tcl>





|
<
<
|
<
<
<
<
<
<
|
<
<
<
<
<
<
<



|
<
<
<
<
<
<
<
<
|
|



<
<
<
|
>
|
<



|
|
|







1
2
3
4
5
6


7






8







9
10
11
12








13
14
15
16
17



18
19
20

21
22
23
24
25
26
27
28
29
30
31
32
33
<title>Appropriate Uses For SQLite</title>

<h2>Appropriate Uses For SQLite</h2>

<p>
SQLite is not directly comparible to other SQL database engines such


as Oracle, PostgreSQL, MySQL, or SQL Server since SQLite is trying to






solve a very different problem.







</p>

<p>
Other SQL database engines strive to implement a shared repository








of enterprise data.  They emphasis scalability, concurrency, centralization,
and control.
</p>

<p>



SQLite, on the other hand, strives to provide local data storage for
individual applications and devices.  SQLite emphasizes economy,
efficiency, reliability, independence, and simplicity.

</p>

<p>
SQLite is not designed to compete with
[http://www.oracle.com/database/index.html | Oracle].
SQLite is designed to compete with [http://man.he.net/man3/fopen | fopen()].
</p>

<h2>Situations Where SQLite Works Well</h2>

<ul>

<tcl>hd_fragment appfileformat</tcl>