PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Tipps &Tricks zum Navigieren in der PostgreSQL-Community

In diesem Blog geht es um die PostgreSQL-Community, wie sie funktioniert und wie man am besten darin navigiert. Beachten Sie, dass dies nur ein Überblick ist ... es gibt eine Menge bestehender Dokumentation.

Überblick über die Community, wie Entwicklung funktioniert

PostgreSQL wird von einem weltweit verteilten Netzwerk hochqualifizierter Freiwilliger entwickelt und gepflegt, die sich leidenschaftlich für relationale Datenbanken einsetzen, die als PostgreSQL Global Development Group bezeichnet werden. Eine Handvoll Mitglieder des Kernteams übernehmen gemeinsam besondere Verantwortlichkeiten wie die Koordinierung von Release-Aktivitäten, spezielle interne Kommunikation, Ankündigungen von Richtlinien, die Überwachung von Commit-Privilegien und der Hosting-Infrastruktur, disziplinarische und andere Führungsfragen sowie die individuelle Verantwortung für Spezialcodierungs-, Entwicklungs- und Wartungsbeitragsbereiche . Etwa vierzig weitere Personen gelten als wichtige Mitwirkende, die, wie der Name schon sagt, umfassende Entwicklungs- oder Wartungsaktivitäten für wichtige Codebasisfunktionen oder eng verwandte Projekte durchgeführt haben. Und mehrere Dutzend weitere Personen leisten aktiv verschiedene andere Beiträge. Abgesehen von den aktiven Mitwirkenden wird eine lange Liste früherer Mitwirkender für die Arbeit an dem Projekt anerkannt. Es sind die Fähigkeiten und hohen Standards dieses Teams, die zu dem reichen und robusten Funktionsumfang von PostgreSQL geführt haben.

Viele der Mitwirkenden haben Vollzeitjobs, die sich direkt auf PostgreSQL oder andere Open-Source-Software beziehen, und die enthusiastische Unterstützung ihrer Arbeitgeber macht ihr dauerhaftes Engagement in der PostgreSQL-Community möglich.

