PostgreSQL optimieren und mit Perl kombinieren

Größe: px
Ab Seite anzeigen:

Download "PostgreSQL optimieren und mit Perl kombinieren"

Transkript

1 Deutscher Perl-Workshop Februar 2009 Web: PGP: 9F67 73D3 43AA B30E CA8F 56E D B5FE 25. Februar 2009

2 Inhaltsverzeichnis 1 Performance 2 Konfiguration 3 Analyse 4 Informationen 5 Perl 6 VACUUM 7 Transaktionen 8 Volltextsuche

3 Was ist PostgreSQL? Relationale Datenbank BSD Lizenz, weltweit aktive Community Zahlreiche Features und Funktionen (Foreign Keys, Transaktionen, Trigger) Läuft auf zahlreichen Betriebssystemen und diverser Hardware Weitgehendes Einhalten der SQL-Standards - Dokumentation der Abweichungen Im Schnitt pro Jahr ein Minor-Release mit neuen Features

4 Wer spricht da vorn? Name: Andreas Scherbaum Selbstständig im Bereich Datenbanken, Linux auf Kleingeräten, Entwicklung von Webanwendungen Arbeit mit Datenbanken seit 1997, mit PostgreSQL seit 1999 Gründungsmitglied der Deutschen und der Europäischen PostgreSQL User Group Board of Directors - European PostgreSQL User Group

5 Ursachen schlechter Performance Es gibt vielfältige Ursachen für eine zu geringe Performance: Falsche (oder fehlende) Konfiguration Anwendung stellt Anfragen falsch Datenbank Layout ist falsch oder ungenügend (fehlende Indexes, fehlende Normalisierung) Anwendungen fragen zu viele (unnötige) Daten ab (z.b.: SELECT *, fehlendes WHERE, fehlendes LIMIT) Latenzzeiten (z.b. Netzwerk, Zugriffszeiten der Festplatten) Ungenügende Hardware...

6 Ziele dieses Workshops Performance: grundlegende Details, Partitionierung, Tablespaces Konfiguration: (Installation,) Speichernutzung einstellen, Logdateien konfigurieren, Zugriff aus dem Netzwerk ermöglichen. der Planer und seine Statistiken Analyse: von Anfragen, Auffinden langsamer Queries, Anfragepläne im Detail Informationen: was die Datenbank alles mitteilen kann Perl: mit Perl auf PostgreSQL zugreifen, Stored Procedures in Perl schreiben VACUUM: der Staubsauger, Sinn, Nutzen und Konfiguration Transaktionen: Wozu braucht man so etwas? Volltextsuche: Installation und Anwendungsbeispiele

7 Ungenügende Hardware Performance - Ungenügende Hardware Mehr RAM, mehr RAM, noch mehr RAM Im Speicher vorgehaltene Daten müssen nicht von der Platte gelesen werden Langsame Festplatten gegen schnellere ersetzen, ggf. ein RAID oder Tablespaces nutzen Es gilt: die Performance verbessert sich mit der Anzahl der Spindeln Schwachstellen im I/O-System herausfinden SSD-Platten in Betracht ziehen: sehr schnell beim Lesen, jedoch derzeit noch Probleme beim Schreiben

8 Performancesteigerung durch Hardware Performancesteigerung durch Hardware Soviel RAM wie notwendig: die wichtigen Tabellen/Daten sollen komplett im RAM liegen Ein 64-Bit System bringt bei mehr als 3,x GB RAM Vorteile RAID kann Plattenzugriffe verteilen - aber nur unabhängig von der tatsächlichen Nutzung Mittels Tablespaces kann man Zugriffe gezielt auf verschiedene Platten verteilen - z. B. Tabelle und Index auf zwei Spindeln legen Wenig genutzte Daten können auf langsame (und günstige) Datenträger ausgelagert werden

9 Partitionierung Partitionierung - Vorteile Daten werden ausgehend von der tatsächlichen Situation gespeichert Sequentielle Scans durchlaufen nicht den gesamten Datenbestand Bestimmte Verwaltungsarbeiten lassen sich effizient durchführen Daten können auf unterschiedliche Medien aufgeteilt werden

10 Partitionierung Partitionierung bei PostgreSQL Tabellen werden durch Inheritance (Vererbung) von einer Mastertabelle erstellt: Beispiel (Master-Tabelle anlegen) CREATE TABLE log_data ( id SERIAL NOT NULL PRIMARY KEY, insert_at TIMESTAMPTZ NOT NULL, data VARCHAR(100) NOT NULL );

11 Partitionierung Partitionierung bei PostgreSQL Beispiel (abgeleitete Tabelle anlegen und befüllen) CREATE TABLE log_data_ ( ) INHERITS (log_data); CREATE TABLE log_data_ ( ) INHERITS (log_data); INSERT INTO log_data_ (insert_at, data) VALUES (NOW(), Datensatz 42 ); INSERT INTO log_data_ (insert_at, data) VALUES ( , Datensatz 23 ); SELECT * FROM log_data_200901; SELECT * FROM log_data_200902; SELECT * FROM log_data;

12 Partitionierung Korrekte Timestamps erzwingen Beispiel (abgeleitete Tabelle mit CONSTRAINT anlegen) CREATE TABLE log_data_ ( ) INHERITS (log_data); CREATE TABLE log_data_ ( CHECK (insert_at >= DATE AND insert_at < DATE ) ) INHERITS (log_data);

13 Partitionierung Nutzung des Timestamp bei einer Abfrage Wenn PostgreSQL einen Contraint auf der vererbten Tabelle vorfindet, wird dieser dazu genutzt, die komplette Tabelle ggf. aus der Abfrage auszuschließen Beispiel (CONSTRAINTs nutzen) SET constraint_exclusion = on; EXPLAIN SELECT * FROM log_data_ WHERE insert_at= ;

14 Tablespaces Tablespaces - Vorteile gegenüber RAID Tabellen und Indexes können gezielt (und getrennt) auf verschiedene Datenträger verteilt werden Verschiedene Datenbanken oder Tabellen können sich auf verschieden schnellen Datenträgern befinden

15 Tablespaces Tablespace erstellen Beispiel (Tablespace anlegen) CREATE TABLESPACE ts_neu LOCATION /mnt/db_neu ; Der Name des Tablespace muss eindeutig sein und darf bisher nicht vergeben sein Das Verzeichnis /mnt/db neu muss postgres gehören und leer sein, der absolute Pfad wird verlangt Tablespaces können nur von einem Admin angelegt werden Das Zuweisen an einen anderen User ist möglich (OWNER)

16 Tablespaces Tablespace nutzen Tablespaces werden mit Hilfe der Option TABLESPACE beim Erstellen eines Objekts angewandt: Beispiel (Index auf Tablespace erstellen) CREATE INDEX test1_index ON test1(id) TABLESPACE ts_neu; Eine nachträgliche Zuweisung zu einem anderen Tablespace ist möglich: Beispiel (Index nachträglich verschieben) ALTER INDEX test1_index SET TABLESPACE ts_neu;

17 Tablespaces Tablespace per Datenbank angeben Eine Datenbank kann komplett auf einem anderen Tablespace erzeugt werden: Beispiel (Tablespace für Datenbank angeben) CREATE DATABASE neue_db TABLESPACE = ts_neu; Der Default Tablespace für neue Objekte lässt sich ändern: Beispiel (Default Tablespace ändern) SET default_tablespace = ts_neu;

18 Tablespaces Neu in PostgreSQL 8.4! Eine ganze Datenbank kann nachträglich auf einen anderen Tablespace umgezogen werden: Beispiel (Datenbank auf anderen Tablespace umziehen) ALTER DATABASE neue_db SET TABLESPACE ts_neu;

19 Voraussetzungen Voraussetzung für diesen Workshop Voller Zugriff auf das System PostgreSQL ist bereits installiert Position der PostgreSQL Konfigurationsdateien ist bekannt psql ist bekannt Eine Datenbank workshop wird angelegt

20 Installation von PostgreSQL PostgreSQL installieren Debian/Ubuntu: apt-get install postgresql-8.3 postgresql-client-8.3 Red Hat: yum install postgresql && service postgresql initdb && service postgresql start SuSE: über YaST Mac OS X: (über Macports) port install postgresql Windows: MSI Paket von der Webseite herunterladen

21 die erste Datenbank erstellen Datenbank erstellen Beispiel (Beispieldatenbank erstellen) CREATE DATABASE workshop; createdb workshop Folgende Zeile in pg hba.conf aufnehmen und Datenbank neu laden: Beispiel (Zugang zur Beispieldatenbank konfigurieren) local workshop all trust

22 Performance Performance - falsche Konfiguration Hinweis: die standardmäßige PostgreSQL Konfiguration ist auf geringen Ressourcenverbrauch ausgelegt. shared buffers zu gering FSM - Free-Space-Map nicht angepasst Bei umfangreichen Operationen work mem erhöhen maintenance work mem kann mehr Speicher für VACUUM bereitstellen temp buffers: bei Überschreiten werden Daten auf die Festplatte ausgelagert

23 Performance Performance - Anwendung stellt Anfragen falsch Mittels log min duration statement langlaufende Anfragen ermitteln Anfragen mittels EXPLAIN und EXPLAIN ANALYZE überprüfen Gleiche Anfragen mittels Prepared Statement aufrufen: erspart den Parser Schritt Zahlreiche INSERT-Operationen mittels Prepared Statement oder besser COPY durchführen

24 Performance Performance - Datenbank Layout ist falsch oder ungenügend Testweise prüfen, ob ein Index auf einer Spalte eine Verbesserung der Laufzeit bewirkt Wichtig: ANALYZE für die Tabelle nicht vergessen Tabellen normalisieren - in der Regel ergeben sich dadurch für die Datenbank besser handhabbare Anfragen

25 Konfiguration Konfiguration - Übersicht Alle Konfigurationen für PostgreSQL werden in der Datei postgresql.conf vorgenommen Alle Einstellungen für Zugangsberechtigungen werden in der Datei pg hba.conf vorgenommen Nach Änderungen mittels pg ctl reload die Konfiguration neu laden Ein Neustart ist nur selten notwendig und ist in der Konfiguration vermerkt

26 Konfiguration Konfiguration - Speichernutzung shared buffers: Verfügbarer Speicher für alle PostgreSQL Prozesse Ev. /etc/sysctl.conf anpassen (kernel.shmmax und kernel.shmall) work mem: Speicher für Sortieroperationen und Hashing Tabellen maintenance work mem: Speicher für VACUUM und ANALYZE temp buffers: Speicher für temporäre Tabellen

27 Konfiguration Konfiguration - Speichernutzung max fsm pages: bestimmt die Verwaltung von Disk Pages max fsm relations: bestimmt die Anzahl von Tabellen und Indizes VACUUM VERBOSE Ausgabe beachten Neu in PostgreSQL 8.4: FSM Einstellungen entfallen! max stack depth: Größe des nutzbaren Stacks (ulimit beachten)

28 Konfiguration Konfiguration - Logdateien log filename: Format für Logdateien in pg log (siehe strftime()) log rotation age: Logfiles nach Zeit rotieren log rotation size: Logfile nach Größe rotieren log error verbosity: PostgreSQL wird gesprächiger (verbose) log min error statement: minimaler Loglevel (info) log min duration statement: Ausführungszeit von Anfragen loggen redirect stderr: leitet Ausgaben in eine Logdatei um

