[prev in list] [next in list] [prev in thread] [next in thread] 

List:       postgresql-announce
Subject:    Database Lab Engine 3.0: UI, persistent clones, PostgreSQL 14, more
From:       "Postgres.ai via PostgreSQL Announce" <announce-noreply () postgresql ! org>
Date:       2021-12-22 7:25:51
Message-ID: 164015795149.19321.7110123409147859303 () wrigleys ! postgresql ! org
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


## What's new in DLE 3.0?
The Postgres.ai team is happy to announce the release of version 3.0 of [Database Lab \
Engine (DLE)](https://github.com/postgres-ai/database-lab), the most advanced \
open-source software ever released that empowers development, testing, and \
troubleshooting environments for fast-growing projects. The use of Database Lab \
Engine 3.0 provides a competitive advantage to companies via implementing the \
["Shift-left testing"](https://en.wikipedia.org/wiki/Shift-left_testing) approach in \
software development.

Database Lab Engine is an open-source technology that enables thin cloning for \
PostgreSQL. Thin clones are exceptionally useful when you need to scale the \
development process. DLE can manage dozens of independent clones of your database on \
a single machine, so each engineer or automation process works with their very own \
database provisioned in seconds without extra costs.

Among major changes in DLE 3.0:

- UI included to the core, it allows working with a single DLE instance,
- persistent clones: clones now survive DLE (or VM) restart,
- for the "logical" data provisioning mode: the ability to switch reset clone's state \
                using a snapshot from different pool/dataset,
- better logging and configuration simplicity,
- improvements for the cases when multiple DLEs are running on a single machine,
- PostgreSQL 14 support.

Starting with version 3.0.0, DLE collects non-personally identifiable telemetry data. \
This feature is enabled by default but can be switched off. Read more in [the DLE \
documentation](https://postgres.ai/docs/database-lab/telemetry). Keeping telemetry \
enabled can be considered your contribution to the DLE development because it helps \
make decisions down the road of the open-source product development.

Further, we discuss the most requested changes that were implemented in DLE 3.0 – \
all of them were created based on real-life user experience and invaluable feedback \
from the growing community of users and contributors.

## Worth noting

- Like Database Lab? Give us a GitHub star: \
[https://github.com/postgres-ai/database-lab](https://github.com/postgres-ai/database-lab).
                
- Action required to migrate from a previous version. If you are running DLE 2.5 or \
older, please read carefully and follow the [Migration \
notes](https://gitlab.com/postgres-ai/database-lab/-/releases/v3.0.0#migration-notes).
                
- To get help, reach out to the Postgres.ai team and the growing community of \
Database Lab users and contributors: \
[https://postgres.ai/contact](https://postgres.ai/contact).

## DLE UI: clone large databases in seconds right in your browser
Being open-source software, DLE has always been equipped with \
[API](/docs/reference-guides/database-lab-engine-api-reference) and \
[CLI](/docs/reference-guides/dblab-client-cli-reference). As for UI, it was initially \
available only in the form of SaaS – [Database Lab Platform running on \
Postgres.ai](https://postgres.ai/docs/platform).

In response to numerous requests from DLE users, UI has been integrated into the core \
distribution of DLE 3.0. This change makes open-source DLE even more attractive to \
users, bringing ease in use and simplifying adoption in fast-growing companies.

You can watch [a short video demonstrating DLE UI]( \
https://www.youtube.com/watch?v=buxZFH2oGFQ).

Some users have told us that with UI in hands, it becomes much easier to explain to \
colleagues various use cases where DLE can be very helpful. If you like Database Lab, \
please try to benefit from this change – using UI, demonstrate to others the idea \
of cloning large databases in a few seconds, and discuss how it can influence your \
software development, testing processes, as well as incident troubleshooting and SQL \
optimization.

## Persistent clones: keep working with your cloned Postgres databases during \
maintenance Another feature added to DLE 3.0 is also something that DLE users have \
asked a lot about. Before 3.0, any restart of DLE meant the loss of all clones \
created – so DLE upgrades, VM restarts, and even simple reconfiguration of DLE \
always needed a maintenance window, interrupting work.

A partial solution to this problem was the ability to [reconfigure DLE without \
restarts](/docs/how-to-guides/administration/engine-manage#reconfigure-database-lab-engine) \
introduced in DLE 2.0. However, this wasn't helpful in the cases of DLE upgrades or \
VM restarts. Now with DLE 3.0, this problem is fully solved:

- If you are running DLE 2.5 or older, plan one more maintenance window – and this \
                will be the last one for upgrades. All subsequent upgrades will keep \
                clones alive.
- If you experience a VM failure – not uncommon in cloud environments – once it's \
back, clones will be re-created, keeping the database state.

Of course, in the case of VM restart, DB connections are lost and need to be \
recreated. However, if you need to restart just DLE, all clone containers will keep \
running, and users can now continue working with them even during DLE restart, \
without any work interruptions.

## Advanced reset for the "logical" mode
In DLE 2.5, we have implemented the ability to reset to any available snapshot –  a \
convenient way for your clones to travel in time fast. In 2.5, this was supported \
only for the "physical" provisioning mode (restoring data directory, PGDATA, from \
physical backups, or obtaining it from the source using `pg_basebackup`). In other \
words, it was ready to work only if you manage Postgres yourself and can copy PGDATA \
or establish physical replication connection to your databases. Something that is not \
available to the users of RDS and other managed Postgres services.

For DLE running in the "logical" data provisioning mode (based on dump/restore – \
the only option for most managed Postgres cloud offerings such as Amazon RDS), DLE \
2.5 provided the ability to operate with multiple copies of PGDATA was implemented, \
which allowed having a full refresh without downtime. However, if DLE users were \
running clones on the "old" PGDATA version, they needed to recreate them to unlock \
the next full refresh –  and this was somewhat inconvenient because of quite \
unpredictable port allocation.

In DLE 3.0, it is now possible to reset a clone's state to any database version \
(snapshot), even if that version is provided by another copy of PGDATA running on a \
different pool/dataset. It means that users can keep their clone running on the same \
port for a long time, having stable DB credentials (including the port), and when \
needed, once the full refresh has finished, switch to the freshest database version \
in seconds. This makes the experience of working with the "logical" almost on par \
with the "physical" one.

## Running multiple DLEs on a single machine
Originally, DLE was designed to run on a dedicated machine, physical or virtual. \
However, many users found it inconvenient – in some cases, development and testing \
environments are subject to budget optimization, so it may make a lot of sense to run \
multiple DLEs on a single machine, especially if the organization has many smaller \
databases (a typical case for those who deal with microservice architectures).

DLE 3.0 has several improvements that simplify running multiple DLEs on a single \
machine. Particularly, the new configuration option \
[`selectedPool`](/docs/reference-guides/database-lab-engine-configuration-reference#section-poolmanager-filesystem-pools-or-volume-groups-management) \
allows having a single ZFS pool and running multiple DLEs in a way where each one of \
them has its own dataset. This drastically simplifies free disk space management: \
instead of fragmented space allocation and dealing with many "free disk space" \
numbers, the DLE administrator now needs to control just a single number and adjust \
disk size much less often.

We are planning to discuss the aspects of running multiple DLEs on a single machine \
in a separate article.

## Further reading

- [DLE 3.0 release notes](https://github.com/postgres-ai/database-lab-engine/releases/tag/v3.0.0)
                
- [Database Lab Documentation](/docs)
- [Tutorial for any database](/docs/tutorials/database-lab-tutorial)
- [Tutorial for Amazon RDS](/docs/tutorials/database-lab-tutorial-amazon-rds)
- [Interactive tutorial \
(Katacoda)](https://www.katacoda.com/postgres-ai/scenarios/database-lab-tutorial)

## Request for feedback and contributions
Feedback and contributions would be greatly appreciated:

- [Database Lab Community Slack](https://slack.postgres.ai/)
- [DLE & DB Migration Checker issue \
                tracker](https://gitlab.com/postgres-ai/database-lab/-/issues)
- [Issue tracker of the Terraform module for Database \
Lab](https://gitlab.com/postgres-ai/database-lab-infrastructure/-/issues)


[Attachment #5 (text/html)]

<!doctype html>
<html>
  <head>
    <meta name="viewport" content="width=device-width">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Database Lab Engine 3.0: UI, persistent clones, PostgreSQL 14, \
more</title>  <style>

    @media only screen and (max-width: 620px) {
      table[class=body] h1 {
        font-size: 28px !important;
        margin-bottom: 10px !important;
      }
      table[class=body] p,
            table[class=body] ul,
            table[class=body] ol,
            table[class=body] td,
            table[class=body] span,
            table[class=body] a {
        font-size: 16px !important;
      }
      table[class=body] .wrapper,
            table[class=body] .article {
        padding: 10px !important;
      }
      table[class=body] .content {
        padding: 0 !important;
      }
      table[class=body] .container {
        padding: 0 !important;
        width: 100% !important;
      }
      table[class=body] .main {
        border-left-width: 0 !important;
        border-radius: 0 !important;
        border-right-width: 0 !important;
      }
      table[class=body] .btn table {
        width: 100% !important;
      }
      table[class=body] .btn a {
        width: 100% !important;
      }
      table[class=body] .img-responsive {
        height: auto !important;
        max-width: 100% !important;
        width: auto !important;
      }
    }

    @media all {
      .ExternalClass {
        width: 100%;
      }
      .ExternalClass,
            .ExternalClass p,
            .ExternalClass span,
            .ExternalClass font,
            .ExternalClass td,
            .ExternalClass div {
        line-height: 100%;
      }
      .apple-link a {
        color: inherit !important;
        font-family: inherit !important;
        font-size: inherit !important;
        font-weight: inherit !important;
        line-height: inherit !important;
        text-decoration: none !important;
      }
      #MessageViewBody a {
        color: inherit;
        text-decoration: none;
        font-size: inherit;
        font-family: inherit;
        font-weight: inherit;
        line-height: inherit;
      }
      .btn-primary table td:hover {
        background-color: #34495e !important;
      }
      .btn-primary a:hover {
        background-color: #34495e !important;
        border-color: #34495e !important;
      }
    }
    </style>
  </head>
  <body class="" style="background-color: #f6f6f6; font-family: sans-serif; \
-webkit-font-smoothing: antialiased; font-size: 14px; line-height: 1.4; margin: 0; \
padding: 0; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;">  <table \
border="0" cellpadding="0" cellspacing="0" class="body" style="border-collapse: \
separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%; \
background-color: #f6f6f6;">  <tr>
        <td style="font-family: sans-serif; font-size: 14px; vertical-align: \
top;">&nbsp;</td>  <td class="container" style="font-family: sans-serif; font-size: \
14px; vertical-align: top; display: block; Margin: 0 auto; max-width: 580px; padding: \
                10px; width: 580px;">
          <div class="content" style="box-sizing: border-box; display: block; Margin: \
0 auto; max-width: 580px; padding: 10px;">


            <span class="preheader" style="color: transparent; display: none; height: \
0; max-height: 0; max-width: 0; opacity: 0; overflow: hidden; mso-hide: all; \
visibility: hidden; width: 0;"></span>  <table class="main" style="border-collapse: \
separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%; background: \
#ffffff; border-radius: 3px;">


              <tr>
                <td class="wrapper" style="font-family: sans-serif; font-size: 14px; \
                vertical-align: top; box-sizing: border-box; padding: 20px;">
                  <table border="0" cellpadding="0" cellspacing="0" \
style="border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; \
width: 100%;">  <tr>
                      <td style="font-family: sans-serif; font-size: 14px; \
vertical-align: top;">

<div>
<h1 style="color: #000; font-family: sans-serif; line-height: 1.4; margin: 0; \
margin-bottom: 30px; font-size: 25px; font-weight: 300; text-align: center">Database \
Lab Engine 3.0: UI, persistent clones, PostgreSQL 14, more</h1> </div>
<h2 style="color: #000; font-family: sans-serif; font-weight: 400; line-height: 1.4; \
margin: 0; margin-bottom: 30px">What's new in DLE 3.0?</h2> <p style="font-family: \
sans-serif; font-size: 14px; font-weight: normal; margin: 0; margin-bottom: 15px">The \
Postgres.ai team is happy to announce the release of version 3.0 of <a \
href="https://github.com/postgres-ai/database-lab" style="color: #3498db; \
text-decoration: underline">Database Lab Engine (DLE)</a>, the most advanced \
open-source software ever released that empowers development, testing, and \
troubleshooting environments for fast-growing projects. The use of Database Lab \
Engine 3.0 provides a competitive advantage to companies via implementing the <a \
href="https://en.wikipedia.org/wiki/Shift-left_testing" style="color: #3498db; \
text-decoration: underline">"Shift-left testing"</a> approach in software \
development.</p> <p style="font-family: sans-serif; font-size: 14px; font-weight: \
normal; margin: 0; margin-bottom: 15px">Database Lab Engine is an open-source \
technology that enables thin cloning for PostgreSQL. Thin clones are exceptionally \
useful when you need to scale the development process. DLE can manage dozens of \
independent clones of your database on a single machine, so each engineer or \
automation process works with their very own database provisioned in seconds without \
extra costs.</p> <p style="font-family: sans-serif; font-size: 14px; font-weight: \
normal; margin: 0; margin-bottom: 15px">Among major changes in DLE 3.0:</p> <ul \
style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; \
margin-bottom: 15px"> <li style="list-style-position: inside; margin-left: 5px">UI \
included to the core, it allows working with a single DLE instance,</li> <li \
style="list-style-position: inside; margin-left: 5px">persistent clones: clones now \
survive DLE (or VM) restart,</li> <li style="list-style-position: inside; \
margin-left: 5px">for the "logical" data provisioning mode: the ability to switch \
reset clone's state using a snapshot from different pool/dataset,</li> <li \
style="list-style-position: inside; margin-left: 5px">better logging and \
configuration simplicity,</li> <li style="list-style-position: inside; margin-left: \
5px">improvements for the cases when multiple DLEs are running on a single \
machine,</li> <li style="list-style-position: inside; margin-left: 5px">PostgreSQL 14 \
support.</li> </ul>
<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; \
margin-bottom: 15px">Starting with version 3.0.0, DLE collects non-personally \
identifiable telemetry data. This feature is enabled by default but can be switched \
off. Read more in <a href="https://postgres.ai/docs/database-lab/telemetry" \
style="color: #3498db; text-decoration: underline">the DLE documentation</a>. Keeping \
telemetry enabled can be considered your contribution to the DLE development because \
it helps make decisions down the road of the open-source product development.</p> <p \
style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; \
margin-bottom: 15px">Further, we discuss the most requested changes that were \
implemented in DLE 3.0 – all of them were created based on real-life user \
experience and invaluable feedback from the growing community of users and \
contributors.</p> <h2 style="color: #000; font-family: sans-serif; font-weight: 400; \
line-height: 1.4; margin: 0; margin-bottom: 30px">Worth noting</h2> <ul \
style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; \
margin-bottom: 15px"> <li style="list-style-position: inside; margin-left: 5px">Like \
Database Lab? Give us a GitHub star: <a \
href="https://github.com/postgres-ai/database-lab" style="color: #3498db; \
text-decoration: underline">https://github.com/postgres-ai/database-lab</a>.</li> <li \
style="list-style-position: inside; margin-left: 5px">Action required to migrate from \
a previous version. If you are running DLE 2.5 or older, please read carefully and \
follow the <a href="https://gitlab.com/postgres-ai/database-lab/-/releases/v3.0.0#migration-notes" \
style="color: #3498db; text-decoration: underline">Migration notes</a>.</li> <li \
style="list-style-position: inside; margin-left: 5px">To get help, reach out to the \
Postgres.ai team and the growing community of Database Lab users and contributors: <a \
href="https://postgres.ai/contact" style="color: #3498db; text-decoration: \
underline">https://postgres.ai/contact</a>.</li> </ul>
<h2 style="color: #000; font-family: sans-serif; font-weight: 400; line-height: 1.4; \
margin: 0; margin-bottom: 30px">DLE UI: clone large databases in seconds right in \
your browser</h2> <p style="font-family: sans-serif; font-size: 14px; font-weight: \
normal; margin: 0; margin-bottom: 15px">Being open-source software, DLE has always \
been equipped with <a style="color: #3498db; text-decoration: underline">API</a> and \
<a style="color: #3498db; text-decoration: underline">CLI</a>. As for UI, it was \
initially available only in the form of SaaS – <a \
href="https://postgres.ai/docs/platform" style="color: #3498db; text-decoration: \
underline">Database Lab Platform running on Postgres.ai</a>.</p> <p \
style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; \
margin-bottom: 15px">In response to numerous requests from DLE users, UI has been \
integrated into the core distribution of DLE 3.0. This change makes open-source DLE \
even more attractive to users, bringing ease in use and simplifying adoption in \
fast-growing companies.</p> <p style="font-family: sans-serif; font-size: 14px; \
font-weight: normal; margin: 0; margin-bottom: 15px">You can watch <a \
href="https://www.youtube.com/watch?v=buxZFH2oGFQ" style="color: #3498db; \
text-decoration: underline">a short video demonstrating DLE UI</a>.</p> <p \
style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; \
margin-bottom: 15px">Some users have told us that with UI in hands, it becomes much \
easier to explain to colleagues various use cases where DLE can be very helpful. If \
you like Database Lab, please try to benefit from this change – using UI, \
demonstrate to others the idea of cloning large databases in a few seconds, and \
discuss how it can influence your software development, testing processes, as well as \
incident troubleshooting and SQL optimization.</p> <h2 style="color: #000; \
font-family: sans-serif; font-weight: 400; line-height: 1.4; margin: 0; \
margin-bottom: 30px">Persistent clones: keep working with your cloned Postgres \
databases during maintenance</h2> <p style="font-family: sans-serif; font-size: 14px; \
font-weight: normal; margin: 0; margin-bottom: 15px">Another feature added to DLE 3.0 \
is also something that DLE users have asked a lot about. Before 3.0, any restart of \
DLE meant the loss of all clones created – so DLE upgrades, VM restarts, and even \
simple reconfiguration of DLE always needed a maintenance window, interrupting \
work.</p> <p style="font-family: sans-serif; font-size: 14px; font-weight: normal; \
margin: 0; margin-bottom: 15px">A partial solution to this problem was the ability to \
<a style="color: #3498db; text-decoration: underline">reconfigure DLE without \
restarts</a> introduced in DLE 2.0. However, this wasn't helpful in the cases of DLE \
upgrades or VM restarts. Now with DLE 3.0, this problem is fully solved:</p> <ul \
style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; \
margin-bottom: 15px"> <li style="list-style-position: inside; margin-left: 5px">If \
you are running DLE 2.5 or older, plan one more maintenance window – and this will \
be the last one for upgrades. All subsequent upgrades will keep clones alive.</li> \
<li style="list-style-position: inside; margin-left: 5px">If you experience a VM \
failure – not uncommon in cloud environments – once it's back, clones will be \
re-created, keeping the database state.</li> </ul>
<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; \
margin-bottom: 15px">Of course, in the case of VM restart, DB connections are lost \
and need to be recreated. However, if you need to restart just DLE, all clone \
containers will keep running, and users can now continue working with them even \
during DLE restart, without any work interruptions.</p> <h2 style="color: #000; \
font-family: sans-serif; font-weight: 400; line-height: 1.4; margin: 0; \
margin-bottom: 30px">Advanced reset for the "logical" mode</h2> <p \
style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; \
margin-bottom: 15px">In DLE 2.5, we have implemented the ability to reset to any \
available snapshot –  a convenient way for your clones to travel in time fast. In \
2.5, this was supported only for the "physical" provisioning mode (restoring data \
directory, PGDATA, from physical backups, or obtaining it from the source using \
<code>pg_basebackup</code>). In other words, it was ready to work only if you manage \
Postgres yourself and can copy PGDATA or establish physical replication connection to \
your databases. Something that is not available to the users of RDS and other managed \
Postgres services.</p> <p style="font-family: sans-serif; font-size: 14px; \
font-weight: normal; margin: 0; margin-bottom: 15px">For DLE running in the "logical" \
data provisioning mode (based on dump/restore – the only option for most managed \
Postgres cloud offerings such as Amazon RDS), DLE 2.5 provided the ability to operate \
with multiple copies of PGDATA was implemented, which allowed having a full refresh \
without downtime. However, if DLE users were running clones on the "old" PGDATA \
version, they needed to recreate them to unlock the next full refresh –  and this \
was somewhat inconvenient because of quite unpredictable port allocation.</p> <p \
style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; \
margin-bottom: 15px">In DLE 3.0, it is now possible to reset a clone's state to any \
database version (snapshot), even if that version is provided by another copy of \
PGDATA running on a different pool/dataset. It means that users can keep their clone \
running on the same port for a long time, having stable DB credentials (including the \
port), and when needed, once the full refresh has finished, switch to the freshest \
database version in seconds. This makes the experience of working with the "logical" \
almost on par with the "physical" one.</p> <h2 style="color: #000; font-family: \
sans-serif; font-weight: 400; line-height: 1.4; margin: 0; margin-bottom: \
30px">Running multiple DLEs on a single machine</h2> <p style="font-family: \
sans-serif; font-size: 14px; font-weight: normal; margin: 0; margin-bottom: \
15px">Originally, DLE was designed to run on a dedicated machine, physical or \
virtual. However, many users found it inconvenient – in some cases, development and \
testing environments are subject to budget optimization, so it may make a lot of \
sense to run multiple DLEs on a single machine, especially if the organization has \
many smaller databases (a typical case for those who deal with microservice \
architectures).</p> <p style="font-family: sans-serif; font-size: 14px; font-weight: \
normal; margin: 0; margin-bottom: 15px">DLE 3.0 has several improvements that \
simplify running multiple DLEs on a single machine. Particularly, the new \
configuration option <a style="color: #3498db; text-decoration: \
underline"><code>selectedPool</code></a> allows having a single ZFS pool and running \
multiple DLEs in a way where each one of them has its own dataset. This drastically \
simplifies free disk space management: instead of fragmented space allocation and \
dealing with many "free disk space" numbers, the DLE administrator now needs to \
control just a single number and adjust disk size much less often.</p> <p \
style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; \
margin-bottom: 15px">We are planning to discuss the aspects of running multiple DLEs \
on a single machine in a separate article.</p> <h2 style="color: #000; font-family: \
sans-serif; font-weight: 400; line-height: 1.4; margin: 0; margin-bottom: \
30px">Further reading</h2> <ul style="font-family: sans-serif; font-size: 14px; \
font-weight: normal; margin: 0; margin-bottom: 15px"> <li style="list-style-position: \
inside; margin-left: 5px"><a \
href="https://github.com/postgres-ai/database-lab-engine/releases/tag/v3.0.0" \
style="color: #3498db; text-decoration: underline">DLE 3.0 release notes</a></li> <li \
style="list-style-position: inside; margin-left: 5px"><a style="color: #3498db; \
text-decoration: underline">Database Lab Documentation</a></li> <li \
style="list-style-position: inside; margin-left: 5px"><a style="color: #3498db; \
text-decoration: underline">Tutorial for any database</a></li> <li \
style="list-style-position: inside; margin-left: 5px"><a style="color: #3498db; \
text-decoration: underline">Tutorial for Amazon RDS</a></li> <li \
style="list-style-position: inside; margin-left: 5px"><a \
href="https://www.katacoda.com/postgres-ai/scenarios/database-lab-tutorial" \
style="color: #3498db; text-decoration: underline">Interactive tutorial \
(Katacoda)</a></li> </ul>
<h2 style="color: #000; font-family: sans-serif; font-weight: 400; line-height: 1.4; \
margin: 0; margin-bottom: 30px">Request for feedback and contributions</h2> <p \
style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; \
margin-bottom: 15px">Feedback and contributions would be greatly appreciated:</p> <ul \
style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; \
margin-bottom: 15px"> <li style="list-style-position: inside; margin-left: 5px"><a \
href="https://slack.postgres.ai/" style="color: #3498db; text-decoration: \
underline">Database Lab Community Slack</a></li> <li style="list-style-position: \
inside; margin-left: 5px"><a \
href="https://gitlab.com/postgres-ai/database-lab/-/issues" style="color: #3498db; \
text-decoration: underline">DLE &amp; DB Migration Checker issue tracker</a></li> <li \
style="list-style-position: inside; margin-left: 5px"><a \
href="https://gitlab.com/postgres-ai/database-lab-infrastructure/-/issues" \
style="color: #3498db; text-decoration: underline">Issue tracker of the Terraform \
module for Database Lab</a></li> </ul>

                      </td>
                    </tr>
                  </table>
                </td>
              </tr>

            </table>

            <div class="footer" style="clear: both; Margin-top: 10px; text-align: \
                center; width: 100%;">
              <table border="0" cellpadding="0" cellspacing="0" \
style="border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; \
width: 100%;">  <tr>
                  <td class="content-block" style="font-family: sans-serif; \
vertical-align: top; padding-bottom: 10px; padding-top: 10px; font-size: 12px; color: \
                #999999; text-align: center;">
                    <span class="apple-link" style="color: #999999; font-size: 12px; \
text-align: center;"> This email was sent to you from Postgres.ai. It was delivered \
on their behalf by the PostgreSQL project. Any questions about the content of the \
message should be sent to Postgres.ai.
</span>
		    <br><br>
You were sent this email as a subscriber of the <em>pgsql-announce</em> mailinglist, \
for the content tag Related Open Source.
To unsubscribe from
further emails, or change which emails you want to receive, please click the personal \
unsubscribe link that you can find in the headers of this email, or visit
<a href="https://lists.postgresql.org/unsubscribe/" style="color: #3498db; \
text-decoration: underline">https://lists.postgresql.org/unsubscribe/</a>.

                  </td>
                </tr>
              </table>
            </div>

          </div>
        </td>
        <td style="font-family: sans-serif; font-size: 14px; vertical-align: \
top;">&nbsp;</td>  </tr>
    </table>
  </body>
</html>



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic