近日公開予定のPostgreSQLコースのハッキング

みなさんこんにちは!



本日、16レッスンの「ハッキングPostgreSQL」コースを発表します。このコースでは、オープンDBMSのアーキテクチャ機能を調査し、ソースコードレベルで変更を行います。 このコースはモスクワのPostgres Professionalのサイトで開催されます。 コースは2016年2月に開始する予定です。 講演は2月の会議pgconf.ruの直後に始まり、週に1回夕方に開催されます。 ビデオや講義資料を処理するときに投稿します。



このコースは、当社の開発者の個人的な経験、会議の資料、記事、およびドキュメントとソースコードの思慮深い読書から収集されます。 まず、PostgreSQLカーネルの初心者開発者向けです。 しかし、時にはコードに忍び寄らなければならないDBA、および単に「どのように実際に機能するのか」を知りたい大規模システムのアーキテクチャに関心があるすべての人にとって興味深いでしょう。







コメントに基づいて講義を準備するために、事前にコースを具体的に発表します。 また、予備的な要件があるため:



PostgreSQLの例を使用して、DBMSの内部構造に関するオープンなナレッジベースを作成します。 管理者との激しい議論が相互理解の新しいレベルに達し、開発者のいるユーザーが最終的に同じ言語を話せるようになることを願っています。 そして、コースの準備中に、コードを読み直し、マイナーな欠陥と古いコメントを修正し、TODOに追加できる興味深いタスクを見つけます。



特に16レッスンの場合、広大さを受け入れることは不可能です。 私たちは一生懸命努力しましたが その結果、コースプログラムは次のようになりました。



1.アーキテクチャの概要

最初の講義では、PostgreSQLサブシステムとそれらの関係の一般的な考え方を説明するとともに、以下の講義で使用する用語を簡単に定義することを目的としています。

2. PostgreSQLコミュニティと開発者ツール

PostgreSQLコミュニティの仕組み、国際開発の調整方法、パッチを承認するために必要な手順、初心者カーネル開発者に役立ついくつかの便利なことに関する叙情的な余談。 使用できるようにする必要があるツールの概要と同様に。

3.拡張性

3番目の講義では、拡張機能(contrib)の作成について順を追って説明します。 これは、開発に参加してPostgreSQLに新しい機能を追加する最も簡単で自然な方法です。 さらに、postgresの内部拡張性は、新しいデータ型を追加する例によって考慮されます。

4.ソースコードの概要

この講義では、リクエストのテキストを取得してから結果を発行するまでのさまざまなリクエストの経路をたどります。

5.コード機能

システムのソースコードを理解し、さらにそれを開発するためには、受け入れられた契約に精通する必要があります。 この講義では、Datumデータ型、可変長オブジェクトの処理、さまざまなマクロ、呼び出し規則について説明します。

6.システムカタログ

システムカタログには、システム内のすべてのオブジェクトに関するメタデータが含まれています。 ユーザーテーブル、関数、およびトリガーに関する情報に加えて、データ型、演算子、およびそれらにアクセスするためのメソッドなどに関する情報も格納します。 講義では、メインのカタログテーブルの概要と、それらと対話するためのインターフェイスを提供します。

7.データの物理的表現

この講義の後、属性が行に積み上げられる方法、ページの行、テーブルのページ、およびデータベースのテーブルがどのように積み重ねられるかがわかります。 また、Postgresがデータのアライメントと大きな属性の保存を処理する方法。 これは、アーキテクチャの制限のいくつかを確認し、最適なデータベーススキーマを設計するためのテクニックを理解する(または新しい方法を考え出す)のに役立ちます。

8.メモリを操作する

PostgreSQLは、標準のC言語関数(malloc / free)の代わりに、メモリの操作の利便性と効率のために、palloc / pfreeの類似物を使用します。 この講義では、メモリコンテキストがどのように構成されているか、コード内でそれらを正しく使用する方法、およびメモリの予期せぬ大量消費につながる状況について説明します。

9.共有メモリとロック

この章では、PostgreSQLのメモリマネージャがどのように機能するか、並列トランザクションを正常に動作させるために使用されるロックの種類の数、およびpostgresql.confのメモリ設定が実際に行うことを学習します。

10.ノードとツリー

PostgreSQLのSQLクエリに関する情報は、ノードタイプ構造に含まれています。 これらは、解析ツリーおよびスケジューラ(プランツリー)で、クエリツリー(クエリツリー)のノードとして使用されます。 この講義では、ノードの主なタイプを検討し、前述のツリーの操作アルゴリズムを分析します。

11. PostgreSQLカーネルパッチ

12.デバッグ。 機能とパフォーマンスのテスト

講義では、PostgreSQLを探索できるデバッグおよびテストツールについて説明します。 また、ウォームとソフトの比較を停止して、パフォーマンスを正しくテストする方法についても説明します。

13.トランザクション。 MVCCおよびVACUUM

14. WAL。 リカバリとレプリケーションの両方

WAL、別名先行書き込みログ、別名先行書き込みログ。 この講義では、その形式、使用法、設定について最も有用なものを説明しようとします。

15.インデックス

PostgreSQLでさまざまなタイプのインデックスがどのように配置されるか、データ構造に関する議論、インデックスの効率的な使用とメンテナンスに関するヒント。 開発者との展望および開発の新しいアイデアについての議論への招待状も。

16.一般的なDBMS開発の動向、特にPostgreSQL

このコースの最終講義では、PostgreSQLの開発の見通しについて議論します。 さまざまな種類のクラスター、列ストレージ、メモリ内構造、並列クエリ処理、ヒント、空間データ、およびこのコースには大きすぎるその他の興味深いタスク。



PostgreSQLカーネル開発者のAnastasia Lubennikovaがこのコースを調整して読みます。

コメントに提案や提案を残してください。



UPD:

コースはオープンで無料です。 制限は視聴者の能力に対してのみ可能です。 そのため、実際の応募者数を評価できるように、事前に登録してください。

ここからサインアップできます



All Articles