29 Konfiguration Konfiguration - Netzwerk listen addresses: genutzte Netzwerkinterfaces ( *, localhost, IP-Adressen) port: Netzwerkport (Default: 5432) max connections: maximale Anzahl Netzwerkverbindungen superuser reserved connections: Reserve für den Admin + VACUUM

30 Konfiguration Konfiguration - Netzwerk unix socket directory: Verzeichnis für den Unix-Domain-Socket unix socket group: Gruppenname für Domainsocket File unix socket permissions: Integer Wert für Zugriffsrechte auf Domainsocket File

31 Konfiguration Konfiguration - Übung PostgreSQL an alle Netzwerkinterfaces binden 42 maximale Verbindungen zulassen 200 MB Shared Memory einstellen Speicher für Sortieroperationen auf 3 MB einstellen Logfiles täglich neu erstellen, der Wochentag erscheint im Dateinamen Queries mit einer Laufzeit über 5 Sekunden protokollieren

32 Konfiguration Shared Memory - SHMMAX Maximale Größe eines einzelnen Shared Memory Segments Auf 32-Bit Systemen maximal 4 GB - jedoch effektiv weniger Aktuellen SHMMAX Wert abfragen: cat /proc/sys/kernel/shmmax Neuen Wert setzen: sysctl -w kernel.shmmax= Hinweis: unter SUSE/OpenSUSE sind Shared-Memory Einstellungen nicht notwendig.

33 Konfiguration Shared Memory - SHMALL Maximale Anzahl der Shared Memory Pages (systemweit) Sollte mindestens folgenden Wert haben: ceil(shmmax/page SIZE) Page Size abfragen: getconf PAGE SIZE Aktuellen SHMALL Wert abfragen: cat /proc/sys/kernel/shmall Neuen Wert setzen: sysctl -w kernel.shmall=55000

34 Konfiguration Konfiguration - Lösung der Übung listen addresses = * max connections = 42 shared buffers = 200MB kernel.shmmax und kernel.shmall anpassen work mem = 3MB log filename = postgresql-%a.log log min duration statement = 5000

35 Konfiguration Konfiguration - Planer enable bitmapscan, enable hashagg, enable hashjoin, enable hashjoin, enable mergejoin, enable nestloop, enable seqscan, enable sort, enable tidscan Alle Werte sind per Default on und beeinflussen den Planer Zur Laufzeit umschaltbar: SET enable seqscan = off effective cache size: ungefähre Größe des Caches im Betriebssystem geqo: Generic Query Optimizer ein- oder ausschalten

36 Konfiguration Konfiguration - Planer seq page cost: Kosten für das Lesen eines Blocks während einer laufenden Leseoperation (1.0) random page cost: Kosten für das Lesen eines zufälligen Blocks (4.0) cpu tuple cost: Kosten für das Bearbeiten einer Zeile (row) (0.01) cpu index tuple cost: Kosten für das Bearbeiten eines Eintrags im Index (0.005) cpu operator cost: Kosten für den Aufruf eines Operators oder einer Funktion (0.0025)

37 Konfiguration Konfiguration - Statistiken track activities: in 8.3, aktiviere Statistiken für ausgeführte Befehle stats start collector: in 8.2, aktiviere Statistiken stats block level: in 8.2, aktiviere Statistiken für blockbasierte Operationen stats row level: in 8.2, aktiviere Staristiken für zeilenbasierte Operationen track counts: in 8.3, aktiviere Statistiken für Datenbankaktivitäten (Autovacuum)

38 Konfiguration Konfiguration - Statistiken loggen log statement stats: Statistiken über den ausgeführten Befehl log parser stats: Statistiken über die Parser Operationen log planner stats: Statistiken über die Planer Operationen log executor stats: Statistiken über die effektiv ausgeführten Operationen Hinweis: log statement stats kann nicht zusammen mit einer anderen Option aktiviert werden

39 Konfiguration Konfiguration - Write Ahead Log (WAL) fsync: aktiviert oder deaktiviert synchrones Schreiben. off kann zu Datenverlusten und einer beschädigten Datenbank führen! synchronous commit: bei off wird nicht auf das Beenden des Schreibens gewartet. Datenverluste sind möglich, aber keine beschädigte Datenbank. wal buffers: Größe des Speicherbereichs zum Schreiben eines Eintrags in das WAL. checkpoint segments: Anzahl WAL-Logfiles, die rotiert werden

40 Analyse von Anfragen Analyse von Anfragen - Warum? Langsame Anfragen schneller gestalten Performance-Schwachstellen entdecken Ungenutzte Indexes herausfinden

41 Analyse von Anfragen Analyse von Anfragen - Wie EXPLAIN: liefert den Queryplan für eine Anfrage EXPLAIN ANALYZE: führt die Anfrage zusätzlich aus und misst die Laufzeiten

42 Analyse von Anfragen Analyse von Anfragen - Übung Struktur des System-Views pg tables herausfinden Struktur der beteiligten Tabellen herausfinden Die pg tables Anfrage mit EXPLAIN und EXPLAIN ANALYZE analysieren Bonus: Verwendung von Indexes erzwingen und die Analyse wiederholen

43 Analyse von Anfragen Analyse von Anfragen - Lösung Beispiel (System-View pg tables) \ds \d pg_catalog.pg_tables EXPLAIN <query> EXPLAIN ANALYZE <query> SET enable_seqscan = off; EXPLAIN <query> EXPLAIN ANALYZE <query>

44 Der Planer Der Planer Jede Anfrage wird vom Planer bearbeitet und in einen Queryplan übersetzt Zu einzelnen Teilen der Anfrage werden statistische Informationen aus den Tabellen geholt Aufgrund dieser Informationen wird entschieden, ob z.b. ein Index genutzt wird Der Planer kann ggf. Anfragen intern umschreiben (JOINs auflösen, RULEs anwenden)

45 Der Planer Beispiel Tabelle Beispiel (Beispiel Tabelle) CREATE TABLE planer_test ( id SERIAL NOT NULL UNIQUE, inhalt VARCHAR NOT NULL ); INSERT INTO planer_test (inhalt) VALUES ( Inhalt 001 ); INSERT INTO planer_test (inhalt) VALUES ( Inhalt 002 ); INSERT INTO planer_test (inhalt) VALUES ( Inhalt 003 ); INSERT INTO planer_test (inhalt) VALUES ( Inhalt 004 ); INSERT INTO planer_test (inhalt) VALUES ( Inhalt 005 ); ANALYZE VERBOSE planer_test;

46 Der Planer Analyse von Anfragen PostgreSQL kennt den EXPLAIN Befehl, den man vor einen Query setzen kann EXPLAIN liefert detaillierte Aussagen, wie PostgreSQL die Abfrage bearbeiten würde Beispiel (EXPLAIN Ausgabe) postgres=# EXPLAIN SELECT id, inhalt FROM planer_test WHERE id=1; QUERY PLAN Seq Scan on planer_test (cost= rows=1 width=18) Filter: (id = 1) (2 rows)

47 Der Planer Analyse von Anfragen Seq Scan on planer test (cost= rows=1 width=18) Sequentieller Scan auf die Tabelle Gesamtkosten: 1.06 Kosten bis zum Lesen des ersten brauchbaren Wertes: 0.00 Erwartete Anzahl Spalten: 1

48 Der Planer Analyse von Anfragen Frage: Warum ein sequentieller Scan, wenn wir doch einen Index auf id haben? Erzwingen wir die Nutzung des Index: SET enable seqscan=0; Einschätzung: Was wird passieren?

49 Der Planer Analyse von Anfragen Beispiel (EXPLAIN Ausgabe) postgres=# EXPLAIN SELECT id FROM planer_test WHERE id=1; QUERY PLAN Index Scan using planer_test_id_key on planer_test (cost= rows=1 width=4) Index Cond: (id = 1) (2 rows) Was ist passiert? Index wird gelesen: Kosten 1-2 Da sich alle Daten in einem Block befinden, muss dieser Block danach sowieso gelesen werden Resultat: Kosten 3

50 Der Planer Analyse von Anfragen - Erkentnisse PostgreSQL erstellt jeden Queryplan dynamisch und abhängig vom Zustand der Daten Zwei Anfragen auf die gleiche Tabelle, bei unterschiedlichen Datenmengen, können anders ausgeführt werden Daraus resultiert: PostgreSQL sollte gute Informationen über die Daten in den Tabellen haben Das wichtigste Hilfsmittel ist ANALYZE (bzw. VACUUM ANALYZE) Der Autovacuum Daemon übernimmt die meiste Arbeit

51 Der Planer Analyse von Anfragen - Ausführungszeit messen Beispiel (EXPLAIN ANALYZE Ausgabe) postgres=# EXPLAIN ANALYZE SELECT id FROM planer_test WHERE id=1; QUERY PLAN Seq Scan on planer_test (cost= rows=1 width=4) (actual time= rows=1 loops=1) Filter: (id = 1) Total runtime: ms (3 rows) EXPLAIN ANALYZE führt die Anfrage aus und misst die Zeit Die gemessenen Zeiten bewegen sich innerhalb der vorab geschätzten Werte Sollte es hier grobe Abweichungen geben, hat der Planer falsche Daten! Vorsicht: Es werden Daten verändert!

52 Der Planer Analyse von Anfragen - Negativbeispiel Beispiel (EXPLAIN ANALYZE Ausgabe) postgres=# EXPLAIN ANALYZE SELECT id FROM planer_test WHERE id=10; QUERY PLAN Seq Scan on planer_test (cost= rows=1 width=4) (actual time= rows=0 loops=1) Filter: (id = 10) Total runtime: ms (3 rows) Eine sequentielle Suche nach einem nicht vorhandenen Wert Die Datenbank muss die gesamte Tabelle lesen (minimal gleich 0.022) Ein Index hätte hier womöglich schneller Auskunft gegeben

53 Information Schema information schema Das Information Schema stellt einen standardisierten Weg bereit, Informationen über die Struktur der Datenbank auszulesen Dazu gibt es Views im Schema information schema Z.B. Tabellen, Spalten, Views, User, Sequencen, Trigger, Privilegien u.v.m.

54 Information Schema information schema - Übung Mit information schema vertraut machen Ggf. Fragen stellen Herausfinden wie man alle Spalten einer Tabelle anzeigen kann

55 Information Schema information schema - Lösung Beispiel (Alle Spalten aller Tabellen) SELECT table_schema,table_name,column_name,data_type FROM information_schema.columns ORDER BY table_schema, table_name; Beispiel (Alle Spalten einer Tabelle) SELECT table_schema,table_name,column_name,data_type FROM information_schema.columns WHERE table_schema= <schema name> AND table_name= <tabellen name> ;

56 Systemtabellen pg * Systemtabellen Nicht SQL-konform, eine PostgreSQL-Erweiterung Seit vielen Versionen vorhanden Struktur kann sich verändern Wesentlich weitreichendere Informationen als im information schema Änderungen können die Datenbank unbrauchbar werden lassen

57 Systemtabellen pg * Systemtabellen - Übung Mit Systemtabellen vertraut machen Ggf. Fragen stellen Herausfinden wie man alle Spalten einer Tabelle anzeigen kann

