mirror of
https://github.com/postgres/pgweb.git
synced 2025-08-01 15:54:53 +00:00
Update "About" page with new look and feel as well as content.
The content is geared more towards people first discovering PostgreSQL as well as providing guidance over history and usage of the project. Authors: Sarah Conway <sarah.conway@crunchydata.com> and me
This commit is contained in:
@ -1,106 +1,160 @@
|
||||
{%extends "base/page.html"%}
|
||||
{%block title%}About{%endblock%}
|
||||
{%block contents%}
|
||||
<h1>About</h1>
|
||||
|
||||
<p>PostgreSQL is a powerful, open source object-relational database system. It has
|
||||
more than 15 years of active development and a proven architecture that has
|
||||
earned it a strong reputation for reliability, data integrity, and
|
||||
correctness. It runs on all major operating systems, including Linux, UNIX (AIX,
|
||||
BSD, HP-UX, macOS, Solaris), and Windows. It is
|
||||
fully ACID compliant, has full support for foreign keys, joins, views, triggers,
|
||||
and stored procedures (in multiple languages). It includes most SQL:2008
|
||||
data types, including INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE, INTERVAL,
|
||||
and TIMESTAMP. It also supports storage of binary large objects, including pictures,
|
||||
sounds, or video. It has native programming interfaces for C/C++, Java, .Net, Perl,
|
||||
Python, Ruby, Tcl, ODBC, among others, and <a href="/docs/manuals/" target="_top">exceptional documentation</a>.
|
||||
</p><p>An enterprise class database, PostgreSQL boasts sophisticated features
|
||||
such as Multi-Version Concurrency Control (MVCC), point in time recovery,
|
||||
tablespaces, asynchronous replication, nested transactions (savepoints),
|
||||
online/hot backups, a sophisticated query planner/optimizer, and write ahead logging
|
||||
for fault tolerance. It supports international character sets, multibyte
|
||||
character encodings, Unicode, and it is locale-aware for sorting,
|
||||
case-sensitivity, and formatting. It is highly scalable both in the sheer quantity
|
||||
of data it can manage and in the number of concurrent users it can
|
||||
accommodate. There are active PostgreSQL instances in production environments that
|
||||
manage many terabytes of data, as well as clusters managing petabytes. Some general PostgreSQL limits are
|
||||
included in the table below. </p><div class="informaltable"><a name="table1"></a><table border="0"><colgroup><col /><col /></colgroup><thead><tr><th><span class="bold"><strong>Limit</strong></span></th><th><span class="bold"><strong>Value</strong></span></th></tr></thead><tbody><tr><td>Maximum Database Size</td><td>Unlimited</td></tr><tr><td>Maximum Table Size</td><td>32 TB</td></tr><tr><td>Maximum Row Size</td><td>1.6 TB</td></tr><tr><td>Maximum Field Size</td><td>1 GB</td></tr><tr><td>Maximum Rows per Table</td><td>Unlimited</td></tr><tr><td>Maximum Columns per Table</td><td>250 - 1600 depending on column types</td></tr><tr><td>Maximum Indexes per Table</td><td>Unlimited</td></tr></tbody></table></div>
|
||||
<p>PostgreSQL has won <a href="/about/quotesarchive/">praise from its users</a> and <a href="/about/awards/">industry recognition</a>, including the Linux New Media Award for Best Database System and five time winner of the The Linux Journal Editors' Choice Award for best DBMS.
|
||||
<h1>About <img class="logo" src="/media/img/about/press/elephant.png" alt="PostgreSQL Elephant Logo" /></h1>
|
||||
|
||||
</p>
|
||||
<h2>Featureful and Standards Compliant</h2><p>PostgreSQL prides itself in standards compliance. Its SQL implementation
|
||||
strongly conforms to the ANSI-SQL:2008 standard. It has full support for
|
||||
subqueries (including subselects in the FROM clause), read-committed and
|
||||
serializable transaction isolation levels. And while PostgreSQL has a fully
|
||||
relational system catalog which itself supports multiple schemas per database,
|
||||
its catalog is also accessible through the Information Schema as defined in the
|
||||
SQL standard.
|
||||
</p><p>Data integrity features include (compound) primary keys, foreign keys with
|
||||
restricting and cascading updates/deletes, check constraints, unique
|
||||
constraints, and not null constraints.</p>
|
||||
<p>It also has a host of extensions and advanced features. Among the
|
||||
conveniences are auto-increment columns through sequences, and
|
||||
<tt class="literal">LIMIT/OFFSET</tt> allowing the return of partial result
|
||||
sets. PostgreSQL supports compound, unique, partial, and functional indexes
|
||||
which can use any of its B-tree, R-tree, hash, or GiST storage methods.</p><p><a href="http://www.sai.msu.su/~megera/postgres/gist/doc/intro.shtml" target="_top">GiST</a>
|
||||
(<span class="emphasis"><em>Generalized Search Tree</em></span>) indexing is an advanced system
|
||||
which brings together a wide array of different sorting and searching algorithms
|
||||
including B-tree, B+-tree, R-tree, partial sum trees, ranked B+-trees and many
|
||||
others. It also provides an interface which allows both the creation of custom
|
||||
data types as well as extensible query methods with which to search them. Thus,
|
||||
GiST offers the flexibility to specify <span class="emphasis"><em>what</em></span> you store,
|
||||
<span class="emphasis"><em>how</em></span> you store it, and <span class="emphasis"><em>the ability to define new
|
||||
ways</em></span> to search through it --- ways that far exceed those offered by
|
||||
standard B-tree, R-tree and other generalized search algorithms.</p><p>GiST serves as a foundation for many public projects that use PostgreSQL
|
||||
such as <a href="http://openfts.sourceforge.net/" target="_top">OpenFTS</a> and <a href="http://postgis.refractions.net/" target="_top">PostGIS</a>. OpenFTS (Open Source Full
|
||||
Text Search engine) provides online indexing of data and relevance ranking for
|
||||
database searching. PostGIS is a project which adds support for geographic
|
||||
objects in PostgreSQL, allowing it to be used as a spatial database for
|
||||
geographic information systems (GIS), much like ESRI's SDE or Oracle's Spatial
|
||||
extension.
|
||||
<h2>What is PostgreSQL?</h2>
|
||||
<p>PostgreSQL is a powerful, open source object-relational database system that uses and extends the SQL language combined with many features that safely store and scale the most complicated data workloads. The origins of PostgreSQL date back to 1986 as part of the <a href="/docs/current/static/history.html">POSTGRES</a> project at the University of California at Berkley and has more than 30 years of active development on the core platform.</p>
|
||||
<p>PostgreSQL has earned a strong reputation for its proven architecture, relaibility, data integrity, robust feature set, extensibility, and the dedication of the open source community behind the software to consistently deliver performant and innovative solutions. PostgreSQL runs on <a href="/download/">all major operating systems</a>, has been <a href="https://en.wikipedia.org/wiki/ACID" target="_blank">ACID</a>-compliant since 2001, and has powerful add-ons such as the popular <a href="https://postgis.net/" target="_blank">PostGIS</a> geospatial database extender. It is no surprise that PostgreSQL has become the open source relational database of choice for many people and organisations.</p>
|
||||
<p><a href="/docs/currrent/static/tutorial-start.html">Getting started</a> with using PostgreSQL has never been easier - pick a project you want to build, and let PostgreSQL safely and robustly store your data.</p>
|
||||
|
||||
</p><p>Other advanced features include table inheritance, a rules systems, and
|
||||
database events. Table inheritance puts an object oriented slant on table
|
||||
creation, allowing database designers to <span class="emphasis"><em>derive</em></span> new tables
|
||||
from other tables, treating them as base classes. Even better, PostgreSQL
|
||||
supports both single and multiple inheritance in this manner.</p><p>The rules system, also called the <span class="emphasis"><em>query rewrite
|
||||
system</em></span>, allows the database designer to create rules which identify
|
||||
specific operations for a given table or view, and dynamically transform them
|
||||
into alternate operations when they are processed.</p><p>The events system is an interprocess communication system in which
|
||||
messages and events can be transmitted between clients using the
|
||||
<tt class="literal">LISTEN</tt> and <tt class="literal">NOTIFY</tt> commands, allowing both
|
||||
simple peer to peer communication and advanced coordination on database
|
||||
events. Since notifications can be issued from triggers and stored procedures,
|
||||
PostgreSQL clients can monitor database events such as table updates, inserts,
|
||||
or deletes as they happen.
|
||||
<h2>Why use PostgreSQL?</h2>
|
||||
<p>
|
||||
PostgreSQL comes with <a href="/about/featurematrix/">many features</a> aimed to help developers build applications, administrators to protect data integrity and build fault-tolerant environments, and help you manage your data no matter how big or small the dataset. In addition to being <a href="/about/license/">free and open source</a>, PostgreSQL is highly extensible. For example, you can define your own data types, build out custom functions, even write code from <a href="/docs/current/static/xplang.html">different programming languages</a> without recompiling your database!
|
||||
</p>
|
||||
<h2>Highly Customizable</h2>
|
||||
<p>PostgreSQL runs stored procedures in more than a dozen programming languages, including Java, Perl, Python, Ruby, Tcl, C/C++,
|
||||
and its own PL/pgSQL, which is similar to Oracle's PL/SQL. Included with its
|
||||
standard function library are hundreds of built-in functions that range from
|
||||
basic math and string operations to cryptography and Oracle
|
||||
compatibility. Triggers and stored procedures can be written in C and loaded
|
||||
into the database as a library, allowing great flexibility in extending its
|
||||
capabilities. Similarly, PostgreSQL includes a framework that allows developers
|
||||
to define and create their own custom data types along with supporting functions
|
||||
and operators that define their behavior. As a result, a host of advanced data
|
||||
types have been created that range from geometric and spatial primitives to
|
||||
network addresses to even ISBN/ISSN (International Standard Book
|
||||
Number/International Standard Serial Number) data types, all of which can be
|
||||
optionally added to the system.
|
||||
</p><p>Just as there are many procedure languages supported by PostgreSQL, there
|
||||
are also many library interfaces as well, allowing various languages both
|
||||
compiled and interpreted to interface with PostgreSQL. There are interfaces for
|
||||
Java (JDBC), ODBC, Perl, Python, Ruby, C, C++, PHP, Lisp, Scheme, and Qt just to
|
||||
name a few.
|
||||
</p><p>Best of all, PostgreSQL's source code is available under a liberal
|
||||
open source license: the <a href="https://www.opensource.org/licenses/postgresql">PostgreSQL License</a>.
|
||||
This license gives you the freedom to use,
|
||||
modify and distribute PostgreSQL in any form you like, open or closed
|
||||
source. Any modifications, enhancements, or changes you make are yours to do
|
||||
with as you please. As such, PostgreSQL is not only a powerful database system
|
||||
capable of running the enterprise, it is a development platform upon which to
|
||||
develop in-house, web, or commercial software products that require a capable
|
||||
RDBMS.
|
||||
<p>PostgreSQL tries to conform with the <a href="/docs/current/static/features.html">SQL standard</a> where such conformance does not contradict traditional features or could lead to poor architectural decisions. Many of the features required by the SQL standard are supported, though sometimes with slightly differing syntax or function. Further moves towards conformance can be expected over time. As of the version 10 release in October 2017, PostgreSQL conforms to at least 160 of the 179 mandatory features for SQL:2011 Core conformance, where as of this writing, no relational database meets full conformance with this standard.
|
||||
</p>
|
||||
<p>Below is an inexhaustive of various features found in PostgreSQL, with more being added in every <a href="/developer/roadmap/">major release</a>:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
<strong>Data Types</strong>
|
||||
<ul>
|
||||
<li>Primitives: Integer, Numeric, String, Boolean</li>
|
||||
<li>Structured: Date/Time, Array, Range, UUID</li>
|
||||
<li>Document: JSON/JSONB, XML, Key-value (Hstore)</li>
|
||||
<li>Geometry: Point, Line, Circle, Polygon</li>
|
||||
<li>Customizations: Composite, Custom Types</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<strong>Data Integrity</strong>
|
||||
<ul>
|
||||
<li>UNIQUE, NOT NULL</li>
|
||||
<li>Primary Keys</li>
|
||||
<li>Foreign Keys</li>
|
||||
<li>Exclusion Constraints</li>
|
||||
<li>Explicit Locks, Advisory Locks</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<strong>Concurrency, Performance</strong>
|
||||
<ul>
|
||||
<li>Indexing: B-tree, Multicolumn, Expressions, Partial</li>
|
||||
<li>Advanced Indexing: GiST, SP-Gist, KNN Gist, GIN, BRIN, Bloom filters</li>
|
||||
<li>Sophisticated query planner / optimizer, index-only scans, multicolumn statistics</li>
|
||||
<li>Transactions, Nested Transactions (via savepoints)</li>
|
||||
<li>Multi-Version concurrency Control (MVCC)</li>
|
||||
<li>Parallelization of read queries</li>
|
||||
<li>Table partitioning</li>
|
||||
<li>All transaction isolation levels defined in the SQL standard, including Serializable</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<strong>Reliability, Disaster Recovery</strong>
|
||||
<ul>
|
||||
<li>Write-ahead Logging (WAL)</li>
|
||||
<li>Replication: Asynchronous, Synchronous, Logical</li>
|
||||
<li>Point-in-time-recovery (PITR), active standbys</li>
|
||||
<li>Tablespaces</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<strong>Security</strong>
|
||||
<ul>
|
||||
<li>Authentication: GSSAPI, SSPI, LDAP, SCRAM-SHA-256, Certificate, and more</li>
|
||||
<li>Robust access-control system</li>
|
||||
<li>Column and row-level security</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<strong>Extensibility</strong>
|
||||
<ul>
|
||||
<li>Stored procedures</li>
|
||||
<li>Procedural Languages: PL/PGSQL, Perl, Python (and many more)</li>
|
||||
<li>Foreign data wrappers: connect to other databases or streams with a standard SQL interface</li>
|
||||
<li>Many extensions that provide additional functionality, including PostGIS</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<strong>Internationalisation, Text Search</strong>
|
||||
<ul>
|
||||
<li>Support for international character sets, e.g. through ICU collations</li>
|
||||
<li>Full-text search</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<p>There are many more features that you can discover in the PostgreSQL <a href="/docs/">documentation</a>. Additionally, PostgreSQL is highly extensible: many features, such as indexes, have defined APIs so that you can build out with PostgreSQL to solve your challenges.</p>
|
||||
<p>PostgreSQL has been proven to be highly scalable both in the sheer quantity of data it can manage and in the number of concurrent users it can accommodate. There are active PostgreSQL clusters in production environments that manage many terabytes of data, and specialized systems that manage petabytes.</p>
|
||||
|
||||
<h2>Any questions?</h2>
|
||||
<p>The first place to go to for any questions on PostgreSQL is its <a href="/docs/">world-renowned documentation</a> which discusses how to use the database software in-depth.
|
||||
</p>
|
||||
<p>
|
||||
We also have many <strong><a href="/list/">mailing lists</a></strong> where you can connect and participate in the <a href="/community/">community</a>, as well as many <a href="/about/events/">events</a> and <a href="/community/user-groups/">local user groups</a> where you can connect with other users.
|
||||
</p>
|
||||
|
||||
<h2>Our users <i class="fa fa-heart"></i> us</h2>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-8 col-center m-auto">
|
||||
<div id="myCarousel" class="carousel slide" data-ride="carousel">
|
||||
<!-- Carousel indicators -->
|
||||
<ol class="carousel-indicators">
|
||||
<li data-target="#myCarousel" data-slide-to="0" class="active"></li>
|
||||
<li data-target="#myCarousel" data-slide-to="1"></li>
|
||||
<li data-target="#myCarousel" data-slide-to="2"></li>
|
||||
</ol>
|
||||
<!-- Wrapper for carousel items -->
|
||||
<div class="carousel-inner">
|
||||
{% for quote in quotes %}
|
||||
<div class="item carousel-item {% if forloop.first %}active{% endif %}">
|
||||
<p class="testimonial">{{ quote.quote }}</p>
|
||||
<p class="overview">{{ quote.who }}, <a href="{{ quote.link }}" target="_blank">{{ quote.org }}</a></p>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<!-- Carousel controls -->
|
||||
<a class="carousel-control left carousel-control-prev" href="#myCarousel" data-slide="prev">
|
||||
<i class="fa fa-angle-left"></i>
|
||||
</a>
|
||||
<a class="carousel-control right carousel-control-next" href="#myCarousel" data-slide="next">
|
||||
<i class="fa fa-angle-right"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h2>What's a database project without statistics?</h2>
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-sm-3 feature-grid">
|
||||
<h3>30+ Years Development</h3>
|
||||
</div>
|
||||
<div class="col-sm-3 feature-grid">
|
||||
<h3>400+ Contributors</h3>
|
||||
</div>
|
||||
<div class="col-sm-3 feature-grid">
|
||||
<h3>44,000+ Commits</h3>
|
||||
</div>
|
||||
<div class="col-sm-3 feature-grid">
|
||||
<h3>50+ Local User Groups</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-3 feature-grid">
|
||||
<h3>1,100,00+ Lines of C</h3>
|
||||
</div>
|
||||
<div class="col-sm-3 feature-grid">
|
||||
<h3>500+ Events</h3>
|
||||
</div>
|
||||
<div class="col-sm-3 feature-grid">
|
||||
<h3>Millions of Happy Users</h3>
|
||||
</div>
|
||||
<div class="col-sm-3 feature-grid">
|
||||
<h3>∞ Data Stored</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{%endblock%}
|
||||
|
Reference in New Issue
Block a user