PostgreSQL#
Grundfunktionen#
- 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.
Siehe auch
- 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 gleicheitig 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
,MIPS
oderPA-RISC
. Auch die meisten Betriebssysteme werden unterstützt:Linux
,Windows
,FreeBSD
,OpenBSD
,NetBSD
,Mac OS
,AIX
,HP/UX
undSolaris
.
Siehe auch
- explain.depesz.com
Web-App, die PostgreSQLs EXPLAIN- und ANALYZE -Anweisungen visualisiert.