58 Systemtabellen pg * Systemtabellen - Lösung Beispiel (Alle Spalten einer Tabelle) psql mit den Optionen -ee starten \dt <tabelle> Ausgabe des Queries nutzen

59 Mit Perl zu einer PostgreSQL Datenbank verbinden Perl und PostgreSQL In Perl werden Datenbanken mittels DBI angesprochen Installation von DBI? Geschenkt... Beispiel (Aufbauen einer Verbindung) use DBI; my $db = DBI->connect("dbi:Pg:dbname=$name;host=$host", $benutzername, $passwort, {AutoCommit => 0});

60 Mit Perl zu einer PostgreSQL Datenbank verbinden Mögliche Verbindungsparameter dbname ($PGDATABASE): Name der Datenbank host ($PGHOST): der Hostname des Servers hostaddr ($PGHOSTADDR): die IP-Adresse des Servers port ($PGPORT): der TCP-Port, Default ist 5432 username ($PGUSER): der Benutzername zum Verbinden password ($PGPASSWORD): das Passwort zum Benutzernamen service ($PGSERVICE): Parameter werden über pg service.conf angegeben options ($PGOPTIONS): Parameter für das Datenbankbackend sslmode ($PGSSLMODE): SSL kann/darf/soll genutzt werden

61 Mit Perl zu einer PostgreSQL Datenbank verbinden Nutzung von pg service.conf und SSL Beispiel (Details einer Konfiguration mit pg service.conf) [servicename] parameter=value parameter=value... SSL: allow: zuerst ungesicherte Verbindung probieren, danach gesichert prefer: zuerst gesicherte Verbindung probieren, danach ungesichert require: nur gesicherte Verbindungen disable: nur ungesicherte Verbindungen

62 Mit Perl zu einer PostgreSQL Datenbank verbinden Mögliche DBI Optionen AutoCommit: Implizite Transaktionen werden ausgeschaltet (wenn false). Transaktionen werden zwar gestartet, aber nicht automatisch abgeschlossen. Dafür ist ein expliziter Commit notwendig. InactiveDestroy: Beim Wert true (Default ist false) wird das Datenbankhandle nicht zerstört. Das ist wichtig in Childs, die mittels fork() erzeugt wurden. PrintWarn: Gibt (wenn true) Warnungen aus, die von der Datenbank generiert wurden. PrintError: Gibt (wenn true) Fehlermeldungen aus, die von der Datenbank generiert wurden. RaiseError: Erzeugt (wenn true) eine Exception, wenn ein Fehler aufgetreten ist. Weitere Optionen stehen in der DBI Dokumentation.

63 Mit Perl zu einer PostgreSQL Datenbank verbinden Verbindung wieder schließen Beispiel (Beenden der Verbindung) $db->disconnect(); Die Verbindung wird auch am Ende des Skripts geschlossen. Nicht abgeschlossene Transaktionen werden zurückgerollt. Nicht abgeschlossene Statements verursachen eine Warnung.

64 Mit Perl zu einer PostgreSQL Datenbank verbinden Fehlermeldungen ausgeben Beispiel (Fehlernummer ausgeben) print $db->err. "\n"; Beispiel (Fehlermeldung ausgeben) print $db->errstr. "\n"; oder: Beispiel (globale verfügbare Variablen nutzen) print $DBI::err. "\n"; print $DBI::errstr. "\n";

65 Anfragen vorbereiten, Ausführen und Ergebnisse auslesen Anfragen vorbereiten und Ausführen Beispiel (Anfrage vorbereiten und ausführen) $st = $db->prepare("select daten FROM tabelle"); if (!$st->execute) { # Fehlerbehandlung } Beispiel (Anfrage ohne Ergebnis ausführen) if (!$db->do("insert INTO...")) { # Fehlerbehandlung }

66 Anfragen vorbereiten, Ausführen und Ergebnisse auslesen Prepared Statements vorbereiten und ausführen Prepared Statements können wiederholt genutzt werden und ersparen den Parser Schritt in der Datenbank. Bestimmte Attacken wie SQL-Injections werden wirkungsvoll verhindert. Beispiel (Prepared Statement vorbereiten) $st = $db->prepare("select daten FROM tabelle WHERE id =?"); Beispiel (Prepared Statement ausführen) $id = 5; if (!$st->execute($id)) { # Fehlerbehandlung }

67 Anfragen vorbereiten, Ausführen und Ergebnisse auslesen Ergebnis(se) auslesen $st->fetchrow array liest das nächste Ergebnis aus und liefert die Werte als Array zurück $st->fetchrow arrayref liest das nächste Ergebnis aus und liefert eine Referenz auf ein Array mit den Werten zurück (Vorsicht: Das Array wird beim nächsten Aufruf wiederverwendet und überschreibt die vorherigen Daten) $st->fetchrow hashref liest das nächste Ergebnis aus und liefert eine Referenz auf einen Hash mit den Werten zurück, die Schlüsselnamen im Hash entsprechen den Spaltennamen in der Anfrage

68 Anfragen vorbereiten, Ausführen und Ergebnisse auslesen Daten auslesen Beispiel (Daten mittels fetchrow * auslesen) while = $st->fetchrow_array) { print "Spalte 1: ". $zeile[0]. "\n"; print "Spalte 2: ". $zeile[1]. "\n"; } while (my $zeile = $st->fetchrow_arrayref) { print "Spalte 1: ". $zeile->[0]. "\n"; print "Spalte 2: ". $zeile->[1]. "\n"; } while (my $zeile = $st->fetchrow_hashref) { print "Spalte id: ". $zeile->{ id }. "\n"; print "Spalte wert: ". $zeile->{ wert }. "\n"; }

69 Anfragen vorbereiten, Ausführen und Ergebnisse auslesen Ergebnis(se) auslesen $st->fetchall arrayref liest alle Ergebnisse aus und liefert diese als Referenz auf ein Array zurück, welches wiederum Referenzen auf die einzelnen Ergebnisse (als Array) enthält $st->fetchall hashref($schluessel) liest alle Ergebnisse aus und liefert eine Referenz auf ein Hash zurück, welches wiederum ein Array je Schlüsselspalte mit den zugehörigen Daten enthält Achtung: Es werden zuerst alle Daten in den Speicher gelesen!

70 Anfragen vorbereiten, Ausführen und Ergebnisse auslesen Daten auslesen Beispiel (Daten mittels fetchall * auslesen) my $zeilen = $st->fetchall_arrayref; for my $zeile (@$zeilen) { print "Spalte 1: ". $zeile->[0]. "\n"; print "Spalte 2: ". $zeile->[1]. "\n"; print "Spalte 1: ". $zeile[0]. "\n"; print "Spalte 2: ". $zeile[1]. "\n"; } my $zeilen = $st->fetchall_hashref( id ); print "Spalte id, Zeile 42: ". $zeilen->{42}->{ id }. "\n"; print "Spalte wert, Zeile 42: ". $zeilen->{42}->{ wert }. "\n";

71 Anfragen vorbereiten, Ausführen und Ergebnisse auslesen Ausführen und Auslesen kombinieren $st->selectrow array kombiniert prepare, execute und fetchrow array $st->selectrow arrayref kombiniert prepare, execute und fetchrow arrayref $st->selectrow hashref kombiniert prepare, execute und fetchrow hashref $st->selectall arrayref kombiniert prepare, execute und fetchall arrayref $st->selectall hashref kombiniert prepare, execute und fetchall hashref $st->selectcol arrayref kombiniert prepare, execute und holt eine Spalte von allen Ergebnissen Achtung: Die Handhabung bei nicht gesetztem RaiseError ist zweifelhaft.

72 Anfragen vorbereiten, Ausführen und Ergebnisse auslesen Anzahl Ergebnisse herausfinden Beispiel (Anzahl Ergebnisse) $anzahl = $st->rows(); print "Anzahl Ergebnisse: $anzahl\n";

73 Anfragen vorbereiten, Ausführen und Ergebnisse auslesen Statement beenden Gibt die verbrauchten Ressourcen wieder frei. Verhindert Warnungen am Ende des Skriptes. Beispiel (Statement beenden) $st->finish;

74 Transaktionen AutoCommit Ist AutoCommit ausgeschaltet, müssen Änderungen explizit mittels commit bestätigt werden. Beispiel (AutoCommit ein- und ausschalten) $db->{autocommit} = 0; # Aus $db->{autocommit} = 1; # Ein Beispiel (Änderungen committen oder zurückrollen) $db->commit; $db->rollback; Nach commit oder rollback wird automatisch eine neue Transaktion gestartet.

75 Transaktionen Transaktionen bei aktiviertem AutoCommit Ist AutoCommit aktiviert, muss eine Transaktion explizit gestartet werden. Andernfalls ist jede Aktion in eine eigene Transaktion gekapselt. Beispiel (explizite Transaktion starten) $db->begin_work;

76 Stored Procedures Stored Procedures - Vorteile Funktionalität (Logik) befindet sich in der Datenbank - dort wo auch die Daten sind Daten müssen zum Bearbeiten nicht erst in die Applikation kopiert werden Durch Kapselung in Transaktionen ist die Datenbank immer in einem gesunden Zustand Eine definierte Schnittstelle zwischen Anwendung und Datenbank ist möglich

77 Stored Procedures Stored Procedures - Nachteile Rechenlast wird in die Datenbank verlagert Programmierung erfolgt durch Datenbankexperten Jede Änderung der Logik muss an mindestens zwei Stellen abgestimmt werden

78 Stored Procedures mit Perl Stored Procedures mit Perl Eine Programmiersprache für Frontend und Datenbank Features aus Perl (Textverarbeitung) können weiterverwendet werden Netzwerkzugriffe sind möglich (mittels Untrusted Languages) Alle Argumente und Rückgabewerte sind String

79 Stored Procedures mit Perl Installation von PL/Perl - Perl Procedural Language Beispiel (Installation als Unix User) createlang plperl meine_datenbank createlang plperlu meine_datenbank Beispiel (Installation als DBA) CREATE TRUSTED LANGUAGE plperl; CREATE LANGUAGE plperl; Untrusted Languages können nicht von regulären Usern genutzt werden

80 Stored Procedures mit Perl Trusted und Untrusted Im Trusted Modus stehen keine Dateioperationen zur Verfügung use und require sind nicht möglich Funktionen für plperlu können nur von einem Administrator erstellt werden Diese Funktionen können jedoch (wenn erlaubt) von jedem User aufgerufen werden

81 Stored Procedure erstellen Funktion erstellen Beispiel (Aufbau einer Funktion) CREATE FUNCTION funktions_name (argumente) RETURNS return_typ AS $$ # hier Funktion einsetzen $$ LANGUAGE plperl;

82 Stored Procedure erstellen Funktion erstellen - Beispiel Beispiel (einfache Beispielfunktion) CREATE FUNCTION hello_world () RETURNS TEXT AS $$ return Hello world ; $$ LANGUAGE plperl; Beispiel (Aufruf der Beispielfunktion) SELECT hello_world(); hello_world Hello world (1 row)

83 Stored Procedure erstellen Funktion erstellen - Beispiel Beispiel (Beispielfunktion) CREATE FUNCTION text_ausschnitt (TEXT, INTEGER, INTEGER) RETURNS TEXT AS $$ my $text = shift; my $start = shift; my $laenge = shift; return substr($text, $start, $laenge); $$ LANGUAGE plperl;

84 Stored Procedure erstellen Funktion erstellen - Beispiel Beispiel (Aufruf der Beispielfunktion) SELECT text_ausschnitt( Hello world, 6, 5); text_ausschnitt world (1 row)

85 Stored Procedure erstellen Funktion erstellen - Beispiel Beispiel (Beispielfunktion mit Arrays) CREATE FUNCTION erzeuge_array () RETURNS TEXT[] AS $$ return [ 23, 42 ]; $$ LANGUAGE plperl; Beispiel (Aufruf der Beispielfunktion) SELECT erzeuge_array(); erzeuge_array {23,42} (1 row)

86 Stored Procedure erstellen Funktion erstellen - Beispiel Beispiel (Beispielfunktion mit Hashes und eigenem Datentyp) CREATE TYPE berechnung AS (min INTEGER, max INTEGER, avg INTEGER); CREATE FUNCTION erzeuge_hash () RETURNS berechnung AS $$ return {min => 23, max => 42, avg => int(( ) / 2)}; $$ LANGUAGE plperl; Beispiel (Aufruf der Beispielfunktion) SELECT * FROM erzeuge_hash(); min max avg (1 row)

87 Stored Procedure erstellen Funktion erstellen - Beispiel Beispiel (Beispielfunktion mit mehreren Ausgaben) CREATE FUNCTION mehrfache_ausgabe () RETURNS SETOF INTEGER AS $$ return_next 23; return_next 42; $$ LANGUAGE plperl; Beispiel (Aufruf der Beispielfunktion) SELECT * FROM mehrfache_ausgabe(); mehrfache_ausgabe (2 rows)

88 Stored Procedure erstellen use strict; Es gibt mehrere Möglichkeiten, use strict; anzuwenden Die folgende Methode erfordert keine Änderungen an der Konfiguration: Beispiel (use strict; anwenden) CREATE OR REPLACE FUNCTION... () RETURNS... AS $$ BEGIN { strict->import(); } $$ LANGUAGE plperl;

89 Stored Procedure erstellen globale Variablen % SHARED steht innerhalb einer Funktion zur Verfügung Diese Variable ist global in der aktuellen Session Tauscht jedoch keine Daten mit anderen Verbindungen aus Beispiel (globale Variablen in einer Session) CREATE OR REPLACE FUNCTION... () RETURNS... AS $$ $_SHARED{ parameter } = Wert ; $$ LANGUAGE plperl;

90 Queries in Stored Procedures ausführen kleine Anfragen stellen Für Anfragen mit kleinen Ergebnissen (geringe Anzahl) wird spi exec query verwendet Optional kann die maximale Anzahl der Ergebnisse angegeben werden Beispiel (Anfrage senden) CREATE OR REPLACE FUNCTION... () RETURNS... AS $$ $res = spi_exec_query( SELECT id, daten FROM tabelle, 5); $$ LANGUAGE plperl;

91 Queries in Stored Procedures ausführen Ergebnisse der Anfrage auslesen Über rows und die Ergebnisnummer erhält man Zugriff auf die Ergebnisse processed gibt die Anzahl zurückgelieferter Ergebnisse an Beispiel (Anfrage senden) CREATE OR REPLACE FUNCTION... () RETURNS... AS $$ $res = spi_exec_query( SELECT id, daten FROM tabelle, 5); for (my $i = 0; $i <= $res->{processed}; $i++) { print $res->{rows}[$i]->{daten}. "\n"; } $$ LANGUAGE plperl;

92 Queries in Stored Procedures ausführen umfangreichere Anfragen stellen Mittels spi query werden Anfragen mit unfangreichen Ergebnissen gestellt Beispiel (Anfrage senden) CREATE OR REPLACE FUNCTION... () RETURNS... AS $$ my $st = spi_query("select id, daten FROM tabelle"); while (defined (my $row = spi_fetchrow($st))) { print $row->{daten}. "\n"; } $$ LANGUAGE plperl;

93 Trigger Funktionen Trigger Funktionen In einer Funktion die durch einen Trigger aufgerufen wird, steht die Variable $ TD zur Verfügung $ TD ist eine Referenz auf einen Hash und kann verändert werden Jede aufgerufene Funktion erhält seine eigene Kopie dieser Variable (die Variable ist local ) Wichtige Inhalte in $ TD: $ TD{name}: Name des Triggers $ TD{event}: INSERT, UPDATE, DELETE oder UNKNOWN $ TD{when}: BEFORE, AFTER oder UNKNOWN $ TD{level}: ROW, STATEMENT oder UNKNOWN

94 Trigger Funktionen Trigger Funktionen Wichtige Inhalte in $ TD (Fortsetzung): $ TD{table name}: Name des Tabelle $ TD{table schema}: Name des Schema $ TD{new}{param}: Wert param aus NEW (zu schreibende Werte) $ TD{old}{param}: Wert param aus OLD (vorherige Werte) $ TD{argc}: Anzahl der Trigger TD->{args}}: Trigger Argumente (nur wenn argc größer 0)

