- ACID-konform
- ACID (A tomicity, C onsistency, I solation, D urability) ist eine Reihe von Eigenschaften, die Datenbanktransaktionen erfüllen sollten um auch im Störungsfall weiterhin die Gültigkeit der Daten gewährleisten zu können.
- SQL:2011
Mit temporal_tables wird auch der SQL-Standard ISO/IEC 9075:2011 erfüllt, u.a. durch:
- Time Period definitions
- Valid time tables
- Transaction time tables (system-versioned tables) with time-sliced and sequenced queries
- Datentypen
Folgende Datentypen werden out of the box unterstützt:
- primitiven Datentypen: Integer, Numeric, String, Boolean
- Strukturierte Datentypen: Date/Time, Array, Range, UUID
- Dokumenttypen: JSON/JSONB, XML, Key-value (Hstore)
- Geometrische Datentypen: Point, Line, Circle, Polygon
- Anpassungen: Composite, Custom Types
- Transactional Data Definition Language (DDL)
Transactional DDL wird via Write-Ahead Logging realisiert. Dabei sind auch große Änderungen möglich, nicht jedoch add und drop von Datenbanken und Tabellen:
$ psql mydb mydb=# DROP TABLE IF EXISTS foo; NOTICE: table "foo" does not exist DROP TABLE mydb=# BEGIN; BEGIN mydb=# CREATE TABLE foo (bar int); CREATE TABLE mydb=# INSERT INTO foo VALUES (1); INSERT 0 1 mydb=# ROLLBACK; ROLLBACK mydb=# SELECT * FROM foo; ERROR: relation "foo" does not exist
- Concurrent Index
PostgreSQL kann Indizes erstellen ohne Schreibzugriffe auf Tabellen sperren zu müssen.
.. seealso:: `Building Indexes Concurrently <https://www.postgresql.org/docs/current/sql-createindex.html#SQL-CREATEINDEX-CONCURRENTLY>`_- Erweiterungen
- PostgreSQL kann einfach erweitert werden. Das mit dem Quellcode gelieferte contrib/-Verzeichnis enthält verschiedene Erweiterungen, die in Appendix F beschrieben sind. Andere Erweiterungen sind unabhängig entwickelt worden, wie z.B. PostGIS oder Slony-I.
- Common Table Expression
WITH Queries (Common Table Expressions) unterteilt komplexe Anfragen in einfachere Anfragen, z.B.:
WITH regional_insolation AS ( SELECT region, SUM(amount) AS total_insolation FROM orders GROUP BY region ), top_regions AS ( SELECT region FROM regional_insolation WHERE total_insolation > (SELECT SUM(total_insolation)/10 FROM regional_insolation) )Zudem gibt es auch noch einen
RECURSIVE-Modifier, der dieWITH-Abfrage auf seine eigene Ausgabe verweist. Im folgenden ein Beispiel zum Summieren der Zahlen von 1 bis 100:WITH RECURSIVE t (n) AS ( WERTE (1) UNION ALL SELECT n + 1 FROM t WO <100 ) SELECT sum (n) FROM t;- Multi-Version Concurrency Control (MVCC)
- Multi-Version Concurrency Control erlaubt, dass zwei oder mehr Sessions gleichzeitig auf dieselben Daten zugreifen, ohne dabei die Integrität der Daten zu gefährden.
- Cross Platform
- PostgreSQL läuft auf gängigen CPU-Architekturen wie
x86,PowerPC,Sparc,ARM,MIPSoderPA-RISC. Auch die meisten Betriebssysteme werden unterstützt:Linux,Windows,FreeBSD,OpenBSD,NetBSD,Mac OS,AIX,HP/UXundSolaris.
.. seealso::
`explain.depesz.com <https://explain.depesz.com/>`_
Web-App, die PostgreSQLs `EXPLAIN
<https://www.postgresql.org/docs/current/sql-explain.html>`_- und
`ANALYZE <https://www.postgresql.org/docs/current/sql-analyze.html>`_
-Anweisungen visualisiert.
.. toctree::
:hidden:
:titlesonly:
:maxdepth: 0
fdw
plang
db-api
psycopg2
orm
sqlalchemy
alembic
ipython-sql
postgis/index
sec
performance
pgmonitor
pganalyze