Improve PostgreSQL DBA roadmap (#7822)

pull/7824/head
Vedansh 2 months ago committed by GitHub
parent 8e1ba1eae2
commit a317d90f14
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 4
      src/data/roadmaps/postgresql-dba/content/adding-extra-extensions@VAf9VzPx70hUf4H6i3Z2t.md
  2. 7
      src/data/roadmaps/postgresql-dba/content/advanced-topics@09QX_zjCUajxUqcNZKy0x.md
  3. 2
      src/data/roadmaps/postgresql-dba/content/ansible@RqSfBR_RuvHrwHfPn1jwZ.md
  4. 2
      src/data/roadmaps/postgresql-dba/content/attributes@XvZMSveMWqmAlXOxwWzdk.md
  5. 4
      src/data/roadmaps/postgresql-dba/content/authentication-models@gb75xOcAr-q8TcA6_l1GZ.md
  6. 2
      src/data/roadmaps/postgresql-dba/content/awk@HJCRntic0aGVvdmCN45aP.md
  7. 6
      src/data/roadmaps/postgresql-dba/content/basic-rdbms-concepts@-M9EFgiDSSAzj9ISk-aeh.md
  8. 4
      src/data/roadmaps/postgresql-dba/content/bulk-loading--processing-data@cc4S7ugIphyBZr-f6X0qi.md
  9. 6
      src/data/roadmaps/postgresql-dba/content/checkpoints--background-writer@3pLn1mhRnekG537ejHUYA.md
  10. 5
      src/data/roadmaps/postgresql-dba/content/configuring@T819BZ-CZgUX_BY7Gna0J.md
  11. 4
      src/data/roadmaps/postgresql-dba/content/constraints@j9ikSpCD3yM5pTRFuJjZs.md
  12. 2
      src/data/roadmaps/postgresql-dba/content/data-partitioning@OiGRtLsc28Tv35vIut6B6.md
  13. 4
      src/data/roadmaps/postgresql-dba/content/data-types@4Pw7udOMIsiaKr7w9CRxc.md
  14. 1
      src/data/roadmaps/postgresql-dba/content/deployment-in-cloud@6SCcxpkpLmmRe0rS8WAPZ.md
  15. 3
      src/data/roadmaps/postgresql-dba/content/etcd@kCw6oEVGdKokCz4wYizIT.md
  16. 4
      src/data/roadmaps/postgresql-dba/content/explaindalibocom@UZ1vRFRjiQAVu6BygqwEL.md
  17. 2
      src/data/roadmaps/postgresql-dba/content/filtering-data@dd2lTNsNzYdfB7rRFMNmC.md
  18. 8
      src/data/roadmaps/postgresql-dba/content/for-schemas@KMdF9efNGULualk5o1W0_.md
  19. 4
      src/data/roadmaps/postgresql-dba/content/gin@FJhJyDWOj9w_Rd_uKcouT.md
  20. 6
      src/data/roadmaps/postgresql-dba/content/high-level-database-concepts@_BSR2mo1lyXEFXbKYb1ZG.md
  21. 2
      src/data/roadmaps/postgresql-dba/content/import--export-using-copy@umNNMpJh4Al1dEpT6YkrA.md
  22. 6
      src/data/roadmaps/postgresql-dba/content/installation-and-setup@FtPiBWMFhjakyXsmSL_CI.md
  23. 4
      src/data/roadmaps/postgresql-dba/content/introduction@lDIy56RyC1XM7IfORsSLD.md
  24. 4
      src/data/roadmaps/postgresql-dba/content/joining-tables@Hura0LImG9pyPxaEIDo3X.md
  25. 7
      src/data/roadmaps/postgresql-dba/content/keepalived@xk2G-HUS-dviNW3BAMmJv.md
  26. 1
      src/data/roadmaps/postgresql-dba/content/learn-sql@ANUgfkADLI_du7iRvnUdi.md
  27. 7
      src/data/roadmaps/postgresql-dba/content/learn-to-automate@e5s7-JRqNy-OhfnjTScZI.md
  28. 34
      src/data/roadmaps/postgresql-dba/content/mailing-lists@8H7hJhGKxr1nrjkHv9Xao.md
  29. 5
      src/data/roadmaps/postgresql-dba/content/mvcc@-_ADJsTVGAgXq7_-8bdIO.md
  30. 7
      src/data/roadmaps/postgresql-dba/content/null@91eOGK8mtJulWRlhKyv0F.md
  31. 10
      src/data/roadmaps/postgresql-dba/content/object-model@RoYP1tYw5dvhmkVTo1HS-.md
  32. 4
      src/data/roadmaps/postgresql-dba/content/object-priviliges@S20aJB-VuSpXYyd0-0S8c.md
  33. 4
      src/data/roadmaps/postgresql-dba/content/operators@nRJKfjW2UrmKmVUrGIfCC.md
  34. 8
      src/data/roadmaps/postgresql-dba/content/package-managers@pEtQy1nuW98YUwrbfs7Np.md
  35. 16
      src/data/roadmaps/postgresql-dba/content/patroni-alternatives@TZvZ_jNjWnM535ZktyhQN.md
  36. 24
      src/data/roadmaps/postgresql-dba/content/pgbouncer-alternatives@3V1PPIeB0i9qNUsT8-4O-.md
  37. 4
      src/data/roadmaps/postgresql-dba/content/puppet@e39bceamU-lq3F2pmLz6v.md
  38. 4
      src/data/roadmaps/postgresql-dba/content/query-processing@Qk14b9WyeCp9RV9WAwojt.md
  39. 4
      src/data/roadmaps/postgresql-dba/content/recursive-cte@A1LGOqqaka0ILcYwybclP.md
  40. 21
      src/data/roadmaps/postgresql-dba/content/relational-model@mDVbjdVN0spY7dI_8k1YW.md
  41. 6
      src/data/roadmaps/postgresql-dba/content/relations@2hM2IPAnNYq-LlEbcFp2Z.md
  42. 2
      src/data/roadmaps/postgresql-dba/content/reporting-logging--statistics@507TY35b8iExakbBMrHgZ.md
  43. 26
      src/data/roadmaps/postgresql-dba/content/reviewing-patches@Jy0G0ZnHPOM8hba_PbwuA.md
  44. 4
      src/data/roadmaps/postgresql-dba/content/row-level-security@bokFf6VNrLcilI9Hid386.md
  45. 3
      src/data/roadmaps/postgresql-dba/content/rows@Rd3RLpyLMGQZzrxQrxDGo.md
  46. 4
      src/data/roadmaps/postgresql-dba/content/schemas@mF6qAlo2ULJ3lECG2m0h7.md
  47. 7
      src/data/roadmaps/postgresql-dba/content/security@2Zg8R5gs9LMQOcOMZtoPk.md
  48. 3
      src/data/roadmaps/postgresql-dba/content/shell-scripts@-clI2RmfhK8F8beHULaIB.md
  49. 4
      src/data/roadmaps/postgresql-dba/content/sql-query-patterns--anti-patterns@G9DB1ZQjgXaHxJ4Lm6xGx.md
  50. 2
      src/data/roadmaps/postgresql-dba/content/top@pvj33qDiG3sSjtiW6sUra.md
  51. 12
      src/data/roadmaps/postgresql-dba/content/tuples@vJhvgGwNV3JB-wWn_0gMb.md
  52. 1
      src/data/roadmaps/postgresql-dba/content/using-docker@5MjJIAcn5zABCK6JsFf4k.md
  53. 2
      src/data/roadmaps/postgresql-dba/content/using-pg_ctlcluster@v3SoKmeCh6uxKW5GAAMje.md
  54. 5
      src/data/roadmaps/postgresql-dba/content/what-are-relational-databases@soar-NBWCr4xVKj7ttfnc.md
  55. 4
      src/data/roadmaps/postgresql-dba/content/zabbix@z3VD68R2uyu1s-3giRxKr.md

@ -4,5 +4,5 @@ PostgreSQL provides various extensions to enhance its features and functionaliti
Learn more from the following resources:
- [@official@PostgreSQL extensions](https://www.postgresql.org/download/products/6-postgresql-extensions/)
- [@official@Create Extension](https://www.postgresql.org/docs/current/sql-createextension.html)
- [@official@PostgreSQL Extensions](https://www.postgresql.org/download/products/6-postgresql-extensions/)
- [@official@Create Extension](https://www.postgresql.org/docs/current/sql-createextension.html)

@ -1,3 +1,8 @@
# Advanced Topics in PostgreSQL Security
In addition to basic PostgreSQL security concepts, such as user authentication, privilege management, and encryption, there are several advanced topics that you should be aware of to enhance the security of your PostgreSQL databases.
In addition to basic PostgreSQL security concepts, such as user authentication, privilege management, and encryption, there are several advanced topics that you should be aware of to enhance the security of your PostgreSQL databases.
Visit the following resources to learn more:
- [@article@Best Practices for Postgres Security](https://www.timescale.com/learn/postgres-security-best-practices)
- [@article@PostgreSQL - Encryption and Monitoring](https://www.enterprisedb.com/postgresql-best-practices-encryption-monitoring)

@ -4,6 +4,6 @@ Ansible is a widely used open-source configuration management and provisioning t
Learn more from the following resources:
- [@official@Ansible Website](https://www.ansible.com/)
- [@official@Ansible](https://www.ansible.com/)
- [@opensource@ansible/ansible](https://github.com/ansible/ansible)
- [@article@Ansible Tutorial for Beginners: Ultimate Playbook & Examples](https://spacelift.io/blog/ansible-tutorial)

@ -4,5 +4,5 @@ Attributes in the relational model are the columns of a table, representing the
Learn more from the following resources:
- [@article@What is a relational Model?](https://www.guru99.com/relational-data-model-dbms.html)
- [@article@What is a Relational Model?](https://www.guru99.com/relational-data-model-dbms.html)
- [@article@Relational Model in DBMS](https://www.scaler.com/topics/dbms/relational-model-in-dbms/)

@ -4,5 +4,5 @@ PostgreSQL supports various authentication models to control access, including t
Learn more from the following resources:
- [@official@Authentication methods](https://www.postgresql.org/docs/current/auth-methods.html)
- [@article@An introduction to authorization and authentication in PostgreSQL](https://www.prisma.io/dataguide/postgresql/authentication-and-authorization/intro-to-authn-and-authz)
- [@official@Authentication Methods](https://www.postgresql.org/docs/current/auth-methods.html)
- [@article@An Introduction to Authorization and Authentication in PostgreSQL](https://www.prisma.io/dataguide/postgresql/authentication-and-authorization/intro-to-authn-and-authz)

@ -5,5 +5,5 @@ Awk is a versatile text processing tool that is widely used for various data man
Learn more from the following resources:
- [@article@Awk](https://www.grymoire.com/Unix/Awk.html)
- [@article@Awk command in Linux/Unix](https://www.digitalocean.com/community/tutorials/awk-command-linux-unix)
- [@article@Awk Command in Linux/Unix](https://www.digitalocean.com/community/tutorials/awk-command-linux-unix)
- [@video@Tutorial - AWK in 300 Seconds](https://www.youtube.com/watch?v=15DvGiWVNj0)

@ -1,3 +1,7 @@
# RDBMS Concepts
Relational Database Management Systems (RDBMS) are a type of database management system which stores and organizes data in tables, making it easy to manipulate, query, and manage the information. They follow the relational model defined by E.F. Codd in 1970, which means that data is represented as tables with rows and columns.
Relational Database Management Systems (RDBMS) are a type of database management system which stores and organizes data in tables, making it easy to manipulate, query, and manage the information. They follow the relational model defined by E.F. Codd in 1970, which means that data is represented as tables with rows and columns.
Visit the following resources to learn more:
- [@article@Understanding Relational Database Management Systems](https://www.essentialsql.com/understanding-relational-databases-a-beginners-guide/)

@ -4,5 +4,5 @@ Bulk load process data involves transferring large volumes of data from external
Learn more from the following resources:
- [@article@7 Best Practice Tips for PostgreSQL Bulk Data Loading](https://www.enterprisedb.com/blog/7-best-practice-tips-postgresql-bulk-data-loading)
- [@official@Populating a Database](https://www.postgresql.org/docs/current/populate.html)
- [@official@Populating a Database](https://www.postgresql.org/docs/current/populate.html)
- [@article@7 Best Practice Tips for PostgreSQL Bulk Data Loading](https://www.enterprisedb.com/blog/7-best-practice-tips-postgresql-bulk-data-loading)

@ -2,12 +2,8 @@
In PostgreSQL, checkpoints and the background writer are essential for maintaining data integrity and optimizing performance. Checkpoints periodically write all modified data (dirty pages) from the shared buffers to the disk, ensuring that the database can recover to a consistent state after a crash. This process is controlled by settings such as `checkpoint_timeout`, `checkpoint_completion_target`, and `max_wal_size`, balancing between write performance and recovery time. The background writer continuously flushes dirty pages to disk in the background, smoothing out the I/O workload and reducing the amount of work needed during checkpoints. This helps to maintain steady performance and avoid spikes in disk activity. Proper configuration of these mechanisms is crucial for ensuring efficient disk I/O management and overall database stability.
Checkpoints periodically write all modified data (dirty pages) from the shared buffer cache to the disk, ensuring that the database can recover to a consistent state after a crash. The frequency of checkpoints is controlled by parameters like `checkpoint_timeout`, `checkpoint_completion_target`, and `checkpoint_segments`, balancing the trade-off between I/O load and recovery time.
The background writer, on the other hand, continuously flushes dirty pages to disk, smoothing out the I/O workload and reducing the amount of work needed during a checkpoint. Parameters such as `bgwriter_delay`, `bgwriter_lru_maxpages`, and `bgwriter_lru_multiplier` control its behavior, optimizing the balance between database performance and the frequency of disk writes. Proper configuration of both components ensures efficient disk I/O management, minimizes performance bottlenecks, and enhances overall system stability.
Learn more from the following resources:
- [@official@Checkpoints](https://www.postgresql.org/docs/current/sql-checkpoint.html)
- [@article@What is a checkpoint?](https://www.cybertec-postgresql.com/en/postgresql-what-is-a-checkpoint/)
- [@article@What are the difference between background writer and checkpoint in postgresql?](https://stackoverflow.com/questions/71534378/what-are-the-difference-between-background-writer-and-checkpoint-in-postgresql)
- [@article@What are the difference between background writer and checkpoint in postgresql?](https://stackoverflow.com/questions/71534378/what-are-the-difference-between-background-writer-and-checkpoint-in-postgresql)

@ -1,3 +1,8 @@
# Configuring PostgreSQL
Configuring PostgreSQL involves modifying several key configuration files to optimize performance, security, and functionality. The primary configuration files are postgresql.conf, pg_hba.conf, and pg_ident.conf, typically located in the PostgreSQL data directory. By properly configuring these files, you can tailor PostgreSQL to better fit your specific needs and environment.
Visit the following resources to learn more:
- [@official@Configuring PostgreSQL](https://www.postgresql.org/docs/current/runtime-config.html)
- [@article@Install and Configure PostgreSQL](https://ubuntu.com/server/docs/install-and-configure-postgresql)

@ -16,5 +16,5 @@ Constraints are an essential part of the relational model, as they define rules
Learn more from the following resources:
- [@official@Contraints](https://www.postgresql.org/docs/current/ddl-constraints.html)
- [@article@PostgreSQL - Contraints](https://www.tutorialspoint.com/postgresql/postgresql_constraints.htm)
- [@official@Constraints](https://www.postgresql.org/docs/current/ddl-constraints.html)
- [@article@PostgreSQL - Constraints](https://www.tutorialspoint.com/postgresql/postgresql_constraints.htm)

@ -5,4 +5,4 @@ Data partitioning is a technique that divides a large table into smaller, more m
Learn more from the following resources:
- [@official@Table Partitioning](https://www.postgresql.org/docs/current/ddl-partitioning.html)
- [@article@How to use table partitioning to scale PostgreSQL](https://www.enterprisedb.com/postgres-tutorials/how-use-table-partitioning-scale-postgresql)
- [@article@How to use Table Partitioning to Scale PostgreSQL](https://www.enterprisedb.com/postgres-tutorials/how-use-table-partitioning-scale-postgresql)

@ -1,9 +1,9 @@
# Data Types in PostgreSQL
PostgreSQL offers a rich and diverse set of data types, catering to a wide range of applications and ensuring data integrity and performance. These include standard numeric types such as integers, floating-point numbers, and serial types for auto-incrementing fields. Character types like VARCHAR and TEXT handle varying lengths of text, while DATE, TIME, and TIMESTAMP support a variety of temporal data requirements. PostgreSQL also supports a comprehensive set of Boolean, enumerated (ENUM), and composite types, enabling more complex data structures. Additionally, it excels with its support for JSON and JSONB data types, allowing for efficient storage and querying of semi-structured data. The inclusion of array types, geometric data types, and the PostGIS extension for geographic data further extends PostgreSQL's versatility, making it a powerful tool for a broad spectrum of data management needs.
PostgreSQL offers a rich and diverse set of data types, catering to a wide range of applications and ensuring data integrity and performance. These include standard numeric types such as integers, floating-point numbers, and serial types for auto-incrementing fields. Character types like `VARCHAR` and `TEXT` handle varying lengths of text, while DATE, TIME, and TIMESTAMP support a variety of temporal data requirements. PostgreSQL also supports a comprehensive set of Boolean, enumerated (ENUM), and composite types, enabling more complex data structures. Additionally, it excels with its support for JSON and JSONB data types, allowing for efficient storage and querying of semi-structured data. The inclusion of array types, geometric data types, and the PostGIS extension for geographic data further extends PostgreSQL's versatility, making it a powerful tool for a broad spectrum of data management needs.
Learn more from the following resources:
- [@official@Data Types](https://www.postgresql.org/docs/current/datatype.html)
- [@article@An introduction to PostgreSQL data types](https://www.prisma.io/dataguide/postgresql/introduction-to-data-types)
- [@article@Introduction to PostgreSQL DataTypes](https://www.prisma.io/dataguide/postgresql/introduction-to-data-types)
- [@article@PostgreSQL® Data Types: Mappings to SQL, JDBC, and Java Data Types](https://www.instaclustr.com/blog/postgresql-data-types-mappings-to-sql-jdbc-and-java-data-types/)

@ -4,5 +4,6 @@ In this section, we will discuss deploying PostgreSQL in the cloud. Deploying yo
Learn more from the following resources:
- [@article@5 Ways to Host PostgreSQL Databases](https://www.prisma.io/dataguide/postgresql/5-ways-to-host-postgresql)
- [@article@Postgres On Kubernetes](https://cloudnative-pg.io/)
- [@feed@Explore top posts about Cloud](https://app.daily.dev/tags/cloud?ref=roadmapsh)

@ -6,5 +6,6 @@ Etcd can be utilized in conjunction with _connection poolers_ such as PgBouncer
Learn more from the following resources:
- [@opensource@PostgreSQL High Availability with Etcd](https://github.com/patroni/patroni)
- [@video@PostgreSQL High Availability](https://www.youtube.com/watch?v=J0ErkLo2b1E)
- [@articles@etcd vs PostgreSQL](https://api7.ai/blog/etcd-vs-postgresql)
- [@articles@etcd vs PostgreSQL](https://api7.ai/blog/etcd-vs-postgresql)

@ -1,7 +1,7 @@
# explain.dalibo.com
explain.dalibo.com is a free service that allows you to analyze the execution plan of your queries. It is based on the [explain.depesz.com](explain.depesz.com) service.
explain.dalibo.com is a free service that allows you to analyze the execution plan of your queries. It is based on the explain.depesz.com service.
Learn more from the following resources:
- [@article@explain.dalibo.com](https://explain.dalibo.com/)
- [@official@explain.dalibo.com](https://explain.dalibo.com/)

@ -4,6 +4,6 @@ Filtering data is an essential feature in any database management system, and Po
Learn more from the following resources:
- [@article@How to filter query results in PostgreSQL](https://www.prisma.io/dataguide/postgresql/reading-and-querying-data/filtering-data)
- [@article@How to Filter Query Results in PostgreSQL](https://www.prisma.io/dataguide/postgresql/reading-and-querying-data/filtering-data)
- [@article@Using PostgreSQL FILTER](https://www.crunchydata.com/blog/using-postgres-filter)
- [@article@PostgreSQL - WHERE](https://www.w3schools.com/postgresql/postgresql_where.php)

@ -1,10 +1,8 @@
# Schemas in PostgreSQL
A schema is a logical collection of database objects within a PostgreSQL database. It behaves like a namespace that allows you to group and isolate your database objects separately from other schemas. The primary goal of a schema is to organize your database structure, making it easier to manage and maintain.
By default, every PostgreSQL database has a `public` schema, which is the default search path for any unqualified table or other database object.
A schema is a logical collection of database objects within a PostgreSQL database. It behaves like a namespace that allows you to group and isolate your database objects separately from other schemas. The primary goal of a schema is to organize your database structure, making it easier to manage and maintain. By default, every PostgreSQL database has a `public` schema, which is the default search path for any unqualified table or other database object.
Learn more from the following resources:
- [@article@PostgreSQL Schema](https://hasura.io/learn/database/postgresql/core-concepts/1-postgresql-schema/)
- [@official@Schemas](https://www.postgresql.org/docs/current/ddl-schemas.html)
- [@official@Schemas](https://www.postgresql.org/docs/current/ddl-schemas.html)
- [@article@PostgreSQL Schema](https://hasura.io/learn/database/postgresql/core-concepts/1-postgresql-schema/)

@ -4,5 +4,5 @@ Generalized Inverted Index (GIN) is a powerful indexing method in PostgreSQL tha
Learn more from the following resources:
- [@article@Generalized Inverted Indexes](https://www.cockroachlabs.com/docs/stable/inverted-indexes)
- [@article@GIN Introduction](https://www.postgresql.org/docs/current/gin-intro.html)
- [@official@GIN Introduction](https://www.postgresql.org/docs/current/gin-intro.html)
- [@article@Generalized Inverted Indexes](https://www.cockroachlabs.com/docs/stable/inverted-indexes)

@ -1,3 +1,7 @@
# High Level Database Concepts
High-level database concepts encompass fundamental principles that underpin the design, implementation, and management of database systems. These concepts form the foundation of effective database management, enabling the design of robust, efficient, and scalable systems.
High-level database concepts encompass fundamental principles that underpin the design, implementation, and management of database systems. These concepts form the foundation of effective database management, enabling the design of robust, efficient, and scalable systems.
Visit the following resources to learn more:
- [@article@Demystifying PostgreSQL: 10 Crucial Concepts and Files](https://medium.com/@RohitAjaygupta/demystifying-postgresql-10-crucial-concepts-and-files-explained-with-practical-examples-a5a70cd2b848)

@ -7,4 +7,4 @@ If you can't use the `COPY` command due to lack of privileges, consider using th
Learn more from the following resources:
- [@official@COPY](https://www.postgresql.org/docs/current/sql-copy.html)
- [@article@Copying data between tables in PostgreSQL](https://www.atlassian.com/data/sql/copying-data-between-tables)
- [@article@Copying Data Between Tables in PostgreSQL](https://www.atlassian.com/data/sql/copying-data-between-tables)

@ -1,2 +1,8 @@
# Installation and Setup of PostgreSQL
To install and set up PostgreSQL, begin by downloading the installer from the official PostgreSQL website for your operating system (Windows, macOS, or Linux). For Windows, run the installer and follow the prompts to configure components, set a password for the superuser (postgres), and choose the installation directory and port (default is 5432). On macOS, using Homebrew is the recommended method; simply run brew install postgresql in the terminal, then initialize the database with brew services start postgresql. For Linux, use the package manager (APT for Debian/Ubuntu or YUM for CentOS/RHEL) to install PostgreSQL, followed by initializing the database and starting the service. After installation, you can access PostgreSQL using the psql command-line tool to create databases and manage your data effectively.
Visit the following resources to learn more:
- [@official@Installing PostgreSQL](https://www.postgresql.org/download/)
- [@article@PostgreSQL - Installation](https://www.postgresql.org/docs/current/tutorial-install.html)

@ -2,4 +2,8 @@
PostgreSQL is a powerful, open-source Object-Relational Database Management System (ORDBMS) that is known for its robustness, extensibility, and SQL compliance. It was initially developed at the University of California, Berkeley, in the 1980s and has since become one of the most popular open-source databases in the world.
Visit the following resources to learn more:
- [@official@PostgreSQL](https://www.postgresql.org/)
- [@official@PostgreSQL Documentation](https://www.postgresql.org/docs/)
- [@article@History of POSTGRES to PostgreSQL](https://www.postgresql.org/docs/current/history.html)

@ -4,5 +4,5 @@ Joining tables is a fundamental operation in the world of databases. It allows y
Learn more from the following resources:
- [@official@Joins between tables](https://www.postgresql.org/docs/current/tutorial-join.html)
- [@article@PostgreSQL - Joins](https://www.w3schools.com/postgresql/postgresql_joins.php)
- [@official@Joins Between Tables](https://www.postgresql.org/docs/current/tutorial-join.html)
- [@article@PostgreSQL - Joins](https://www.w3schools.com/postgresql/postgresql_joins.php)

@ -2,11 +2,10 @@
Keepalived is a robust and widely-used open-source solution for load balancing and high availability. It helps to maintain a stable and perfect working environment even in the presence of failures such as server crashes or connectivity issues.
Keepalived achieves this by utilizing the Linux Virtual Server (LVS) module and the Virtual Router Redundancy Protocol (VRRP).
For PostgreSQL database systems, Keepalived can be an advantageous addition to your infrastructure by offering fault tolerance and load balancing. With minimal configuration, it distributes read-only queries among multiple replicated PostgreSQL servers or divides transaction processing across various nodes – ensuring an efficient and resilient system.
Keepalived achieves this by utilizing the Linux Virtual Server (LVS) module and the Virtual Router Redundancy Protocol (VRRP). For PostgreSQL database systems, Keepalived can be an advantageous addition to your infrastructure by offering fault tolerance and load balancing. With minimal configuration, it distributes read-only queries among multiple replicated PostgreSQL servers or divides transaction processing across various nodes – ensuring an efficient and resilient system.
Learn more from the following resources:
- [@official@Keepalived Website](https://www.keepalived.org/)
- [@official@Keepalived](https://www.keepalived.org/)
- [@opensource@acassen/keepalived](https://github.com/acassen/keepalived)
- [@article@Keepalived: High Availability for Self-hosted Services](https://www.virtualizationhowto.com/2023/09/keepalived-high-availability-for-self-hosted-services/)

@ -5,3 +5,4 @@ SQL stands for Structured Query Language. It is a standardized programming langu
Visit the following resources to learn more:
- [@roadmap@Visit Dedicated SQL Roadmap](https://roadmap.sh/sql)
- [@article@SQL Tutorial - Essential SQL For The Beginners](https://www.sqltutorial.org/)

@ -1,3 +1,8 @@
# Learn Automation in PostgreSQL
When working with PostgreSQL, automating repetitive and time-consuming tasks is crucial for increasing efficiency and reliability in your database operations.
When working with PostgreSQL, automating repetitive and time-consuming tasks is crucial for increasing efficiency and reliability in your database operations.
Visit the following resources to learn more:
- [@article@PostgreSQL - Automation](https://www.postgresql.org/docs/current/maintenance.html)
- [@article@Autoscaling Azure PostgreSQL Server with Automation Tasks](https://techcommunity.microsoft.com/blog/adforpostgresql/autoscaling-azure-postgresql-server-with-automation-tasks/3911718)

@ -2,30 +2,14 @@
Mailing lists are an essential part of PostgreSQL's development community. They provide a platform for collaboration, discussion, and problem-solving. By participating in these lists, you can contribute to the development of PostgreSQL, share your knowledge with others, and stay informed about the latest updates, improvements, and conferences.
Here are some prominent mailing lists in PostgreSQL's development community:
PostgreSQL's development community offers a variety of mailing lists for discussions, announcements, and contributions. Key lists include **pgsql-hackers** for core development and feature discussions, **pgsql-announce** for official announcements, **pgsql-general** for general usage and administration queries, **pgsql-novice** for beginners seeking advice, and **pgsql-docs** for documentation-related contributions. Regional and language-specific lists are also available. To engage, subscribe to a mailing list that matches your interests, introduce yourself, read the archives for context, and participate in discussions. For guidelines, follow the Mailing List Etiquette.
- **pgsql-hackers**: This is the primary mailing list for PostgreSQL's core development. It is intended for discussions around new features, patches, performance improvements, and bug fixes. To subscribe, visit [pgsql-hackers Subscription](https://www.postgresql.org/list/pgsql-hackers/).
Visit the following resources to learn more:
- **pgsql-announce**: This mailing list is for official announcements regarding new PostgreSQL releases, security updates, and other important events. To stay updated, you can subscribe at [pgsql-announce Subscription](https://www.postgresql.org/list/pgsql-announce/).
- **pgsql-general**: The pgsql-general mailing list is for general discussions related to PostgreSQL, including usage, administration, configuration, and SQL queries. Subscribe at [pgsql-general Subscription](https://www.postgresql.org/list/pgsql-general/).
- **pgsql-novice**: This mailing list is specifically designed for PostgreSQL beginners who need help or advice. If you're new to PostgreSQL, consider joining this community by subscribing at [pgsql-novice Subscription](https://www.postgresql.org/list/pgsql-novice/).
- **pgsql-docs**: If you're interested in contributing to PostgreSQL's documentation or want to discuss its content, subscribe to the pgsql-docs mailing list at [pgsql-docs Subscription](https://www.postgresql.org/list/pgsql-docs/).
- **Regional and language-specific mailing lists**: PostgreSQL also offers several regional and language-specific mailing lists to help users communicate in their native languages. Find a suitable mailing list on the [PostgreSQL Mailing Lists page](https://www.postgresql.org/list/).
## How to Contribute
To get started with mailing lists, follow these steps:
- **Subscribe**: Choose a mailing list that suits your interests and click on the respective subscription link to sign up.
- **Introduce yourself**: It's a good idea to send a brief introduction email to the mailing list, describing your skills and interests related to PostgreSQL.
- **Read the archives**: Familiarize yourself with previous discussions by reading the mailing list archives. You can find them on the [PostgreSQL Mailing Lists page](https://www.postgresql.org/list/).
- **Participate**: Once you're comfortable with the mailing list's topics and etiquette, start participating in ongoing discussions or initiate new threads.
Remember to follow the [mailing list's etiquette](https://www.postgresql.org/community/lists/etiquette/) to ensure a positive and productive experience for all community members.
- [@official@Mailing List Etiquette](https://www.postgresql.org/community/lists/etiquette/)
- [@official@pgsql-hackers Subscription](https://www.postgresql.org/list/pgsql-hackers/)
- [@official@pgsql-announce Subscription](https://www.postgresql.org/list/pgsql-announce/)
- [@official@pgsql-general Subscription](https://www.postgresql.org/list/pgsql-general/)
- [@official@pgsql-novice Subscription](https://www.postgresql.org/list/pgsql-novice/)
- [@official@pgsql-docs Subscription](https://www.postgresql.org/list/pgsql-docs/)
- [@official@PostgreSQL Mailing Lists page](https://www.postgresql.org/list/)

@ -2,7 +2,8 @@
Multi-Version Concurrency Control (MVCC) is a technique used by PostgreSQL to allow multiple transactions to access the same data concurrently without conflicts or delays. It ensures that each transaction has a consistent snapshot of the database and can operate on its own version of the data.
Learn more from the following resources:
Visit the following resources to learn more:
- [@official@Intro to MVCC](https://www.postgresql.org/docs/current/mvcc-intro.html)
- [@article@Multiversion concurrency control - Wikipedia](https://en.wikipedia.org/wiki/Multiversion_concurrency_control)
- [@article@Multi-Version Concurrency Control - Wikipedia](https://en.wikipedia.org/wiki/Multiversion_concurrency_control)
- [@article@What is MVVC?](https://www.theserverside.com/blog/Coffee-Talk-Java-News-Stories-and-Opinions/What-is-MVCC-How-does-Multiversion-Concurrencty-Control-work)

@ -1,3 +1,8 @@
# The Relational Model: Null Values
In the relational model used by PostgreSQL, null values represent missing or unknown information within a database. Unlike zero, empty strings, or other default values, null signifies the absence of a value and is treated uniquely in operations and queries. For example, any arithmetic operation involving a null results in a null, and comparisons with null using standard operators return unknown rather than true or false. To handle null values, PostgreSQL provides specific functions and constructs such as `IS NULL`, `IS NOT NULL`, and the `COALESCE` function, which returns the first non-null value in its arguments. Understanding and correctly handling null values is crucial for accurate data retrieval and integrity in relational databases.
In the relational model used by PostgreSQL, null values represent missing or unknown information within a database. Unlike zero, empty strings, or other default values, null signifies the absence of a value and is treated uniquely in operations and queries. For example, any arithmetic operation involving a null results in a null, and comparisons with null using standard operators return unknown rather than true or false. To handle null values, PostgreSQL provides specific functions and constructs such as `IS NULL`, `IS NOT NULL`, and the `COALESCE` function, which returns the first non-null value in its arguments. Understanding and correctly handling null values is crucial for accurate data retrieval and integrity in relational databases.
Visit the following resources to learn more:
- [@official@PostgreSQL - NULL](https://www.postgresql.org/docs/current/datatype-numeric.html#DATATYPE-NULL)
- [@article@PostgreSQL - NULL Values](https://www.relationaldbdesign.com/database-analysis/module2/relational-database-null-values.php)

@ -1,3 +1,9 @@
# Overview
# Object Model in PostgreSQL
PostgreSQL is an object-relational database management system (ORDBMS). That means it combines features of both relational (RDBMS) and object-oriented databases (OODBMS). The object model in PostgreSQL provides features like user-defined data types, inheritance, and polymorphism, which enhances its capabilities beyond a typical SQL-based RDBMS.
PostgreSQL is an object-relational database management system (ORDBMS). That means it combines features of both relational (RDBMS) and object-oriented databases (OODBMS). The object model in PostgreSQL provides features like user-defined data types, inheritance, and polymorphism, which enhances its capabilities beyond a typical SQL-based RDBMS.
Visit the following resources to learn more:
- [@official@Object Model](https://www.postgresql.org/docs/current/tutorial-concepts.html)
- [@article@Understanding PostgreSQL: The Power of an Object-Relational](https://medium.com/@asadbukhari886/understanding-of-postgresql-the-power-of-an-object-relational-database-b6ae349c3f40)
- [@article@PostgreSQL Server and Database Objects](https://www.postgresqltutorial.com/postgresql-tutorial/postgresql-server-and-database-objects/)

@ -4,5 +4,5 @@ Object privileges in PostgreSQL are the permissions given to different user role
Learn more from the following resources:
- [@article@PostgreSQL roles and privileges explained](https://www.aviator.co/blog/postgresql-roles-and-privileges-explained/)
- [@article@What are object privileges?](https://www.prisma.io/dataguide/postgresql/authentication-and-authorization/managing-privileges#what-are-postgresql-object-privileges)
- [@article@PostgreSQL Roles and Privileges Explained](https://www.aviator.co/blog/postgresql-roles-and-privileges-explained/)
- [@article@What are Object Privileges?](https://www.prisma.io/dataguide/postgresql/authentication-and-authorization/managing-privileges#what-are-postgresql-object-privileges)

@ -2,6 +2,6 @@
Operators in Kubernetes are software extensions that use custom resources to manage applications and their components. They encapsulate operational knowledge and automate complex tasks such as deployments, backups, and scaling. Using Custom Resource Definitions (CRDs) and custom controllers, Operators continuously monitor the state of the application and reconcile it with the desired state, ensuring the system is self-healing and resilient. Popular frameworks for building Operators include the Operator SDK, Kubebuilder, and Metacontroller, which simplify the process and enhance Kubernetes' capability to manage stateful and complex applications efficiently.
- [@official@Kubernetes Roadmap](https://roadmap.sh/kubernetes)
- [@official@Kubernetes Website](https://kubernetes.io/)
- [@roadmap@Visit Dedicated Kubernetes Roadmap](https://roadmap.sh/kubernetes)
- [@official@Kubernetes](https://kubernetes.io/)
- [@article@Kubernetes Operators](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/)

@ -2,8 +2,8 @@
Package managers are essential tools that help you install, update, and manage software packages on your system. They keep track of dependencies, handle configuration files and ensure that the installation process is seamless for the end-user.
Learn more from the following resources:
Visit the following resources to learn more:
- [@article@Install PostgreSQL with APT](https://www.postgresql.org/download/linux/ubuntu/)
- [@article@Install PostgreSQL with YUM & DNF](https://www.postgresql.org/download/linux/redhat/)
- [@article@Install PostgreSQL with Homebrew](https://wiki.postgresql.org/wiki/Homebrew)
- [@official@Install PostgreSQL with APT](https://www.postgresql.org/download/linux/ubuntu/)
- [@official@Install PostgreSQL with YUM & DNF](https://www.postgresql.org/download/linux/redhat/)
- [@official@Install PostgreSQL with Homebrew](https://wiki.postgresql.org/wiki/Homebrew)

@ -2,17 +2,11 @@
While Patroni is a popular choice for managing PostgreSQL clusters, there are several other tools and frameworks available that you might consider as alternatives to Patroni. Each of these has its unique set of features and benefits, and some may be better suited to your specific requirements or use-cases.
Stolon - Stolon is a cloud-native PostgreSQL manager that automatically ensures high availability and, if required, can seamlessly scale instances. It was developed by the team at Sorint.lab and is written in Go. Some of the main features that differentiate Stolon from other solutions are:
Several alternatives to Patroni exist for PostgreSQL cluster management, each with unique features catering to specific needs. **Stolon**, a cloud-native manager by Sorint.lab, ensures high availability and seamless scaling. **Pgpool-II**, by the Pgpool Global Development Group, offers load balancing, connection pooling, and high availability. **Repmgr**, developed by 2ndQuadrant, simplifies replication and cluster administration. **PAF (PostgreSQL Automatic Failover)**, created by Dalibo, provides lightweight failover management using Pacemaker and Corosync. These tools present diverse options for managing PostgreSQL clusters effectively.
Pgpool-II - Pgpool-II is an advanced and powerful PostgreSQL management and load balancing solution, developed by the Pgpool Global Development Group. Pgpool-II not only provides high availability and connection pooling, but also offers a myriad of other features, such as:
Repmgr - Repmgr is an open-source replication management tool for PostgreSQL that has been fully integrated and supported by 2ndQuadrant. It simplifies administration and daily management, providing a robust and easy-to-use solution. The main features of Repmgr include:
PAF (PostgreSQL Automatic Failover) - PAF is an HA (high-availability) resource agent for the Pacemaker and Corosync cluster manager, designed for the PostgreSQL's built-in streaming replication. It was developed by the team at Dalibo and is quite lightweight compared to other alternatives. Key features of PAF include:
Learn more from the following resources:
Visit the following resources to learn more:
- [@opensources@sorintlab/stolen](https://github.com/sorintlab/stolon)
- [@official@pgPool Website](https://www.pgpool.net/mediawiki/index.php/Main_Page)
- [@official@RepMgr Website](https://repmgr.org/)
- [@opensource@dalibo/PAF](https://github.com/dalibo/PAF)
- [@official@RepMgr](https://repmgr.org/)
- [@official@pgPool](https://www.pgpool.net/mediawiki/index.php/Main_Page)
- [@opensource@dalibo/PAF](https://github.com/dalibo/PAF)

@ -1,28 +1,6 @@
# Connection Pooling: Alternatives to PgBouncer
## Pgpool-II
Pgpool-II is another widely-used connection pooler for PostgreSQL. It provides several advanced features, such as load balancing, replication, and limiting connections.
- **Load Balancing** - Pgpool-II can distribute read queries among multiple PostgreSQL servers to balance the read load, helping to improve overall performance.
- **Replication** - In addition to connection pooling, Pgpool-II can act as a replication tool for creating real-time data backups.
- **Limiting Connections** - You can set connection limits for clients to control the maximum number of allowed connections for specific users or databases.
## HAProxy
HAProxy is a high-performance and highly-available load balancer for TCP and HTTP-based applications, including PostgreSQL. It is particularly well-suited for distributing connections across multiple PostgreSQL servers for high availability and load balancing.
- **Connection Distribution** - HAProxy uses load balancing algorithms to ensure connections are evenly distributed across the available servers, which can help prevent connection overloading.
- **Health Checking** - HAProxy can perform periodic health checks on your PostgreSQL servers, which can help to ensure that client connections are redirected to healthy servers.
- **SSL Support** - HAProxy provides SSL/TLS support, enabling secure connections between clients and PostgreSQL servers.
## Odyssey
Odyssey is an open-source, multithreaded connection pooler for PostgreSQL developed by Yandex. It is designed for high-performance and large-scale deployments and supports features like transparent SSL, load balancing, and advanced routing.
- **High Performance** - Odyssey uses a multithreaded architecture to process its connections, which can help significantly increase its performance compared to single-threaded connection poolers.
- **Advanced Routing** - Odyssey allows you to configure routing rules and load balancing based on client, server, user, and even specific SQL queries.
- **Transparent SSL** - Odyssey supports transparent SSL connections between clients and PostgreSQL servers, ensuring secure communication.
Pgpool-II, HAProxy, and Odyssey are prominent tools for enhancing PostgreSQL performance and availability. **Pgpool-II** is a versatile connection pooler offering load balancing, replication, and connection limits to optimize performance. **HAProxy** excels as a load balancer for distributing connections across PostgreSQL servers, featuring health checks and SSL/TLS support for secure, high-availability setups. **Odyssey**, developed by Yandex, is a multithreaded connection pooler designed for high-performance deployments, providing advanced routing, transparent SSL, and load balancing capabilities tailored for large-scale systems.
Learn more from the following resources:

@ -4,5 +4,5 @@ Puppet is an open-source software configuration management tool that enables sys
Learn more from the following resources:
- [@official@Puppet documentation](https://puppet.com/docs/puppet/latest/index.html)
- [@official@Puppet PostgreSQL module documentation](https://forge.puppet.com/modules/puppetlabs/postgresql/)
- [@official@Puppet Documentation](https://puppet.com/docs/puppet/latest/index.html)
- [@official@Puppet PostgreSQL Module Documentation](https://forge.puppet.com/modules/puppetlabs/postgresql/)

@ -1,8 +1,8 @@
# Query Processing in PostgreSQL
In this section, we will discuss the concept of query processing in PostgreSQL. Query processing is an important aspect of a database system, as it is responsible for managing data retrieval and modification using Structured Query Language (SQL) queries. Efficient query processing is crucial for ensuring optimal database performance.
Query processing is an important aspect of a database system, as it is responsible for managing data retrieval and modification using Structured Query Language (SQL) queries. Efficient query processing is crucial for ensuring optimal database performance.
Learn more from the following resources:
- [@article@Query Processing in PostgreSQL](https://medium.com/agedb/query-processing-in-postgresql-1309fa93f69f)
- [@course@Understand PostgreSQL query processing - Microsoft](https://learn.microsoft.com/en-us/training/modules/understand-postgresql-query-process/)
- [@course@Understand PostgreSQL Query Processing - Microsoft](https://learn.microsoft.com/en-us/training/modules/understand-postgresql-query-process/)

@ -6,5 +6,5 @@ Note that recursive CTEs can be complex, and it's important to ensure a proper t
Learn more from the following resources:
- [@article@PostgreSQL Recursive Query](https://www.postgresqltutorial.com/postgresql-tutorial/postgresql-recursive-query/)
- [@article@PostgreSQL recursive query explained](https://elvisciotti.medium.com/postgresql-recursive-query-the-simplest-example-explained-f9b85e0a371b)
- [@article@PostgreSQL - Recursive Query](https://www.postgresqltutorial.com/postgresql-tutorial/postgresql-recursive-query/)
- [@article@PostgreSQL Recursive Query Explained](https://elvisciotti.medium.com/postgresql-recursive-query-the-simplest-example-explained-f9b85e0a371b)

@ -2,22 +2,7 @@
The relational model is an approach to organizing and structuring data using tables, also referred to as "relations". It was first introduced by Edgar F. Codd in 1970 and has since become the foundation for most database management systems (DBMS), including PostgreSQL. This model organizes data into tables with rows and columns, where each row represents a single record and each column represents an attribute or field of the record.
The core concepts of the relational model include:
Learn more from the following resources:
- **Attributes:** An attribute is a column within a table that represents a specific characteristic or property of an entity, such as "name", "age", "email", etc.
- **Tuples:** A tuple is a single row within a table that represents a specific instance of an entity with its corresponding attribute values.
- **Relations:** A relation is a table that consists of a set of tuples with the same attributes. It represents the relationship between entities and their attributes.
- **Primary Key:** A primary key is a unique identifier for each tuple within a table. It enforces the uniqueness of records and is used to establish relationships between tables.
- **Foreign Key:** A foreign key is an attribute within a table that references the primary key of another table. It is used to establish and enforce connections between relations.
- **Normalization:** Normalization is a process of organizing data in a way to minimize redundancy and improve data integrity. It involves decomposing complex tables into simpler tables, ensuring unique records, and properly defining foreign keys.
- **Data Manipulation Language (DML):** DML is a subset of SQL used to perform operations on data stored within the relational database, such as INSERT, UPDATE, DELETE, and SELECT.
- **Data Definition Language (DDL):** DDL is another subset of SQL used to define, modify, or delete database structures, such as CREATE, ALTER, and DROP.
By understanding and implementing the relational model, databases can achieve high-level data integrity, reduce data redundancy, and simplify the process of querying and manipulating data. PostgreSQL, as an RDBMS (Relational Database Management System), fully supports the relational model, enabling users to efficiently and effectively manage their data in a well-structured and organized manner.
- [@article@What is the Relational Model?](https://www.postgresql.org/docs/7.1/relmodel-oper.html)
- [@article@The Relational Model](https://www.geeksforgeeks.org/relational-model-in-dbms/)

@ -2,5 +2,7 @@
In the relational model, a relation is essentially a table composed of rows and columns, where each row represents a unique record (or tuple) and each column represents an attribute of the data. The structure of a relation is defined by its schema, which specifies the relation's name and the names and data types of its attributes. Relations are governed by integrity constraints, such as domain constraints, key constraints, and referential integrity constraints, to ensure data accuracy and consistency. Operations like selection, projection, join, and others can be performed on relations to retrieve and manipulate data efficiently.
- [@article@Relationships](https://hasura.io/learn/database/postgresql/core-concepts/6-postgresql-relationships/)
- [@official@domain_contraints](https://www.postgresql.org/docs/current/infoschema-domain-constraints.html)
Learn more from the following resources:
- [@official@Domain Constraints](https://www.postgresql.org/docs/current/infoschema-domain-constraints.html)
- [@article@Relationships](https://hasura.io/learn/database/postgresql/core-concepts/6-postgresql-relationships/)

@ -4,5 +4,5 @@ When working with PostgreSQL, it is often useful to analyze the performance of y
Learn more from the following resources:
- [@official@Error reporting and logging](https://www.postgresql.org/docs/current/runtime-config-logging.html)
- [@official@Error Reporting and Logging](https://www.postgresql.org/docs/current/runtime-config-logging.html)
- [@article@PostgreSQL Logging: Everything You Need to Know](https://betterstack.com/community/guides/logging/how-to-start-logging-with-postgresql/)

@ -1,26 +1,8 @@
# Reviewing Patches
One of the most valuable contributions to PostgreSQL is reviewing and testing patches submitted by other developers. This process ensures that every proposed change undergoes quality control, helps new contributors get involved and learn about PostgreSQL, and maintains the overall stability and reliability of the project.
Reviewing patches is a vital contribution to PostgreSQL, ensuring quality control, maintaining project standards, and helping new contributors understand the system's internals. By identifying bugs, improving performance, and ensuring proper documentation and test coverage, reviewers uphold PostgreSQL's reliability and stability. To participate, subscribe to the *pgsql-hackers mailing list*, explore patches in the *commitfest schedule*, and provide constructive feedback on correctness, performance, and code quality. Engaging in this collaborative process is an impactful way to support the PostgreSQL community.
### Why is reviewing patches important?
Visit the following resources to learn more:
- Improves code quality by identifying bugs, security issues, and performance problems
- Helps maintain consistency and adherence to project standards and best practices
- Provides valuable feedback for developers working on new features and enhancements
- Helps new contributors learn about PostgreSQL internals and progressively grow their expertise
### How can I participate in reviewing patches?
- Subscribe to the [pgsql-hackers mailing list](https://www.postgresql.org/list/pgsql-hackers/) where patch discussions and reviews take place.
- Browse the [commitfest schedule](https://commitfest.postgresql.org/) to stay informed about upcoming events and deadlines.
- Choose a patch from the commitfest that interests you or that you feel confident to review.
- Analyze the patch to ensure:
- Correctness: Does the patch work as intended and solve the problem it addresses?
- Performance: Does the patch avoid introducing performance regressions or trade-offs?
- Code quality: Is the code clean, modular, and maintainable? Does it adhere to PostgreSQL coding conventions?
- Documentation: Are the changes properly documented, and do they provide the necessary context for other developers?
- Test coverage: Are there appropriate tests covering the new code or changes?
- Provide feedback on the patch, either by replying to the relevant mailing list thread or by commenting directly on the patch submission in the commitfest app. Be constructive and specific in your comments, and offer suggestions for improvement when possible.
- Follow up on any discussion around your review and participate in ongoing improvements and iterations of the patch.
Remember, reviewing patches is a collaborative process that relies on the input of many individuals. Your contributions are essential in maintaining the high quality and stability of the PostgreSQL project.
- [@official@pgsql-hackers Mailing List](https://www.postgresql.org/list/pgsql-hackers/)
- [@official@Commitfest Schedule](https://commitfest.postgresql.org/)

@ -4,5 +4,5 @@ Row Level Security (RLS) is a feature introduced in PostgreSQL 9.5 that allows y
Learn more from the following resources:
- [@video@How to Setup Row Level Security (RLS) in PostgreSQL](https://www.youtube.com/watch?v=j53NoW9cPtY)
- [@official@Row Security Policies](https://www.postgresql.org/docs/current/ddl-rowsecurity.html)
- [@official@Row Security Policies](https://www.postgresql.org/docs/current/ddl-rowsecurity.html)
- [@video@How to Setup Row Level Security (RLS) in PostgreSQL](https://www.youtube.com/watch?v=j53NoW9cPtY)

@ -4,4 +4,5 @@ A row in PostgreSQL represents a single, uniquely identifiable record with a spe
Learn more from the following resources:
- [@official@Concepts](https://www.postgresql.org/docs/7.1/query-concepts.html)
- [@official@Concepts](https://www.postgresql.org/docs/7.1/query-concepts.html)
- [@official@PostgreSQL - Rows](https://www.postgresql.org/docs/current/functions-comparisons.html)

@ -4,5 +4,5 @@ Schemas are an essential part of PostgreSQL's object model, and they help provid
Learn more from the following resources:
- [@article@What is a schema in PostgreSQL](https://hasura.io/learn/database/postgresql/core-concepts/1-postgresql-schema/)
- [@official@Schemas](https://www.postgresql.org/docs/current/ddl-schemas.html)
- [@official@Schemas](https://www.postgresql.org/docs/current/ddl-schemas.html)
- [@article@Schema in PostgreSQL](https://hasura.io/learn/database/postgresql/core-concepts/1-postgresql-schema/)

@ -1,3 +1,8 @@
# PostgreSQL Security Concepts
Securing PostgreSQL involves multiple layers of considerations to protect data and ensure only authorized access.
Securing PostgreSQL involves multiple layers of considerations to protect data and ensure only authorized access.
Learn more from the following resources:
- [@article@PostgreSQL Database Security Best Practices](https://www.percona.com/blog/postgresql-database-security-best-practices/)
- [@article@Security - Azure Database for PostgreSQL](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/concepts-security)

@ -4,5 +4,6 @@ Shell scripts are a powerful tool used to automate repetitive tasks and perform
Learn more from the following resources:
- [@article@Shell scripting tutorial](https://www.tutorialspoint.com/unix/shell_scripting.htm)
- [@article@Shell Script Cheatsheet](https://cheatsheets.zip/bash)
- [@article@Shell Scripting Tutorial](https://www.tutorialspoint.com/unix/shell_scripting.htm)
- [@video@Shell Scripting for Beginners](https://www.youtube.com/watch?v=cQepf9fY6cE&list=PLS1QulWo1RIYmaxcEqw5JhK3b-6rgdWO_)

@ -1,3 +1,7 @@
# SQL Query Patterns in PostgreSQL
Schema query patterns in PostgreSQL optimize data retrieval and manipulation by using indexes on frequently queried columns to speed up SELECT queries, optimizing joins with indexed foreign keys and appropriate join types, and leveraging table partitioning to limit data scans. Common Table Expressions (CTEs) break down complex queries for better readability and maintainability, while window functions allow advanced analytics within queries. Query caching and prepared statements reduce access times and execution overhead, respectively, and materialized views precompute and store complex query results for faster access. These patterns collectively enhance the efficiency, performance, and reliability of PostgreSQL queries.
Visit the following resources to learn more:
- [@official@PostgreSQL - Query Patterns](https://www.postgresql.org/docs/current/functions-matching.html)

@ -4,6 +4,6 @@
Learn more from the following resources:
- [@article@How to use the top command in Linux](https://phoenixnap.com/kb/top-command-in-linux)
- [@article@How to Use the top Command in Linux](https://phoenixnap.com/kb/top-command-in-linux)
- [@article@top man page](https://man7.org/linux/man-pages/man1/top.1.html)
- [@video@Demystifying the Top Command in Linux](https://www.youtube.com/watch?v=WsR11EGF9PA)

@ -2,15 +2,9 @@
In the relational model, a **tuple** is a fundamental concept that represents a single record or row in a table. In PostgreSQL, a tuple is composed of a set of attribute values, each corresponding to a specific column or field in the table. A tuple is defined as an ordered set of attribute values, meaning that each value in a tuple corresponds to a specific attribute or column in the table. The values can be of different data types, such as integers, strings, or dates, depending on the schema of the table.
For example, consider a `users` table with columns `id`, `name`, and `email`. A sample tuple in this table could be `(1, 'John Smith', 'john.smith@example.com')`, where each value corresponds to its respective column. PostgreSQL provides a variety of operations that can be performed on tuples, which can be classified into three main categories:
- **Projection**: This operation involves selecting one or more attributes from a tuple and creating a new tuple with only the selected attributes. For example, projecting the `name` and `email` attributes from the previously mentioned tuple would result in `('John Smith', 'john.smith@example.com')`.
- **Selection**: Selection involves filtering tuples based on a specific condition. For example, you may want to select all tuples from the `users` table where the `email` attribute ends with "@example.com".
- **Join**: The join operation combines tuples from two or more tables based on a common attribute or condition. For example, if we have another table called `orders` with a `user_id` column, we could use a join operation to retrieve all records from both tables where the `users.id` attribute matches the `orders.user_id`.
For example, consider a `users` table with columns `id`, `name`, and `email`. A sample tuple in this table could be `(1, 'John Smith', 'john.smith@example.com')`, where each value corresponds to its respective column. PostgreSQL provides a variety of operations that can be performed on tuples.
Learn more from the following resources:
- [@article@Whats the difference between and tuple and a row?](https://stackoverflow.com/questions/19799282/whats-the-difference-between-a-tuple-and-a-row-in-postgres)
- [@article@How PostgreSQL freezes tuples](https://medium.com/@hnasr/how-postgres-freezes-tuples-4a9931261fc)
- [@article@How PostgreSQL Freezes Tuples](https://medium.com/@hnasr/how-postgres-freezes-tuples-4a9931261fc)
- [@article@Whats the difference between and tuple and a row?](https://stackoverflow.com/questions/19799282/whats-the-difference-between-a-tuple-and-a-row-in-postgres)

@ -4,5 +4,6 @@ Docker is an excellent tool for simplifying the installation and management of a
Learn more from the following resources:
- [@official@Official PostgresSQL Docker Image](https://hub.docker.com/_/postgres)
- [@video@How to Set Up a PostgreSQL Database with Docker](https://www.youtube.com/watch?v=RdPYA-wDhTA)
- [@article@How to Use the Postgres Docker Official Image](https://www.docker.com/blog/how-to-use-the-postgres-docker-official-image/)

@ -4,4 +4,4 @@
Learn more from the following resources:
- [@official@PostgreSQL documentation](https://www.postgresql.org/docs/current/pgctlcluster.html)
- [@official@pg_ctlcluster](https://www.postgresql.org/docs/current/pgctlcluster.html)

@ -4,5 +4,8 @@ Relational databases are a type of database management system (DBMS) that stores
Learn more from the following resources:
- [@article@Relational Databases: concept and history](https://www.ibm.com/topics/relational-databases)
- [@article@Relational Databases](https://www.ibm.com/cloud/learn/relational-databases)
- [@article@Intro To Relational Databases](https://www.udacity.com/course/intro-to-relational-databases--ud197)
- [@article@Relational Databases: Concept and History](https://www.ibm.com/topics/relational-databases)
- [@course@Databases and SQL](https://www.edx.org/course/databases-5-sql)
- [@feed@Explore top posts about Relational Databases](https://app.daily.dev/tags/relational-databases?ref=roadmapsh)

@ -4,6 +4,6 @@ Zabbix is an open-source monitoring software for networks, servers, virtual mach
Learn more from the following resources:
- [@official@Zabbix Website](https://www.zabbix.com/)
- [@official@Zabbix](https://www.zabbix.com/)
- [@opensource@zabbix/zabbix](https://github.com/zabbix/zabbix)
- [@article@Using Zabbix to monitor your home network](https://jswheeler.medium.com/using-zabbix-to-monitor-your-home-network-71ed2b1181ae)
- [@article@Using Zabbix to Monitor your Home Network](https://jswheeler.medium.com/using-zabbix-to-monitor-your-home-network-71ed2b1181ae)

Loading…
Cancel
Save