Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
summaryrefslogtreecommitdiff
blob: 45b42e43ccab9043db566365f6e09c66b69735d3 (plain)
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
<Chapter Id="intro">
<TITLE>Introduction</TITLE>

<Para>
     This document is the user  manual  for  the  
     <Ulink url="http://postgresql.org/"><ProductName>PostgreSQL</ProductName></Ulink>
     database  management system, originally developed at the University
     of California at  Berkeley.   <ProductName>PostgreSQL</ProductName>  is  based  on
     <Ulink url="http://s2k-ftp.CS.Berkeley.EDU:8000/postgres/postgres.html">
     <ProductName>Postgres release 4.2</ProductName></Ulink>. 
The <ProductName>Postgres</ProductName> project, 
     led by Professor Michael Stonebraker, has been sponsored  by  the
     Defense  Advanced Research Projects Agency (<Acronym>DARPA</Acronym>), the
     Army Research Office (<Acronym>ARO</Acronym>), the National Science  
     Foundation (<Acronym>NSF</Acronym>), and ESL, Inc.
</Para>

<Sect1>
<Title> What is <ProductName>Postgres</ProductName>?</Title>

<Para>
     Traditional   relational  database  management  systems
     (DBMSs) support a data model consisting of a collection
     of named relations, containing attributes of a specific
     type.  In current commercial  systems,  possible  types
     include  floating  point  numbers,  integers, character
     strings, money, and dates.  It is  commonly  recognized
     that  this model is inadequate for future data 
     processing applications.
     The relational  model  successfully  replaced  previous
     models  in  part  because  of its "Spartan simplicity".
     However, as mentioned, this simplicity often makes  the
     implementation  of  certain applications very difficult.
     <ProductName>Postgres</ProductName> offers  substantial  additional
     power  by  incorporating  the following four additional
     basic concepts in such a way that  users  can  easily
     extend the system:

<SimpleList>
<Member>classes</Member>
<Member>inheritance</Member>
<Member>types</Member>
<Member>functions</Member>
</SimpleList>
</Para>

<Para>
Other features provide additional power and flexibility:

<SimpleList>
<Member>constraints</Member>
<Member>triggers</Member>
<Member>rules</Member>
<Member>transaction integrity</Member>
</SimpleList>
</Para>

<Para>
These features put <ProductName>Postgres</ProductName> into the category of databases
referred to as <FirstTerm>object-relational</FirstTerm>. Note that this is distinct
from those referred to as <FirstTerm>object-oriented</FirstTerm>, which in general
are not as well suited to supporting the traditional relational database languages.
So, although <ProductName>Postgres</ProductName> has some object-oriented features,
it is firmly in the relational database world. In fact, some commercial databases
have recently incorporated features pioneered by <ProductName>Postgres</ProductName>.

</Sect1>
     
<Sect1>
<Title>A Short History of <ProductName>Postgres</ProductName></Title>

<Sect2>
<Title>The Berkeley <ProductName>Postgres</ProductName> Project</Title>

<Para>
     Implementation of the <ProductName>Postgres</ProductName> <Acronym>DBMS</Acronym> began in 1986.  The
     initial  concepts  for  the  system  were  presented in
<!--
<XRef LinkEnd="STON86">
-->
<Citation>[STON86]</Citation>
 and the definition of the initial  data  model
     appeared in 
<!--
<XRef LinkEnd="ROWE87">.
-->
<Citation>[ROWE87]</Citation>.
The design of the rule system at
     that time was described in  
<!--
<XRef LinkEnd="STON87a">.
-->
<Citation>[STON87a]</Citation>.
The  rationale
     and  architecture  of the storage manager were detailed in 
<!--
<XRef LinkEnd="STON87b">.
-->
<Citation>[STON87b]</Citation>.
</Para>

<Para>
     <ProductName>Postgres</ProductName> has undergone  several  major  releases  since
     then.   The  first "demoware" system became operational
     in 1987 and was shown at the  1988  <Acronym>ACM-SIGMOD</Acronym>  
     Conference.   We  released Version 1, described in 
<!--
<XRef LinkEnd="STON90a">,
-->
<Citation>[STON90a]</Citation>,
     to a few external users in June 1989.  In response to a
     critique  of  the  first rule system 