95 Trigger Funktionen Trigger Funktionen - Rückgabewerte Ein Trigger kann folgende Rückgabewerte zurückgeben return; Die Funktion wird ausgeführt return "SKIP"; Diese Funktion wird übersprungen return "MODIFY"; In $ TD{new} wurden Daten verändert und sollen übernommen werden

96 Trigger Funktionen Trigger Funktion erstellen - Beispiel Beispiel (Trigger Beispielfunktion) CREATE FUNCTION trigger_beispiel () RETURNS trigger AS $$ $_TD->{new}{zahl} = 23; return "MODIFY"; $$ LANGUAGE plperl; Beispiel (Beispieltabelle für Trigger Funktion) CREATE TABLE trigger_tabelle (zahl INTEGER); Beispiel (Trigger anlegen) CREATE TRIGGER trigger_beispiel_tr BEFORE INSERT OR UPDATE ON trigger_tabelle FOR EACH ROW EXECUTE PROCEDURE trigger_beispiel();

97 Trigger Funktionen Trigger Funktion erstellen - Beispiel Beispiel (Trigger Beispieldaten) INSERT INTO trigger_tabelle (zahl) VALUES (42); SELECT zahl FROM trigger_tabelle; zahl (1 row)

98 Was ist VACUUM? VACUUM - ein Staubsauger? Durch MVCC bleiben alte Daten nach Abschluss einer Transaktion in einer Tabelle zurück VACUUM gibt diesen Platz wieder frei ANALYZE aktualisiert die Statistiken für den Planer Shortcut: VACUUM ANALYZE Der Autovacuum Daemon kann die Arbeit automatisiert erledigen Neu in PG 8.3: HOT - Heap-Only-Tuples quasi ein kleines Vacuum innerhalb des Blocks Voraussetzung: kein Wert im Index wird geändert

99 Was ist VACUUM? HOT - Beispiele Beispiel (Beispieltabelle für HOT) CREATE TABLE hot_test (id INTEGER PRIMARY KEY, daten TEXT); INSERT INTO hot_test (id, daten) VALUES (1, Datensatz ); Beispiel (HOT - Ja) UPDATE hot_test SET daten = etwas anderes ; Beispiel (HOT - Nein) UPDATE hot_test SET id = 2;

100 Autovacuum VACUUM automatisiert PostgreSQL besitzt einen eingebauten Daemon namens autovacuum Dieser überprüft regelmäßig alle Datenbanken und enthaltene Tabellen Die Zeit zwischen zwei Läufen wird mittels autovacuum naptime eingestellt Der Daemon selbst wird mittels autovacuum ein- und ausgeschaltet Einzelne Tabellen in einer Datenbank können über die pg autovacuum Tabelle konfiguriert werden

101 Autovacuum Konfiguration - kostenbasiertes VACUUM vacuum cost delay: Anzahl Millisekunden für die Ruhephase des VACUUM-Befehls, 0 zum Deaktivieren (Default) vacuum cost page hit: erwartete Kosten für das VACUUM eines Blocks, der sich im Shared RAM befindet (1) vacuum cost page miss: erwartete Kosten für das VACUUM eines Blocks auf der Festplatte (10) vacuum cost page dirty: erwartete Kosten, wenn ein vorher sauberer Block geschrieben werden muss (20) vacuum cost limit: Kostenlimit für eine Runde (200)

102 Autovacuum Konfiguration - kostenbasiertes Auto-VACUUM autovacuum und track counts müssen aktiviert sein autovacuum max workers: Anzahl gleichzeitiger VACUUM Prozesse (3) autovacuum naptime: Zeit zwischen Beenden einer und dem Prüfen der nächsten Datenbank (1min) autovacuum vacuum cost delay: Anzahl Millisekunden für die Ruhepause. Der Wert -1 führt zur Nutzung von vacuum cost delay (20) autovacuum vacuum cost limit: Kostenlimit für eine Runde, wird über alle aktiven Worker verteilt. -1 führt zur Nutzung von vacuum cost limit (-1)

103 Autovacuum Konfiguration - kostenbasiertes Auto-VACUUM autovacuum vacuum threshold: Anzahl der notwendigen geänderten Tuples für VACUUM (50) autovacuum analyze threshold: Anzahl der notwendigen geänderten Tuples für ANALYZE (50) autovacuum vacuum scale factor: Prozentwert über die Tabellengröße, der zu autovacuum vacuum threshold addiert wird (0.2-20%) autovacuum analyze scale factor: Prozentwert über die Tabellengröße, der zu autovacuum analyze threshold addiert wird (0.1-10%)

104 Autovacuum VACUUM - Übung Die Datenbank mittels VACUUM ANALYZE VERBOSE aufräumen Auf die Ausgaben (am Ende) für die Anzahl benötigter Einträge für die Free-Space-Map achten Hinweis: In PostgreSQL 8.4 sind die FSM Einstellungen entfallen.

105 Was sind Transaktionen? Transaktionen Transaktionen kapseln beliebig viele Aktionen in der Datenbank zu einer einzelnen Aktion nach außen Beispiel: Banküberweisung Schritt 1: Geld wird von Ihrem Konto abgebucht Schritt 2: Geld wird auf das andere Konto gebucht Was passiert, wenn zwischen Schritt 1 und 2 ein Fehler auftritt?

106 Was bedeutet ACID? Transaktionen - ACID A C I D A: Atomarität (Atomicity) - ganz oder gar nicht C: Konsistenz (Consistency) - Datenbestand ist vor und nach der Transaktion konsistent I: Isolation (Isolation) - alle Aktionen (Transaktionen) sind voneinander abgekapselt D: Dauerhaftigkeit (Durability) - bestätigte Änderungen bleiben erhalten

107 Wie nutzt man Transaktionen? Transaktionen - Nutzung Transaktion starten: BEGIN oder START TRANSACTION Transaktion abschließen: COMMIT Transaktion zurückrollen: ROLLBACK Hinweis: PHP bietet keine eingebauten Funktionen für Transaktionen, Perl DBI kennt begin work, commit und rollback