Mitwirkende Personen koordinieren mithilfe von Kollaborationstools wie Internet Relay Chat (irc://irc.freenode.net/PostgreSQL) und Mailinglisten der PostgreSQL-Community (https://www.PostgreSQL.org/community/lists). Wenn Sie neu im IRC oder in Mailinglisten sind, dann bemühen Sie sich speziell, sich über Etikette und Protokolle zu informieren (ein guter Artikel erscheint unter https://fedoramagazine.org/beginners-guide-irc/), und nachdem Sie beigetreten sind, geben Sie Geld aus etwas Zeit, um einfach laufenden Gesprächen zuzuhören und die Archive nach früheren ähnlichen Fragen zu durchsuchen, bevor Sie sich mit Ihren eigenen Problemen beschäftigen.

Beachten Sie, dass das Team nicht statisch ist:Jeder kann ein Beitragender werden, indem er einen Beitrag leistet … aber von Ihrem Beitrag wird erwartet, dass er denselben hohen Standards entspricht!

Das Team unterhält eine Wiki-Seite (https://wiki.postgresql.org/), die neben vielen sehr detaillierten und hilfreichen Informationen wie Artikeln, Tutorials, Codeschnipseln und mehr eine TODO-Liste von PostgreSQL-Fehlern und Funktionsanfragen enthält andere Bereiche, in denen möglicherweise Anstrengungen erforderlich sind. Wenn Sie Teil des Teams werden möchten, ist dies ein guter Ort zum Stöbern. Elemente werden nur nach gründlicher Diskussion auf der Entwickler-Mailingliste hinzugefügt.

Die Community folgt einem Prozess, der als Schritte in Abbildung 1 visualisiert wird.

Abbildung 1. Konzeptualisierte Darstellung des PostgreSQL-Entwicklungsprozesses.

Das heißt, es wird erwartet, dass der Wert jeder nicht-trivialen Implementierung von neuem Code zuerst diskutiert und (im Konsens) als wünschenswert erachtet wird. Dann wird in das Design investiert:Design der Schnittstelle, Syntax, Semantik und Verhalten sowie Berücksichtigung von Abwärtskompatibilitätsproblemen. Sie möchten von der Entwickler-Community Unterstützung erhalten, was das zu lösende Problem ist und was diese Implementierung erreichen wird. Sie wollen definitiv NICHT losziehen und etwas in einem Vakuum auf eigene Faust entwickeln. Das Team verfügt buchstäblich über jahrzehntelange kollektive Erfahrung von sehr hoher Qualität, und Sie möchten, und sie erwarten, dass Ideen frühzeitig überprüft werden.

Der PostgreSQL-Quellcode wird mithilfe des Git-Versionskontrollsystems gespeichert und verwaltet, sodass eine lokale Kopie von https://git.postgresql.org/ ausgecheckt werden kann, um mit der Implementierung zu beginnen. Beachten Sie, dass sich Patches für dauerhafte Wartbarkeit in den umgebenden Code einfügen und den etablierten Codierungskonventionen (http://developer.postgresql.org/pgdocs/postgres/source.html) folgen müssen, daher ist es eine gute Idee, ähnlichen Code zu studieren Abschnitte zum Erlernen und Nachahmen der Konventionen. Im Allgemeinen wird das Standardformat BSD-Stil verwendet. Stellen Sie außerdem sicher, dass Sie die Dokumentation entsprechend aktualisieren.

Das Testen beinhaltet zunächst sicherzustellen, dass vorhandene Regressionstests erfolgreich sind und dass es keine Compiler-Warnungen gibt, aber auch das Hinzufügen entsprechender neuer Tests, um die neu implementierte(n) Funktion(en) zu testen.

Wenn die Implementierung der neuen Funktionalität in Ihrem lokalen Repository abgeschlossen ist, verwenden Sie die Git-Vergleichsfunktion, um einen Patch zu erstellen. Patches werden per E-Mail an die pgsql-hackers-Mailingliste zur Überprüfung und Kommentierung gesendet, aber Sie müssen nicht warten, bis Ihre Arbeit abgeschlossen ist … eine kluge Vorgehensweise wäre, schrittweise um Feedback zu bitten. Die Wiki-Seite beschreibt die Erwartungen an das Format und den hilfreichen erklärenden Kontext und wie man Respekt für die Zeit des Code-Reviewers zeigt.

Die Core-Entwickler planen regelmäßig Commit-Fests, bei denen alle angesammelten, nicht angewendeten Patches von autorisierten Committern zum Quellcode-Repository hinzugefügt werden. Als Mitwirkender wird Ihr Code einer strengen Überprüfung unterzogen und wahrscheinlich werden Ihre eigenen Entwicklerfähigkeiten besser dafür sein. Als Gegenleistung wird erwartet, dass Sie sich Zeit nehmen, Patches von anderen zu überprüfen.

Laden Sie noch heute das Whitepaper PostgreSQL-Verwaltung und -Automatisierung mit ClusterControl herunterErfahren Sie, was Sie wissen müssen, um PostgreSQL bereitzustellen, zu überwachen, zu verwalten und zu skalierenLaden Sie das Whitepaper herunter

Top-Websites, um Informationen zu erhalten oder PostgreSQL zu lernen

Community-Website - dies ist der wichtigste Startpunkt für das Leben mit PostgreSQL https://www.postgresql.org/
Wiki - Umfangreiche Themen rund um PostgreSQL https://wiki.postgresql.org/
IRC Channel - Entwickler sind hier aktive Teilnehmer irc://irc.freenode.net/PostgreSQL
Quellcode-Repository https://git.postgresql.org/
pgAdmin-GUI-Client https://www.pgadmin.org/
Biografien bedeutender Community-Mitglieder https://www.postgresql.org/community/contributors/
Eric Raymonds berühmter Beitrag zu intelligenten Fragen http://www.catb.org/esr/faqs/smart-questions.html
Datenbankschema-Änderungssteuerung http://sqitch.org/
Testen von Datenbankkomponenten http://pgtap.org/

Die wenigen Tools, ohne die Sie nicht leben können

Die grundlegenden Kommandozeilen-Tools für die Arbeit mit einer PostgreSQL-Datenbank sind Teil der normalen Distribution. Das Arbeitstier ist das Befehlszeilendienstprogramm psql, das eine interaktive Schnittstelle mit vielen Funktionen zum Abfragen, Anzeigen und Ändern von Datenbankmetadaten sowie zum Ausführen von Datendefinitions- (DDL) und Datenmanipulationsanweisungen (DML) bietet.

Andere erwähnenswerte Dienstprogramme sind pg_basebackup zum Erstellen einer Baseline für replikationsbasierte Sicherungen, pg_dump zum Extrahieren einer Datenbank in eine Skriptdatei oder eine andere Archivdatei, pg_restore zum Wiederherstellen einer aus einem pg_dump-Archiv und andere. Alle diese Tools verfügen über hervorragende Handbuchseiten und werden in der Standarddokumentation und zahlreichen Online-Tutorials ausführlich beschrieben.

pgAdmin ist ein sehr beliebtes Tool für grafische Benutzeroberflächen, das ähnliche Funktionen wie das psql-Befehlszeilendienstprogramm bietet, jedoch mit Point-and-Click-Komfort. Abbildung 2 zeigt einen Screenshot von pgAdmin III. Auf der linken Seite befindet sich ein Bereich, der alle Datenbankobjekte im Cluster auf dem angeschlossenen Hostserver anzeigt. Sie können die Struktur aufschlüsseln, um alle Datenbanken, Schemas, Tabellen, Ansichten, Funktionen usw. aufzulisten, und sogar Tabellen und Ansichten öffnen, um die enthaltenen Daten zu untersuchen. Für jedes Objekt erstellt das Tool auch die SQL-DML zum Löschen und erneuten Erstellen des Objekts, wie im unteren rechten Bereich gezeigt. Dies ist eine bequeme Möglichkeit, während der Datenbankentwicklung Änderungen vorzunehmen.

Abbildung 2. Das Dienstprogramm pgAdmin III.

Einige meiner Lieblingstools für Anwendungsentwicklerteams sind Sqitch (http://sqitch.org/) für die Datenbankänderungskontrolle und pgTAP (http://pgtap.org/). Sqitch ermöglicht eigenständiges Änderungsmanagement und iterative Entwicklung mithilfe von Skripten, die im nativen SQL-Dialekt Ihrer Implementierung geschrieben sind, nicht nur in PostgreSQL. Für jede Datenbankentwurfsänderung schreiben Sie drei Skripts:eines, um die Änderung bereitzustellen, eines, um die Änderung rückgängig zu machen, falls eine Rückkehr zu einer früheren Version erforderlich ist, und eines, um die Änderung zu überprüfen oder zu testen. Die Skripte und zugehörigen Dateien können in Ihrem Versionskontrollsystem direkt neben Ihrem Anwendungscode verwaltet werden. PgTAP ist ein Testframework, das eine Reihe von Funktionen zum Überprüfen der Integrität der Datenbank enthält. Alle pgTAP-Skripte sind ähnlich einfache Textdateien, die mit normalen Revisionsverwaltungs- und Änderungskontrollprozessen kompatibel sind. Als ich anfing, diese beiden Tools zu verwenden, konnte ich mir nur schwer vorstellen, jemals wieder ohne Datenbanken zu arbeiten.

Tipps und Tricks

Die allgemeine PostgreSQL-Mailingliste ist die aktivste der verschiedenen Community-Listen und die wichtigste Community-Schnittstelle für kostenlosen Support für Benutzer. Auf dieser Liste erscheint ein ziemlich breites Spektrum an Fragen, die manchmal zu langem Hin und Her führen, aber meistens schnelle, informative und auf den Punkt gebrachte Antworten erhalten.

Wenn Sie eine Frage zur Verwendung von PostgreSQL stellen, möchten Sie im Allgemeinen immer Hintergrundinformationen angeben, einschließlich der Version von PostgreSQL, die Sie verwenden (aufgelistet vom psql-Befehlszeilentool mit „psql --version“), des Betriebssystems, auf dem der Server ausgeführt wird ausgeführt wird, und dann vielleicht eine Beschreibung der Betriebsumgebung, z. B. ob sie überwiegend leselastig oder schreiblastig ist, typische Anzahl von Benutzern und Parallelitätsbedenken, Änderungen, die Sie an der Standardserverkonfiguration vorgenommen haben (d. h. pg_hba.conf und postgresql.conf-Dateien) usw. Oft ist eine Beschreibung dessen, was Sie zu erreichen versuchen, wertvoller als eine stumpfe Analogie, da Sie möglicherweise Verbesserungsvorschläge erhalten, an die Sie selbst nicht einmal gedacht haben. Außerdem erhalten Sie die beste Antwort, wenn Sie tatsächliche DDL-, DML- und Beispieldaten hinzufügen, die das Problem veranschaulichen und es anderen erleichtern, das nachzubilden, was Sie sehen – ja, die Leute werden Ihren Beispielcode tatsächlich ausführen und mit Ihnen arbeiten.

Wenn Sie nach einer Verbesserung der Abfrageleistung fragen, sollten Sie außerdem den Abfrageplan bereitstellen, d. h. die EXPLAIN-Ausgabe. Dies wird generiert, indem Ihre Abfrage unverändert ausgeführt wird, außer dass ihr buchstäblich das Wort „EXPLAIN“ vorangestellt wird, wie in Abbildung 3 im pgAdmin-Tool oder im psql-Befehlszeilenprogramm gezeigt.

Abbildung 3. Erstellen eines Abfrageplans mit EXPLAIN.

Anstatt die Abfrage tatsächlich auszuführen, gibt der Server unter EXPLAIN den Abfrageplan zurück, der eine detaillierte Ausgabe darüber auflistet, wie die Abfrage ausgeführt wird, einschließlich der Indizes, die zur Optimierung des Datenzugriffs verwendet werden, wo Tabellenscans stattfinden könnten, und Schätzungen der Kosten und Datenmenge, die mit jedem Schritt verbunden sind. Die Art der Hilfe, die Sie von den erfahrenen Praktikern erhalten, die die Mailingliste überwachen, kann Probleme lokalisieren und dabei helfen, mögliche neue Indizes oder Änderungen an den Filter- oder Beitrittskriterien vorzuschlagen.

Zu guter Letzt sollten Sie bei der Teilnahme an Mailinglisten-Diskussionen zwei wichtige Dinge beachten.

Erstens ist der Maillistenserver so eingerichtet, dass er Nachrichten sendet, die so konfiguriert sind, dass Ihre E-Mail-Software standardmäßig nur dem ursprünglichen Verfasser der Nachricht antwortet, wenn Sie antworten. Um sicherzustellen, dass Ihre Nachricht in die Liste aufgenommen wird, müssen Sie die „Allen antworten“-Funktion Ihrer E-Mail-Software verwenden, die dann sowohl den Verfasser der Nachricht als auch die Listenadresse enthält.

Zweitens besteht die Konvention auf den PostgreSQL-Mailinglisten darin, in-line und NOT TOP POST zu antworten. Dieser letzte Punkt ist eine seit langem bestehende Konvention in dieser Gemeinschaft, und für viele Neuankömmlinge scheint es ungewöhnlich genug, dass sanfte Ermahnungen sehr verbreitet sind. Es gibt unterschiedliche Meinungen darüber, wie viel von der ursprünglichen Nachricht für den Kontext in Ihrer Antwort beibehalten werden soll. Manche Leute ärgern sich über das manchmal unhandliche Anwachsen der Nachricht, wenn die gesamte ursprüngliche Nachricht in vielen Hin- und Her-Diskussionen beibehalten wird. Ich persönlich lösche gerne alles, was für das, worauf ich speziell antworte, nicht relevant ist, um die Nachricht knapp und fokussiert zu halten. Denken Sie nur daran, dass der Verlauf von Mailinglisten jahrzehntelang für die historische Dokumentation und zukünftige Recherchen online aufbewahrt wird. Daher wird die Beibehaltung von Kontext und Ablauf als sehr wichtig erachtet.

Dieser Artikel hilft Ihnen beim Einstieg, gehen Sie jetzt weiter und tauchen Sie ein!