<!--
(<XRef LinkEnd="STON89">), 
-->
(<Citation>[STON89]</Citation>),
the rule
     system was  redesigned 
<!--
(<XRef LinkEnd="STON90b">)
-->
(<Citation>[STON90b]</Citation>)
and  Version  2  was
     released  in  June 1990 with the new rule system.  
     Version 3 appeared in 1991 and added support for  multiple
     storage  managers,  an  improved  query executor, and a
     rewritten rewrite rule  system.   For  the  most  part,
     releases  since  then  have  focused on portability and
     reliability.
</Para>

<Para>
     <ProductName>Postgres</ProductName> has been  used  to  implement  many  different
     research and production applications.  These include: a
     financial data analysis system, a  jet  engine  
     performance   monitoring   package,   an   asteroid  tracking
     database, a medical information database,  and  several
     geographic information systems.  <ProductName>Postgres</ProductName> has also been
     used as an educational tool  at  several  universities.
     Finally,  <Ulink url="http://www.illustra.com/">Illustra  Information  Technologies</Ulink> picked up
     the code and commercialized it.
     <ProductName>Postgres</ProductName>  became  the  primary  data  manager  for  the
     <Ulink url="http://www.sdsc.edu/0/Parts_Collabs/S2K/s2k_home.html">Sequoia 2000</Ulink>
 scientific computing project in late 1992.
     Furthermore, the size of the  external  user  community
     nearly  doubled  during  1993.   It became increasingly
     obvious that maintenance of the prototype code and 
     support  was  taking  up large amounts of time that should
     have been devoted to database research.  In  an  effort
     to  reduce  this support burden, the project officially
     ended with Version 4.2.
</Para>
</Sect2>
     
<Sect2>
<Title><ProductName>Postgres95</ProductName></Title>

<Para>
In 1994,
<ULink url="mailto:ayu@informix.com">Andrew Yu</ULink>
and
<ULink url="http://http.cs.berkeley.edu/~jolly/">Jolly Chen</ULink>
added a SQL language interpreter to <ProductName>Postgres</ProductName>, and the code was subsequently released to
the Web to find its own way in the world. <ProductName>Postgres95</ProductName> was a public-domain, open source descendant
of this original Berkeley code.
</Para>

<Para>
     <ProductName>Postgres95</ProductName> is a derivative of the last official release
     of  <ProductName>Postgres</ProductName>  (version 4.2). The code is now completely
     ANSI C and the code size has been trimmed by 25%. There
     are  a lot of internal changes that improve performance
     and code maintainability. <ProductName>Postgres95</ProductName> v1.0.x runs about  30-50%
     faster  on  the  Wisconsin  Benchmark compared to v4.2.
     Apart from bug fixes, these are the major enhancements:

<ItemizedList>
<ListItem>
<Para>
      	The query language <ProductName>Postquel</ProductName> has been replaced with
        	<Acronym>SQL</Acronym> (implemented in the server). We do  not yet support
        	subqueries  (which can be imitated with user defined
        	<Acronym>SQL</Acronym> functions). Aggregates  have  been
        	re-implemented.  We also added support for ``GROUP BY''.
        	The <FileName>libpq</FileName> interface is still available  for  <Acronym>C</Acronym>  
        	programs.
</Para>
</ListItem>
<ListItem>
<Para>
      	In addition to the monitor program, we provide a new
        	program (<Application>psql</Application>) which supports <Acronym>GNU</Acronym> <FileName>readline</FileName>.
</Para>
</ListItem>
<ListItem>
<Para>
      	We added a new  front-end  library,  <FileName>libpgtcl</FileName>,  that
        	supports  <Acronym>Tcl</Acronym>-based  clients.   A sample shell, 
        	pgtclsh, provides new Tcl  commands  to  interface  <Application>tcl</Application>
        	programs with the <ProductName>Postgres95</ProductName> backend.
</Para>
</ListItem>
<ListItem>
<Para>
      	The  large  object interface has been overhauled. We
        	kept Inversion large objects as the  only  mechanism
        	for  storing  large objects. (This is not to be 
        	confused with the Inversion file system which has  been
        	removed.)