108 Isolation von Transaktionen Isolation von Transaktionen Beispiel: Transaktion 1 startet mit eigener aktueller Ansicht der Datenbank (I - Isolation) Transaktion 2 startet Transaktion 2 ändert einen Wert in einer Tabelle Transaktion 2 committed ihre Änderungen, diese werden sichtbar Aber: Transaktion 1 muss weiterhin den alten Wert sehen können, da dieser beim Start der Transaktion gültig war

109 Isolation von Transaktionen Isolation von Transaktionen - Übung Zwei Verbindungen zur Datenbank öffnen Eine Tabelle erstellen In beiden Verbindungen eine Transaktion starten SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; anwenden Den Inhalt der Tabelle in beiden Verbindungen anzeigen lassen In einer Transaktion einen Datensatz einfügen Den Inhalt der Tabelle in beiden Verbindungen anzeigen lassen

110 Isolation von Transaktionen Isolation von Transaktionen - Übung Beispiel (Isolation von Transaktionen) CREATE TABLE transaktion_test ( id SERIAL NOT NULL PRIMARY KEY, wert VARCHAR NOT NULL ); BEGIN; SELECT * FROM transaktion_test; INSERT INTO transaktion_test (wert) VALUES ( etwas Inhalt ); SELECT * FROM transaktion_test; SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

111 Isolation von Transaktionen Isolation von Transaktionen - die Nachteile Das notwendige Vorhalten älterer Versionen eines Datensatzes wird Multiversion Concurrency Control (kurz: MVCC) genannt Diese alten Versionen belegen Platz auf der Festplatte und im Index Die Überreste können mit dem Befehl VACUUM aufgeräumt werden, Syntax: VACUUM ANALYZE tabelle Hinweis: VACUUM kann nicht innerhalb einer Transaktion stattfinden

112 Isolation von Transaktionen Isolation von Transaktionen - Transaktionslevel SQL definiert 4 verschiedene Transaktionslevel: READ UNCOMMITTED (in PG: READ COMMITTED) READ COMMITTED REPEATABLE READ (in PG: SERIALIZABLE) SERIALIZABLE PostgreSQL nutzt nur READ COMMITTED und SERIALIZABLE

113 Isolation von Transaktionen Isolation von Transaktionen - Transaktionslevel Unterschiede zwischen READ COMMITTED und SERIALIZABLE: READ COMMITTED: Daten, die vor dem Beginn des Query, aber nach Beginn der Transaktion sichtbar waren, werden angezeigt SERIALIZABLE: Nur Daten, die vor Beginn der Transaktion sichtbar waren, werden angezeigt Hinweis: bei SERIALIZABLE kann es zu Transaktionsabbrüchen kommen, die Applikation muss dies abfangen!

114 Isolation von Transaktionen Isolation von Transaktionen - Transaktionslevel PostgreSQL Default: READ COMMITTED Ändern mit: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE Befehl muss nach START TRANSACTION/BEGIN aufgerufen werden Die Einstellung kann nach der ersten Daten-ändernden Anweisung (inkl. SELECT) nicht mehr geändert werden

115 Vorteile einer Volltextsuche Volltextsuche - Vorteile Einen einzelnen Begriff in einem geschriebenen Text zu finden ist kompliziert: Das Wort könnte dekliniert oder konjugiert sein Das Wort könnte in der Mehrzahl vorliegen Diese Fälle kann man mit einer simplen Suche mittels LIKE nicht abbilden

116 Vorteile einer Volltextsuche Volltextsuche Die Lösung: Volltextsuche Der Text wird von einem Parser zerlegt und von einem Stemmer normalisiert Dem Stemmer muss die zu nutzende Sprache mitgeteilt werden

117 Beispiel für eine Volltextsuche Volltextsuche - Beispiel Beispiel (Beispiel für eine Volltextsuche) CREATE TABLE volltextsuche ( id SERIAL NOT NULL PRIMARY KEY, text_deutsch TEXT NOT NULL, text_geparst TSVECTOR ); CREATE INDEX vt_suche ON volltextsuche USING gist(text_geparst); INSERT INTO volltextsuche (text_deutsch, text_geparst) VALUES ( Ein Text ueber Katzen und Elefanten, to_tsvector( german, Ein Text ueber Katzen und Elefanten ));

118 Beispiel für eine Volltextsuche Volltextsuche - Beispiel Beispiel (Beispiel für eine Volltextsuche) SELECT id, text_deutsch FROM volltextsuche WHERE to_tsquery( german, Elefanten ); SELECT id, text_deutsch FROM volltextsuche WHERE to_tsquery( german, Elefant & Katze ); SELECT id, text_deutsch FROM volltextsuche WHERE to_tsquery( german, Elefant & Maus );

119 Beispiel für eine Volltextsuche Volltextsuche - Dokumentation Zwei URLs mit weiteren Informationen zur Gestaltung komplexer Anfragen

120 Beispiel für eine Volltextsuche Volltextsuche - Übung Eine Funktion als Trigger erstellen, die die Spalte text geparst automatisch füllt Hinweis: Vorher mittels createlang plpgsql pl/pgsql aktivieren

121 Beispiel für eine Volltextsuche Volltextsuche - Beispiel Beispiel (Trigger für Volltextsuche) CREATE OR REPLACE FUNCTION update_tsearch_vectors() RETURNS TRIGGER AS $$ DECLARE BEGIN NEW.text_geparst := to_tsvector( german, NEW.text_deutsch); RETURN NEW; END; $$ LANGUAGE plpgsql ;

122 Beispiel für eine Volltextsuche Volltextsuche - Beispiel Beispiel (Trigger für Volltextsuche) CREATE TRIGGER vt_trigger BEFORE INSERT OR UPDATE ON volltextsuche FOR EACH ROW EXECUTE PROCEDURE update_tsearch_vectors();

123 Schulungen Open Source School GmbH aus München bietet PostgreSQL Schulungen an: Administration von PostgreSQL nächster Termin: 08. Juni Juni 2009 Nähere Infos unter:

124 PostgreSQL Buch PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler Erscheint Mai 2009 im Verlag Open Source Press

125 Ende Fragen? PostgreSQL User Group Germany European PostgreSQL User Group

PostgreSQL optimieren

PostgreSQL optimieren Open-Source-Tag Magdeburg - 11. Oktober 2008 Web: http://andreas.scherbaum.la/ E-Mail: andreas@scherbaum.biz PGP: 9F67 73D3 43AA B30E CA8F 56E5 3002 8D24 4813 B5FE 11. Oktober 2008 Inhaltsverzeichnis 1

Mehr

PostgreSQL optimieren

PostgreSQL optimieren CLT 2010 13.-14.03.2010 Web: http://andreas.scherbaum.la/ E-Mail: andreas[at]scherbaum.biz PGP: 9F67 73D3 43AA B30E CA8F 56E5 3002 8D24 4813 B5FE 13.-14.03.2010 Was ist PostgreSQL? Relationale Datenbank

Mehr

PostgreSQL Wartungsstrategien

PostgreSQL Wartungsstrategien Jens Wilke PGConf.DE 11. November 2011 Wartungsstrategien Warum Wartung? Autovacuum Tuning Repairtools Warum Wartung? Statistiken pg statistic ANALYZE MVCC (Multiversion Concurrency Control) Wiederverwendung

Mehr

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten 2008 netcadservice GmbH netcadservice GmbH Augustinerstraße 3 D-83395 Freilassing Dieses Programm ist urheberrechtlich geschützt. Eine Weitergabe

Mehr

ec@ros2-installer ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg 7 64331 Weiterstadt

ec@ros2-installer ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg 7 64331 Weiterstadt ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Inhaltsverzeichnis 1 Download des ecaros2-installer...3 2 Aufruf des ecaros2-installer...3 2.1 Konsolen-Fenster (Windows)...3 2.2 Konsolen-Fenster

Mehr

OP-LOG www.op-log.de

OP-LOG www.op-log.de Verwendung von Microsoft SQL Server, Seite 1/18 OP-LOG www.op-log.de Anleitung: Verwendung von Microsoft SQL Server 2005 Stand Mai 2010 1 Ich-lese-keine-Anleitungen 'Verwendung von Microsoft SQL Server

Mehr

Medea3 Print-Client (m3_print)

Medea3 Print-Client (m3_print) Medea3 Print-Client (m3_print) Installationsanleitung Installationsanleitung m3_print.exe...2 1. Installieren von Ghostskript und Ghostview...2 1. Ghostskript...2 2. Ghostview...3 2. Kopieren des Print-Client-Programms...6

Mehr

Tag 4 Inhaltsverzeichnis

Tag 4 Inhaltsverzeichnis Tag 4 Inhaltsverzeichnis Normalformen Problem Formen (1-4) Weitere Formen Transaktionen Synchronisationsprobleme Überblick Autocommit Locking Savepoints Isolation levels Übungen RDB 4-1 Normalformen Problematik

Mehr

CMS.R. Bedienungsanleitung. Modul Cron. Copyright 10.09.2009. www.sruttloff.de CMS.R. - 1 - Revision 1

CMS.R. Bedienungsanleitung. Modul Cron. Copyright 10.09.2009. www.sruttloff.de CMS.R. - 1 - Revision 1 CMS.R. Bedienungsanleitung Modul Cron Revision 1 Copyright 10.09.2009 www.sruttloff.de CMS.R. - 1 - WOZU CRON...3 VERWENDUNG...3 EINSTELLUNGEN...5 TASK ERSTELLEN / BEARBEITEN...6 RECHTE...7 EREIGNISSE...7

Mehr

3 Installation von Exchange

3 Installation von Exchange 3 Installation von Exchange Server 2010 In diesem Kapitel wird nun der erste Exchange Server 2010 in eine neue Umgebung installiert. Ich werde hier erst einmal eine einfache Installation mit der grafischen

Mehr

1 Transaktionen in SQL. 2 Was ist eine Transaktion. 3 Eigenschaften einer Transaktion. PostgreSQL

1 Transaktionen in SQL. 2 Was ist eine Transaktion. 3 Eigenschaften einer Transaktion. PostgreSQL 1 Transaktionen in SQL Um Daten in einer SQL-Datenbank konsistent zu halten, gibt es einerseits die Möglichkeit der Normalisierung, andererseits sog. Transaktionen. 2 Was ist eine Transaktion Eine Transaktion

Mehr

Windows Vista Security

Windows Vista Security Marcel Zehner Windows Vista Security ISBN-10: 3-446-41356-1 ISBN-13: 978-3-446-41356-6 Leseprobe Weitere Informationen oder Bestellungen unter http://www.hanser.de/978-3-446-41356-6 sowie im Buchhandel

Mehr

Enigmail Konfiguration

Enigmail Konfiguration Enigmail Konfiguration 11.06.2006 Steffen.Teubner@Arcor.de Enigmail ist in der Grundkonfiguration so eingestellt, dass alles funktioniert ohne weitere Einstellungen vornehmen zu müssen. Für alle, die es

Mehr

PostgreSQL unter Debian Linux

PostgreSQL unter Debian Linux Einführung für PostgreSQL 7.4 unter Debian Linux (Stand 30.04.2008) von Moczon T. und Schönfeld A. Inhalt 1. Installation... 2 2. Anmelden als Benutzer postgres... 2 2.1 Anlegen eines neuen Benutzers...

Mehr

Tag 4 Inhaltsverzeichnis