</Para>
</ListItem>
<ListItem>
<Para>
      	The  instance-level  rule  system  has been removed.
        	Rules are still available as rewrite rules.
</Para>
</ListItem>
<ListItem>
<Para>
      	A short tutorial introducing regular <Acronym>SQL</Acronym> features as
        	well as those of ours is distributed with the source
        	code.
</Para>
</ListItem>
<ListItem>
<Para>
      	<Acronym>GNU</Acronym> make (instead of  <Acronym>BSD</Acronym>  make)  is  used  for  the
        	build.  Also,  <ProductName>Postgres95</ProductName>  can  be  compiled with an
        	unpatched <ProductName>gcc</ProductName> (data alignment of  doubles  has  been
        	fixed).
</Para>
</ListItem>
</ItemizedList>
</Para>
</Sect2>

<Sect2>
<Title><ProductName>PostgreSQL</ProductName></Title>

<Para>
By 1996, it became clear that the name <Quote>Postgres95</Quote> would not stand
the test of time. A new name, <ProductName>PostgreSQL</ProductName>, was chosen to reflect the
relationship between original <ProductName>Postgres</ProductName> and the more recent
versions with <Acronym>SQL</Acronym> capability. At the same time, the version numbering
was reset to start at 6.0, putting the numbers back into the sequence originally begun by
the <ProductName>Postgres</ProductName> Project.

<Para>
The emphasis on development for the v1.0.x releases of <ProductName>Postgres95</ProductName>
was on stabilizing the backend code.
With the v6.x series of <ProductName>PostgreSQL</ProductName>, the emphasis has shifted from
identifying and understanding existing problems in the backend to augmenting features and capabilities, although
work continues in all areas.

<Para>
Major enhancements include:

<ItemizedList>
<ListItem>
<Para>
Important backend features, including subselects, defaults, constraints, and triggers, have been implemented.
</Para>
</ListItem>
<ListItem>
<Para>
Additional <Acronym>SQL92</Acronym>-compliant language features have been added,
 including primary keys, quoted identifiers, literal string type coersion, type casting,
 and binary and hexadecimal integer input.
</Para>
</ListItem>
<ListItem>
<Para>
Built-in types have been improved, including new wide-range date/time types and additional geometric type support.
</Para>
</ListItem>
<ListItem>
<Para>
Overall backend code speed has been increased by approximately 20%, and backend startup time has decreased 80%.
</Para>
</ListItem>
</ItemizedList>
</Para>
</Sect2>

<Sect1>
<Title>About This Release</Title>

<Para>
     From  now  on, We will use <ProductName>Postgres</ProductName> to mean <ProductName>PostgreSQL</ProductName>.

<Para>
     <ProductName>PostgreSQL</ProductName>  is  available  without cost. This manual
     describes version 6.3 of <ProductName>PostgreSQL</ProductName>.

<Para>
Check the Administrator's Guide for a list of currently supported machines. In general,
<ProductName>PostgreSQL</ProductName> is portable to any Unix/Posix-compatible system
with full libc library support.

</Sect1>

<Sect1>
<Title>Resources</Title>

<Para>
This manual set is organized into several parts:

<VariableList>
<VarListEntry>
<Term>Tutorial</Term>
<ListItem>
<Para>
An introduction for new users. Does not cover advanced features.
</Para>
</ListItem>
</VarListEntry>

<VarListEntry>
<Term>User's Guide</Term>
<ListItem>
<Para>
General information for users, including available commands and data types.
</Para>
</ListItem>
</VarListEntry>

<VarListEntry>
<Term>Programmer's Guide</Term>
<ListItem>
<Para>
Advanced information for application programmers. Topics include
type and function extensibility, library interfaces, and application design issues.
</Para>
</ListItem>
</VarListEntry>

<VarListEntry>
<Term>Administrator's Guide</Term>
<ListItem>
<Para>
Installation and management information. List of supported machines.
</Para>
</ListItem>
</VarListEntry>

<VarListEntry>
<Term>Developer's Guide</Term>
<ListItem>
<Para>
Information for <ProductName>Postgres</ProductName> developers. This is intended
for those who are contributing to the <ProductName>Postgres</ProductName>
project; application development information should appear in the Programmer's Guide.
</Para>
</ListItem>
</VarListEntry>

<VarListEntry>
<Term>Reference Manual</Term>
<ListItem>
<Para>
Detailed reference information on command syntax.
At the moment, this manual is very sparse, but eventually should contain
information similar to that in the man pages.
</Para>
</ListItem>
</VarListEntry>
</VariableList>

<Para>
In addition to this manual set, there are other resources to help you with
<ProductName>Postgres</ProductName> installation and use:

<VariableList>
<VarListEntry>
<Term>man pages</Term>
<ListItem>
<Para>
The man pages have general information on command syntax.
</Para>
</ListItem>
</VarListEntry>

<VarListEntry>
<Term>FAQs</Term>
<ListItem>
<Para>
The Frequently Asked Questions (FAQ) documents address both general issues
and some platform-specific issues.
</Para>
</ListItem>
</VarListEntry>

<VarListEntry>
<Term>READMEs</Term>
<ListItem>
<Para>
README files are available for some contributed packages.
</Para>
</ListItem>
</VarListEntry>

<VarListEntry>
<Term>Web Site</Term>
<ListItem>
<Para>
The <ULink url="postgresql.org"><ProductName>Postgres</ProductName></ULink> web site has some information
not appearing in the distribution. There is a <ProductName>mhonarc</ProductName> catalog of mailing list traffic
which is a rich resource for many topics.
</Para>
</ListItem>
</VarListEntry>

<VarListEntry>
<Term>Mailing Lists</Term>
<ListItem>
<Para>
The <ULink url="mailto:questions@postgresql.org"><ProductName>Postgres</ProductName> Questions</ULink>
mailing list is a good place to have user questions answered. Other mailing lists are available; consult
the web page for details.
</Para>
</ListItem>
</VarListEntry>

<VarListEntry>
<Term>Yourself!</Term>
<ListItem>
<Para>
<ProductName>Postgres</ProductName> is an open source product. As such, it depends on the user community for
ongoing support. As you begin to use <ProductName>Postgres</ProductName>, you will rely on others
for help, either through the documentation or through the mailing lists. Consider contributing your
knowledge back. If you learn something which is not in the documentation, write it up and contribute it.
If you add features to the code, contribute it. Even those without a lot of experience can provide
corrections and minor changes in the documentation, and that is a good way to start.
The <ULink url="mailto:docs@postgresql.org"><ProductName>Postgres</ProductName> Documentation</ULink>
mailing list is the place to get going.
</Para>
</ListItem>
</VarListEntry>
</VariableList>

</Sect1>

<Sect1>
<Title>Copyrights and Trademarks</Title>

<Para>
<ProductName>PostgreSQL</ProductName> is copyright (C) 1996-8 by the PostgreSQL Global Development Group,
and is distributed under the terms of the Berkeley license.

<Para>
<ProductName>Postgres95</ProductName> is copyright (C) 1994-5 by the Regents of the University of California.
Permission to use, copy, modify, and distribute this software and its documentation
for any purpose, without fee, and without a written agreement is hereby granted,
provided that the above copyright notice and this paragraph and the following two
paragraphs appear in all copies.
</Para>
<Para>
In no event shall the University of California be liable to
any party for direct, indirect, special, incidental, or consequential
damages, including lost profits, arising out of the use of this
software and its documentation, even if the University of California
has been advised of the possibility of such damage.
</Para>
<Para>
The University of California specifically disclaims any
warranties, including, but not limited to, the implied warranties
of merchantability and fitness for a particular purpose.
The software provided hereunder is on an "as-is" basis, and
the University of California has no obligations to provide
maintainance, support, updates, enhancements, or modifications.
</Para>

<Para>
<Acronym>UNIX</Acronym> is a trademark of X/Open, Ltd.  Sun4,  SPARC,  SunOS
and  Solaris  are trademarks of Sun Microsystems, Inc.  DEC,
DECstation, Alpha AXP and ULTRIX are trademarks  of  Digital
Equipment   Corp.   PA-RISC  and  HP-UX  are  trademarks  of
Hewlett-Packard Co.  OSF/1 is a trademark of the Open  
Software Foundation.
</Para>

</Chapter>