Tag 4 Inhaltsverzeichnis Tag 4 Inhaltsverzeichnis Normalformen Problem Formen (1-4) Weitere Formen Transaktionen Synchronisationsprobleme Überblick Autocommit Locking Savepoints Isolation levels Übungen RDB 4-1 Normalformen Problematik

Mehr

ID VisitControl. Dokumentation Administration. 2015 Equitania Software GmbH cmc Gruppe Seite 1

ID VisitControl. Dokumentation Administration. 2015 Equitania Software GmbH cmc Gruppe Seite 1 ID VisitControl Dokumentation Administration 2015 Equitania Software GmbH cmc Gruppe Seite 1 Inhalt 1. Anmeldung... 3 2. Benutzer anlegen oder bearbeiten... 4 2.1. Benutzer aus LDAP Anbindung importieren/updaten...

Mehr

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER INHALTSVERZEICHNIS 1. Datenbanken 2. SQL 1.1 Sinn und Zweck 1.2 Definition 1.3 Modelle 1.4 Relationales Datenbankmodell 2.1 Definition 2.2 Befehle 3.

Mehr

Urs Meier (urs.meier@trivadis.com) Art der Info Technical Info (Februar 2002) Aus unserer Projekterfahrung und Forschung

Urs Meier (urs.meier@trivadis.com) Art der Info Technical Info (Februar 2002) Aus unserer Projekterfahrung und Forschung Betrifft Optimizer Autor Urs Meier (urs.meier@trivadis.com) Art der Info Technical Info (Februar 2002) Quelle Aus unserer Projekterfahrung und Forschung Einführung Mit jedem Oracle Release nimmt die Anzahl

Mehr

Funktionsübersicht. Beschreibung der zentralen Funktionen von PLOX

Funktionsübersicht. Beschreibung der zentralen Funktionen von PLOX Funktionsübersicht Beschreibung der zentralen Funktionen von PLOX Seite 2 Inhaltsverzeichnis 1. Überblick Architektur... 2 2. PLOX-Menüleiste: Eine Toolbox voll nützlicher Werkzeuge... 3 2.1 Login... 3

Mehr

ecaros2 - Accountmanager

ecaros2 - Accountmanager ecaros2 - Accountmanager procar informatik AG 1 Stand: FS 09/2012 Inhaltsverzeichnis 1 Aufruf des ecaros2-accountmanager...3 2 Bedienung Accountmanager...4 procar informatik AG 2 Stand: FS 09/2012 1 Aufruf

Mehr

Warenwirtschaft Handbuch - Administration. 2013 www.addware.de

Warenwirtschaft Handbuch - Administration. 2013 www.addware.de Warenwirtschaft Handbuch - Administration 2 Warenwirtschaft Inhaltsverzeichnis Vorwort 0 Teil I Administration 3 1 Datei... 4 2 Datenbank... 6 3 Warenwirtschaft... 12 Erste Schritte... 13 Benutzerverwaltung...

Mehr

Datenbanken für Online Untersuchungen

Datenbanken für Online Untersuchungen Datenbanken für Online Untersuchungen Im vorliegenden Text wird die Verwendung einer MySQL Datenbank für Online Untersuchungen beschrieben. Es wird davon ausgegangen, dass die Untersuchung aus mehreren

Mehr

Hinweise zur Installation von MySQL

Hinweise zur Installation von MySQL Hinweise zur Installation von MySQL Im Folgenden werden einige Hinweise gegeben, die die Einrichtung einer MySQL-Lernumgebung am eigenen Windows-Rechner erleichtern sollen. Der Text ist vor allem für diejenigen

Mehr

1. Aktionen-Palette durch "Fenster /Aktionen ALT+F9" öffnen. 2. Anlegen eines neuen Set über "Neues Set..." (über das kleine Dreieck zu erreichen)

1. Aktionen-Palette durch Fenster /Aktionen ALT+F9 öffnen. 2. Anlegen eines neuen Set über Neues Set... (über das kleine Dreieck zu erreichen) Tipp: Aktionen (c) 2005 Thomas Stölting, Stand: 25.4. 2005 In Photoshop werden häufig immer wieder die gleichen Befehlssequenzen benötigt. Um sie nicht jedesmal manuell neu eingeben zu müssen, können diese

Mehr

Replikation mit PostgreSQL 9.0

Replikation mit PostgreSQL 9.0 Replikation mit PostgreSQL 9.0 FrOSCon 2010 21.-22.08.2010 Andreas ads Scherbaum Web: http://andreas.scherbaum.la/ E-Mail: andreas[at]scherbaum.biz PGP: 9F67 73D3 43AA B30E CA8F 56E5 3002 8D24 4813 B5FE

Mehr

Dokumentation IBIS Monitor

Dokumentation IBIS Monitor Dokumentation IBIS Monitor Seite 1 von 16 11.01.06 Inhaltsverzeichnis 1. Allgemein 2. Installation und Programm starten 3. Programmkonfiguration 4. Aufzeichnung 4.1 Aufzeichnung mitschneiden 4.1.1 Inhalt

Mehr

Daten-Synchronisation zwischen dem ZDV-Webmailer und Outlook (2002-2007) Zentrum für Datenverarbeitung der Universität Tübingen

Daten-Synchronisation zwischen dem ZDV-Webmailer und Outlook (2002-2007) Zentrum für Datenverarbeitung der Universität Tübingen Daten-Synchronisation zwischen dem ZDV-Webmailer und Outlook (2002-2007) Zentrum für Datenverarbeitung der Universität Tübingen Inhalt 1. Die Funambol Software... 3 2. Download und Installation... 3 3.

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {

Mehr

Erweiterung AE WWS Lite Win: AES Security Verschlüsselung

Erweiterung AE WWS Lite Win: AES Security Verschlüsselung Erweiterung AE WWS Lite Win: AES Security Verschlüsselung Handbuch und Dokumentation Beschreibung ab Vers. 1.13.5 Am Güterbahnhof 15 D-31303 Burgdorf Tel: +49 5136 802421 Fax: +49 5136 9776368 Seite 1

Mehr

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe... php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...7 3.Zugriff auf mysql Daten...11 Verteilte Systeme: php.sxw Prof.

Mehr

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version 1.0.0. 23. September 2015 - 1 -

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version 1.0.0. 23. September 2015 - 1 - Matrix42 Use Case - Sicherung und Rücksicherung persönlicher Version 1.0.0 23. September 2015-1 - Inhaltsverzeichnis 1 Einleitung 3 1.1 Beschreibung 3 1.2 Vorbereitung 3 1.3 Ziel 3 2 Use Case 4-2 - 1 Einleitung

Mehr

Installation DataExpert Paynet-Adapter (SIX)

Installation DataExpert Paynet-Adapter (SIX) Projekt IGH DataExpert Installation DataExpert Paynet-Adapter (SIX) Datum: 25.06.2012 Version: 2.0.0.0 Inhaltsverzeichnis 1 Einleitung...... 2 1.1.NET Framework... 2 2 Installation von "DE_PaynetAdapter.msi"...

Mehr

Step by Step Webserver unter Windows Server 2003. von Christian Bartl

Step by Step Webserver unter Windows Server 2003. von Christian Bartl Step by Step Webserver unter Windows Server 2003 von Webserver unter Windows Server 2003 Um den WWW-Server-Dienst IIS (Internet Information Service) zu nutzen muss dieser zunächst installiert werden (wird

Mehr

Step by Step Softwareverteilung unter Novell. von Christian Bartl

Step by Step Softwareverteilung unter Novell. von Christian Bartl Step by Step Softwareverteilung unter Novell von Softwareverteilung unter Novell 1) Starten von einfachen *.EXE-Dateien: Starten sie ConsoleOne Erstellen sie eine eigene Organisationseinheit für ihre Anwendungen

Mehr

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0)

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0) Tapps mit XP-Mode unter Windows 7 64 bit (V2.0) 1 Einleitung... 2 2 Download und Installation... 3 2.1 Installation von WindowsXPMode_de-de.exe... 4 2.2 Installation von Windows6.1-KB958559-x64.msu...

Mehr

BEDIENUNG ABADISCOVER

BEDIENUNG ABADISCOVER BEDIENUNG ABADISCOVER Juni 2005 / EMO v.2005.1 Diese Unterlagen sind urheberrechtlich geschützt. Alle Rechte, auch die der Übersetzung, des Nachdrucks und der Vervielfältigung der Unterlagen, oder Teilen

Mehr

S/W mit PhotoLine. Inhaltsverzeichnis. PhotoLine

S/W mit PhotoLine. Inhaltsverzeichnis. PhotoLine PhotoLine S/W mit PhotoLine Erstellt mit Version 16.11 Ich liebe Schwarzweiß-Bilder und schaue mir neidisch die Meisterwerke an, die andere Fotografen zustande bringen. Schon lange versuche ich, auch so

Mehr

Handbuch. TMBackup R3

Handbuch. TMBackup R3 Handbuch TMBackup R3 Ersteller: EWERK Medical Care GmbH Erstellungsdatum: 05.06.2013 S. 1 Inhalt 1 Vorwort... 3 2 Installation... 3 2.1 Voraussetzungen... 3 2.2 Installation... 3 3 Einstellungen... 4 3.1

Mehr

GITS Steckbriefe 1.9 - Tutorial

GITS Steckbriefe 1.9 - Tutorial Allgemeines Die Steckbriefkomponente basiert auf der CONTACTS XTD Komponente von Kurt Banfi, welche erheblich modifiziert bzw. angepasst wurde. Zuerst war nur eine kleine Änderung der Komponente für ein

Mehr

Explain verstehen. Hans-Jürgen Schönig.

Explain verstehen. Hans-Jürgen Schönig. Explain verstehen Zielsetzung EXPLAIN... Was versucht uns PostgreSQL zu sagen? Wie kann diese Information genutzt werden? Wie erkenne ich Probleme? Abfragen in PostgreSQL Mehrstufige Ausführung Parser:

Mehr

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003 Page 1 of 8 SMTP Konfiguration von Exchange 2003 Kategorie : Exchange Server 2003 Veröffentlicht von webmaster am 25.02.2005 SMTP steht für Simple Mail Transport Protocol, welches ein Protokoll ist, womit

Mehr

Datenbanken Konsistenz und Mehrnutzerbetrieb III

Datenbanken Konsistenz und Mehrnutzerbetrieb III Datenbanken Konsistenz und Mehrnutzerbetrieb III 1. Oracle Architektur! Komponenten des Oracle Servers! Zugriff über Netzwerk 2. Zugriffsrechte! Starten und Schließen der Datenbank! Nutzer und Rollen!

Mehr

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 11.09.2009

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 11.09.2009 Hochschule Darmstadt DATENBANKEN Fachbereich Informatik Praktikum 3 Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 11.09.2009 PL/SQL Programmierung Anwendung des Cursor Konzepts und Stored Procedures Und Trigger

Mehr

MdtTax Programm. Programm Dokumentation. Datenbank Schnittstelle. Das Hauptmenü. Die Bedienung des Programms geht über das Hauptmenü.

MdtTax Programm. Programm Dokumentation. Datenbank Schnittstelle. Das Hauptmenü. Die Bedienung des Programms geht über das Hauptmenü. Programm Die Bedienung des Programms geht über das Hauptmenü. Datenbank Schnittstelle Die Datenbank wir über die Datenbank- Schnittstelle von Office angesprochen. Von Office 2000-2003 gab es die Datenbank

Mehr

ASA Schnittstelle zu Endian Firewall Hotspot aktivieren. Konfiguration ASA jhotel

ASA Schnittstelle zu Endian Firewall Hotspot aktivieren. Konfiguration ASA jhotel ENDIAN DISTRIBUTOR ASA Schnittstelle zu Endian Firewall Hotspot aktivieren Konfiguration ASA jhotel ASA jhotel öffnen Unter den Menüpunkt Einrichtung System System Dort auf Betrieb Kommunikation Internet-Zugang

Mehr

Dieses UPGRADE konvertiert Ihr HOBA-Finanzmanagement 6.2 in die neue Version 6.3. Ein UPGRADE einer DEMO-Version ist nicht möglich.

Dieses UPGRADE konvertiert Ihr HOBA-Finanzmanagement 6.2 in die neue Version 6.3. Ein UPGRADE einer DEMO-Version ist nicht möglich. UPGRADE Version 6.2 -> Version 6.3 Dieses UPGRADE konvertiert Ihr HOBA-Finanzmanagement 6.2 in die neue Version 6.3. Ein UPGRADE einer DEMO-Version ist nicht möglich. Bitte beachten Sie, dass das UPGRADE

Mehr

eurovat Magento Extension Magento - Extension Extension V1.4.2 Dokumentation Version 1.0 SNM-Portal UG (haftungsbeschränkt) & Co. KG Vorherstraße 17

eurovat Magento Extension Magento - Extension Extension V1.4.2 Dokumentation Version 1.0 SNM-Portal UG (haftungsbeschränkt) & Co. KG Vorherstraße 17 Magento Extension eurovat Extension V1.4.2 Dokumentation Version 1.0 Magento - Extension SNM-Portal UG (haftungsbeschränkt) & Co. KG Vorherstraße 17 80997München Tel.: (+49) 89 38156963 E-Mail: cont@snm-portal.de

Mehr

Electronic Systems GmbH & Co. KG

Electronic Systems GmbH & Co. KG Anleitung zum Anlegen eines POP3 E-Mail Kontos Bevor die detaillierte Anleitung für die Erstellung eines POP3 E-Mail Kontos folgt, soll zuerst eingestellt werden, wie oft E-Mail abgerufen werden sollen.

Mehr

Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich

Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich Mitgliederbereich (Version 1.0) Bitte loggen Sie sich in den Mitgliederbereich mit den Ihnen bekannten Zugangsdaten

Mehr

PostgreSQL auf Debian System

PostgreSQL auf Debian System PostgreSQL auf Debian System Inhaltsverzeichnis 1. Installation 1.1 Installation 1.2 Mit postgres anmelden 2. Benutzer anlegen 3. Datenbank anlegen 3.1 Optionen 3.2 Datenbank mydatabase anlegen 4. Datenbank

Mehr

Anleitung. Lesezugriff auf die App CHARLY Termine unter Android Stand: 18.10.2013

Anleitung. Lesezugriff auf die App CHARLY Termine unter Android Stand: 18.10.2013 Anleitung Lesezugriff auf die App CHARLY Termine unter Android Stand: 18.10.2013 CHARLY Termine unter Android - Seite 2 Inhalt Inhalt Einleitung & Voraussetzungen 3 1. Installation und Konfiguration 4

Mehr

Nutritioner V2.0: Lokaler, Synchronisations- und Servermodus

Nutritioner V2.0: Lokaler, Synchronisations- und Servermodus Nutritioner V2.0: Lokaler, Synchronisations- und Servermodus Es stehen drei unterschiedliche Modi für die individuellen Anforderungen zur Verfügung: 1. Servermodus Es besteht ein ständiger Zugriff auf

Mehr

Installationsanleitung für Update SC-Line 2010.3

Installationsanleitung für Update SC-Line 2010.3 SYSTEMVORAUSSETZUNGEN SC-Line 2010.3 benötigt für den Betrieb Windows 2000, Windows XP, Windows Vista - (32Bit und 64Bit), Windows 7 - (32Bit und 64Bit), Windows Server 2003, Windows Server 2008 - (32Bit

Mehr

Telefon-Anbindung. Einrichtung Telefonanlagen. TOPIX Informationssysteme AG. Stand: 14.06.2012

Telefon-Anbindung. Einrichtung Telefonanlagen. TOPIX Informationssysteme AG. Stand: 14.06.2012 Telefon-Anbindung Einrichtung Telefonanlagen Stand: 14.06.2012 TOPIX Informationssysteme AG Inhalt Einrichtung Telefonanlagen... 2 Allgemein... 2 Telefonanlage einrichten... 3 STARFACE... 4 ESTOS... 4

Mehr

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt Inhaltsverzeichnis Aufgabe... 1 Allgemein... 1 Active Directory... 1 Konfiguration... 2 Benutzer erstellen... 3 Eigenes Verzeichnis erstellen... 3 Benutzerkonto erstellen... 3 Profil einrichten... 5 Berechtigungen

Mehr

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt

Mehr

Neuerungen der Ck-Schnittstelle in dms.net 1.9.8 Rev. 4895

Neuerungen der Ck-Schnittstelle in dms.net 1.9.8 Rev. 4895 Neuerungen der Ck-Schnittstelle in dms.net 1.9.8 Rev. 4895 Allgemeine Hinweise: Um die neuen Funktionen nutzen zu können, muss zunächst nur am dms.net-server ein Update auf Version 1.9.8 Rev. 4895 ausgeführt

Mehr

Thermoguard. Thermoguard CIM Custom Integration Module Version 2.70

Thermoguard. Thermoguard CIM Custom Integration Module Version 2.70 Thermoguard Thermoguard CIM Custom Integration Module Version 2.70 Inhalt - Einleitung... 3 - Voraussetzungen... 3 - Aktivierung und Funktion der Schnittstelle... 3 - Parameter... 4 - NLS-Einfluss... 4

Mehr

Datensicherung. Mögliche Vorgehensweisen:

Datensicherung. Mögliche Vorgehensweisen: Datensicherung Car&GO! Daten können schnell und mit hoher Sicherheit mit dem mitgelieferten Programm Backup.exe gesichert werden. Das Programm ist in jedem Verzeichnis enthalten aus dem das Cargo-Hauptprogramm

Mehr

Einrichten der TSM-Backup-Software unter dem Betriebssystem Windows

Einrichten der TSM-Backup-Software unter dem Betriebssystem Windows Einrichten der TSM-Backup-Software unter dem Betriebssystem Windows TSM-Service 17.03.2016 1 Inhaltsverzeichnis 1. INSTALLATION 3 2. KONFIGURATION 9 3. EINRICHTUNG DER TSM-DIENSTE ZUR AUTOMATISCHEN SICHERUNG

Mehr

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2 5 Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn 7 7. Datenbank-Zugriff Zum Beispiel aus PHP-Skripten: Client 7-2 Struktur einer Datenbank 7-3 Erzeugen von Datenbanken

Mehr

f Link Datenbank installieren und einrichten

f Link Datenbank installieren und einrichten f Link Datenbank installieren und einrichten Dokument-Version 1.1 20.08.2011 Programm-Version 1.0 und höher Autor Dipl.-Ing. Thomas Hogrebe, tommic GmbH Inhalt Versionshistorie... 1 Über dieses Dokument...

Mehr

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 von Markus Mack Stand: Samstag, 17. April 2004 Inhaltsverzeichnis 1. Systemvorraussetzungen...3 2. Installation und Start...3 3. Anpassen der Tabelle...3

Mehr

KeePass Anleitung. 1.0Allgemeine Informationen zu Keepass. KeePass unter Windows7

KeePass Anleitung. 1.0Allgemeine Informationen zu Keepass. KeePass unter Windows7 KeePass Anleitung 1.0Allgemeine Informationen zu Keepass KeePass unter Windows7 2.0 Installation unter Windows7 2.1 Erstellen einer neuen Datenbank 2.2 Speichern von Benutzernamen und Passwörtern 2.3 Sprache

Mehr

Anleitung zum Prüfen von WebDAV

Anleitung zum Prüfen von WebDAV Brainloop Secure Dataroom Version 8.20 Copyright Brainloop AG, 2004-2014. Alle Rechte vorbehalten. Sämtliche verwendeten Markennamen und Markenzeichen sind Eigentum der jeweiligen Markeninhaber. Inhaltsverzeichnis

Mehr

Benutzerhandbuch - Elterliche Kontrolle

Benutzerhandbuch - Elterliche Kontrolle Benutzerhandbuch - Elterliche Kontrolle Verzeichnis Was ist die mymaga-startseite? 1. erste Anmeldung - Administrator 2. schnittstelle 2.1 Administrator - Hautbildschirm 2.2 Administrator - rechtes Menü

Mehr

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage .htaccess HOWTO zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage Stand: 21.06.2015 Inhaltsverzeichnis 1. Vorwort...3 2. Verwendung...4 2.1 Allgemeines...4 2.1 Das Aussehen der.htaccess

Mehr

SQL-Injection. Seite 1 / 16

SQL-Injection. Seite 1 / 16 SQL-Injection Seite 1 / 16 Allgemein: SQL (Structured Query Language) Datenbanksprache zur Definition von Datenstrukturen in Datenbanken Bearbeiten und Abfragen von Datensätzen Definition: SQL-Injection

Mehr

LDAP Konfiguration nach einem Update auf Version 6.3 Version 1.2 Stand: 23. Januar 2012 Copyright MATESO GmbH

LDAP Konfiguration nach einem Update auf Version 6.3 Version 1.2 Stand: 23. Januar 2012 Copyright MATESO GmbH LDAP Konfiguration nach einem Update auf Version 6.3 Version 1.2 Stand: 23. Januar 2012 Copyright MATESO GmbH MATESO GmbH Daimlerstraße 7 86368 Gersthofen www.mateso.de Dieses Dokument beschreibt die Konfiguration

Mehr

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank Die Entscheidung Advoware über VPN direkt auf dem lokalen PC / Netzwerk mit Zugriff auf die Datenbank des zentralen Servers am anderen

Mehr

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar Qt-Seminar Dienstag, 10.2.2009 SQL ist......die Abkürzung für Structured Query Language (früher sequel für Structured English Query Language )...ein ISO und ANSI Standard (aktuell SQL:2008)...eine Befehls-

Mehr

mobilepoi 0.91 Demo Version Anleitung Das Software Studio Christian Efinger Erstellt am 21. Oktober 2005

mobilepoi 0.91 Demo Version Anleitung Das Software Studio Christian Efinger Erstellt am 21. Oktober 2005 Das Software Studio Christian Efinger mobilepoi 0.91 Demo Version Anleitung Erstellt am 21. Oktober 2005 Kontakt: Das Software Studio Christian Efinger ce@efinger-online.de Inhalt 1. Einführung... 3 2.

Mehr

Kurzanleitung zur Erweiterung der htdig

Kurzanleitung zur Erweiterung der htdig Kurzanleitung zur Erweiterung der htdig Inhaltsverzeichnis 1. Einleitung...3 2. Kompilieren des Projektes...3 3. Erweiterung der htdig...4 3.1 Erweiterung der Konfigurationsdatei htdig.conf...4 3.2 XML-Export...4

Mehr

BOKUbox. Zentraler Informatikdienst (ZID/BOKU-IT) Inhaltsverzeichnis

BOKUbox. Zentraler Informatikdienst (ZID/BOKU-IT) Inhaltsverzeichnis BOKUbox BOKUbox ist ein Spezialservice für alle Mitarbeiter/innen der BOKU. Kurzfristiger Austausch von vielen und großen Dateien kann Ihre Mailbox schnell überlasten. BOKUbox ist die perfekte Alternative

Mehr

Internationales Altkatholisches Laienforum

Internationales Altkatholisches Laienforum Internationales Altkatholisches Laienforum Schritt für Schritt Anleitung für die Einrichtung eines Accounts auf admin.laienforum.info Hier erklären wir, wie ein Account im registrierten Bereich eingerichtet

Mehr

Wie halte ich Ordnung auf meiner Festplatte?

Wie halte ich Ordnung auf meiner Festplatte? Wie halte ich Ordnung auf meiner Festplatte? Was hältst du von folgender Ordnung? Du hast zu Hause einen Schrank. Alles was dir im Wege ist, Zeitungen, Briefe, schmutzige Wäsche, Essensreste, Küchenabfälle,

Mehr

Notizen. 1 Inhaltsverzeichnis 1 INHALTSVERZEICHNIS... 1 2 EINLEITUNG... 2 3 KONFIGURATIONSEINSTELLUNGEN... 3 4 VERTRAUENSWÜRDIGE SITES HINZUFÜGEN...

Notizen. 1 Inhaltsverzeichnis 1 INHALTSVERZEICHNIS... 1 2 EINLEITUNG... 2 3 KONFIGURATIONSEINSTELLUNGEN... 3 4 VERTRAUENSWÜRDIGE SITES HINZUFÜGEN... Seite1 1 Inhaltsverzeichnis 1 INHALTSVERZEICHNIS... 1 2 EINLEITUNG... 2 3 KONFIGURATIONSEINSTELLUNGEN... 3 3.1 KONFIGURATIOSNEINSTELLUNGEN FÜR INTERNET EXPLORER... 3 3.2 ANZAHL AN GLEICHZEITIGEN DOWNLOADS

Mehr

RetSoft Archiv Expert - Admin

RetSoft Archiv Expert - Admin RetSoft Archiv Expert - Admin Zusammenfassung Das Admin-Tool kann zur Erstellung, Konvertierung und Auswahl von Datenbanken, zur Verwaltung von Benutzerkonten und Erneuerungen der Lizenzen benutzt werden.

Mehr

Safexpert Oracle Datenbank Konnektor. Stand: 02.01.2012. IBF-Automatisierungs-und Sicherheitstechnik GmbH A-6682 Vils Bahnhofstraße 8

Safexpert Oracle Datenbank Konnektor. Stand: 02.01.2012. IBF-Automatisierungs-und Sicherheitstechnik GmbH A-6682 Vils Bahnhofstraße 8 Safexpert Oracle Datenbank Konnektor Stand: 02.01.2012 IBF-Automatisierungs-und Sicherheitstechnik GmbH A-6682 Vils Bahnhofstraße 8 Tel.: +43 (0) 5677 5353 0 E-Mail: office@ibf.at 1 Kurzüberblick über

Mehr

Automatisierung ( Fernsteuerung ) von Excel unter Microsoft Windows Tilman Küpper (tilman.kuepper@hm.edu)

Automatisierung ( Fernsteuerung ) von Excel unter Microsoft Windows Tilman Küpper (tilman.kuepper@hm.edu) HMExcel Automatisierung ( Fernsteuerung ) von Excel unter Microsoft Windows Tilman Küpper (tilman.kuepper@hm.edu) Inhalt 1. Einleitung...1 2. Beispiele...2 2.1. Daten in ein Tabellenblatt schreiben...2

Mehr

Prozedurale Datenbank- Anwendungsprogrammierung

Prozedurale Datenbank- Anwendungsprogrammierung Idee: Erweiterung von SQL um Komponenten von prozeduralen Sprachen (Sequenz, bedingte Ausführung, Schleife) Bezeichnung: Prozedurale SQL-Erweiterung. In Oracle: PL/SQL, in Microsoft SQL Server: T-SQL.

Mehr

Guideline. Facebook Posting. mit advertzoom Version 2.3

Guideline. Facebook Posting. mit advertzoom Version 2.3 Guideline Facebook Posting mit advertzoom Version 2.3 advertzoom GmbH advertzoom GmbH Stand November 2012 Seite [1] Inhalt 1 Facebook Posting Schnittstelle... 3 1.1 Funktionsüberblick... 3 2 Externe Ressource

Mehr

Typo 3 installieren. Schritt 1: Download von Typo3

Typo 3 installieren. Schritt 1: Download von Typo3 Typo 3 installieren Bevor Sie Typo3 installieren, müssen Sie folgende Informationen beachten: Typo3 benötigt eine leere Datenbank. Mit Ihrem Abonnement verfügen Sie über eine einzige Datenbank. Sie können

Mehr

Installationsanweisung editit

Installationsanweisung editit Bei der Installation wird zwischen dem editit Server und dem editit Client unterschieden. Installieren Sie zuerst den editit Server (ab Seite 1) und anschließend den editit Client (ab Seite 8). Installation

Mehr

Umzug der Datenbank Firebird auf MS SQL Server

Umzug der Datenbank Firebird auf MS SQL Server Umzug der Datenbank Firebird auf MS SQL Server Umzugsanleitung auf MS SQL Server Im Folgenden wird ein Umzug der julitec CRM Datenbank von Firebird auf MS SQL Server 2008 Express R2 beschrieben. Datensicherung

Mehr

Windows Server 2012 RC2 konfigurieren

Windows Server 2012 RC2 konfigurieren Windows Server 2012 RC2 konfigurieren Kurzanleitung um einen Windows Server 2012 als Primären Domänencontroller einzurichten. Vorbereitung und Voraussetzungen In NT 4 Zeiten, konnte man bei der Installation

Mehr

Installationsleitfaden kabelsafe backup professional unter MS Windows

Installationsleitfaden kabelsafe backup professional unter MS Windows Installationsleitfaden kabelsafe backup professional unter MS Windows Installationsanleitung und Schnelleinstieg kabelsafe backup professional (kabelnet-obm) unter MS Windows Als PDF herunterladen Diese

Mehr

How to install freesshd

How to install freesshd Enthaltene Funktionen - Installation - Benutzer anlegen - Verbindung testen How to install freesshd 1. Installation von freesshd - Falls noch nicht vorhanden, können Sie das Freeware Programm unter folgendem

Mehr

Ein neues Outlook Konto können Sie im Control Panel über den Eintrag Mail erstellen.

Ein neues Outlook Konto können Sie im Control Panel über den Eintrag Mail erstellen. Ein neues Outlook Konto können Sie im Control Panel über den Eintrag Mail erstellen. Wählen Sie nun Show Profiles und danach Add. Sie können einen beliebigen Namen für das neue Outlook Profil einsetzen.

Mehr

Anleitungsbeschreibung

Anleitungsbeschreibung Anleitungsbeschreibung Diese Anleitung zeigt, wie man auf einem leeren FreeNAS Volumes anlegt, Datasets einrichtet User und Gruppen anlegt und CIFS Freigaben auf die Datasets mit entsprechenden User-Rechten

Mehr

Synchronisations- Assistent

Synchronisations- Assistent TimePunch Synchronisations- Assistent Benutzerhandbuch Gerhard Stephan Softwareentwicklung -und Vertrieb 25.08.2011 Dokumenten Information: Dokumenten-Name Benutzerhandbuch, Synchronisations-Assistent

Mehr

Kurzanleitung RACE APP

Kurzanleitung RACE APP Kurzanleitung RACE APP Inhalt Leistungsumfang... 1 Erst Registrierung... 2 Benutzung als Fahrer... 2 Benutzung als Veranstalter... 3 Benutzung als Administrator... 5 Leistungsumfang Bei dem RACE APP handelt

Mehr

Arbeiten mit Workflows Installationsleitfaden Zur Installation des d3 Workflows

Arbeiten mit Workflows Installationsleitfaden Zur Installation des d3 Workflows Arbeiten mit Workflows Installationsleitfaden Zur Installation des d3 Workflows Sage ist bei der Erstellung dieses Dokuments mit großer Sorgfalt vorgegangen. Fehlerfreiheit können wir jedoch nicht garantieren.

Mehr

Anleitung: Ändern von Seiteninhalten und anlegen eines News Beitrags auf der Homepage des DAV Zorneding

Anleitung: Ändern von Seiteninhalten und anlegen eines News Beitrags auf der Homepage des DAV Zorneding Anleitung: Ändern von Seiteninhalten und anlegen eines News Beitrags auf der Homepage des DAV Zorneding Diese Anleitung beschreibt die notwendigen Schritte um Seiteninhalte auf der Homepage zu ändern und

Mehr

Anleitung zur Verwendung der VVW-Word-Vorlagen

Anleitung zur Verwendung der VVW-Word-Vorlagen Anleitung zur Verwendung der VVW-Word-Vorlagen v1.0. Jun-15 1 1 Vorwort Sehr geehrte Autorinnen und Autoren, wir haben für Sie eine Dokumentenvorlage für Microsoft Word entwickelt, um Ihnen die strukturierte

Mehr

1. Melden Sie sich als Administrator an und wechseln Sie zum Desktop

1. Melden Sie sich als Administrator an und wechseln Sie zum Desktop Anleitung für die Erstinstallation von ZensTabS1 auf einem Windows 8 PC. Bei der Erstinstallation von ZensTabS1 versucht der Installer als Voraussetzung das MS Framework 1.1 zu installieren, falls es seither

Mehr

Anbindung des Onyx Editors 2.5.1 an das Lernmanagementsystem OLAT Anwendungsdokumentation

Anbindung des Onyx Editors 2.5.1 an das Lernmanagementsystem OLAT Anwendungsdokumentation Anbindung des Onyx Editors 2.5.1 an das Lernmanagementsystem OLAT Anwendungsdokumentation Überblick...2 Konfiguration der OLAT Anbindung...3 Verbindungsaufbau...4 Auschecken von Lernressourcen...5 Einchecken

Mehr

Cisco AnyConnect VPN Client - Anleitung für Windows7

Cisco AnyConnect VPN Client - Anleitung für Windows7 Cisco AnyConnect VPN Client - Anleitung für Windows7 1 Allgemeine Beschreibung 2 2 Voraussetzungen für VPN Verbindungen mit Cisco AnyConnect Software 2 2.1 Allgemeine Voraussetzungen... 2 2.2 Voraussetzungen

Mehr

Prozessarchitektur einer Oracle-Instanz

Prozessarchitektur einer Oracle-Instanz 6. Juni 2008 Inhaltsverzeichnis Oracle Instanz 1 Oracle Instanz 2 3 Redo Log Buffer Shared Pool Java Pool & Large Pool Oracle Instanz Eine Oracle-Instanz ist Hauptbestandteil des Oracle Datenbank Management

Mehr