Re: Better Database Visibility

Jean-Mark Wright via DB-SIG <[email protected]> Wed, 18 Sep 2024 23:23:35 -0400
Newsgroups gmane.comp.python.db
Message-ID <CAA4YZkTg4H1w399Q1C57Moscz4bObq64XJsbkOO2Y63Zs7Fh8g@mail.gmail.com>
--===============8892972741732422494==
Content-Type: multipart/alternative; boundary="00000000000052e66006227073ec"

--00000000000052e66006227073ec
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Thanks for all the links! I'll check it out.

On Mon, Sep 16, 2024 at 3:01=E2=80=AFPM Marc-Andre Lemburg <[email protected]>=
 wrote:

> On 16.09.2024 20:12, Jean-Mark Wright wrote:
>
> Hi Marc-Andre,
>
> Thanks for your response.
>
> My request isn't directly related to Python. I reached out because we're
> mostly a Python shop. Python is the primary space I'd be looking to solve
> this problem for. I figure some folks would understand some of the
> intricacies and challenges of achieving my goals and could help me with
> pointers. Possibly I could make some amendments to the database interface=
,
> or something else. We're using Postgres.
>
> > There are plenty tools out there for monitoring and tracing databases
> > out there, but those are typically not Python-specific.
>
> We're using DataDog and switching providers isn't probable currently.
> There's some space to augment the information we currently have. I'm not
> aware of all the possibilities though. That's why I've reached out.
>
> PostgreSQL provides plenty of statistics to monitor and insight tooling:
>
>     https://www.postgresql.org/docs/current/monitoring-stats.html
>
>     https://www.postgresql.org/docs/current/monitoring.html
>
> You can access these using psycopg from Python, of course, and write
> custom logic to alert you.
>
> Or you can use Grafana or a similar tool to visualize them (via Prometheu=
s
> or OpenTelemetry):
>
>     https://grafana.com/solutions/postgresql/monitor/
>
> It's also possible to ingest the data in OpenTelemetry, Nagios/Icinga,
> Zabbix, Checkmk, etc.
>
> There also plenty of commercial tools or commercial offerings for the OSS
> tools out there.
>
> Most of these (if not all), give you alerting, visuals, and data recordin=
g.
>
> This is a vast space and where to dig deeper depends a lot on your use
> cases, architecture and data sizes.
>
> E.g. if you're into tracing query plans, you could have a look at PG
> Ferret:
>
>     https://github.com/ChrisBellew/pg-ferret
>
> Now, getting all this data is easy. What is hard, is making sense of it :=
-)
>
>
>
> On Sat, Sep 14, 2024 at 5:00=E2=80=AFPM Marc-Andre Lemburg <[email protected]=
m> wrote:
>
>> Hi Jean-Mark,
>>
>> this list is about Python database connectivity. How does your request
>> related to Python ? You also don't mention the database in question.
>>
>> There are plenty tools out there for monitoring and tracing databases
>> out there, but those are typically not Python specific.
>>
>> Thanks.
>>
>>
>> On 12.09.2024 14:29, Jean-Mark Wright via DB-SIG wrote:
>> > Hi,
>> > I'm aiming to improve database trace quality to better understand
>> what's
>> > happening in our database. I'd love to get index information, query
>> > planning information, performance statistics and richer errors into ou=
r
>> > database spans. I don't know what the best layer is for this enrichmen=
t
>> > (e.g. database module, OpenTelemetry, in our application, etc...).
>> >
>> > I'm looking for the following specifically:
>> >
>> >   * Thoughts on the possibilities of getting this information and wher=
e
>> >     it would come from?
>> >   * Thoughts on whether this enrichment aligns with the database
>> >     specification's purpose?
>> >   * Any contacts who could help answer or provide more questions.
>> >
>> >
>> > This article
>> > <
>> https://jaywhy13.hashnode.dev/dear-editor-we-need-better-database-observ=
ability>
>> captures the issues I've faced in greater detail.
>> >
>> > Thanks in advance for your help!
>> >
>> >
>> > --
>> > *JEAN-MARK **WRIGHT* | Staff Engineer
>> > <https://s3.amazonaws.com/wave-buoyant/public/Wave_logo_RGB-109x30.svg=
>
>> > <https://www.waveapps.com/><https://www.waveapps.com/><
>> https://www.waveapps.com/><https://www.waveapps.com/><
>> https://www.waveapps.com/>
>> >
>> > Join our community onFacebook <http://www.facebook.com/waveHQ>,LinkedI=
n
>>
>> > <http://www.linkedin.com/company/1196866>, orInstagram
>> > <https://www.instagram.com/wave_hq>
>> >
>> > This message and any attachments are intended only for the use of the
>> > addressee and should be considered confidential. If you are not an
>> > intended recipient, you may not review, copy or distribute this
>> message.
>> > If you have received this communication in error or would like to stop
>> > receiving these emails, please notify the sender by replying to this
>> > email. Wave is located at 500-155 Queens Quay East, Box 3, Toronto ON,
>> > M5A 0W4.
>> >
>> > _______________________________________________
>> > DB-SIG maillist  -  [email protected]
>> > https://mail.python.org/mailman/listinfo/db-sig
>>
>> --
>> Marc-Andre Lemburg
>> eGenix.com
>>
>> Professional Python Services directly from the Experts (#1, Sep 14 2024)
>>  >>> Python Projects, Coaching and Support ...    https://www.egenix.com=
/
>>  >>> Python Product Development ...        https://consulting.egenix.com=
/
>> ________________________________________________________________________
>>
>> ::: We implement business ideas - efficiently in both time and costs :::
>>
>>     eGenix.com Software, Skills and Services GmbH  Pastor-Loeh-Str.48
>>      D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg
>>             Registered at Amtsgericht Duesseldorf: HRB 46611
>>                 https://www.egenix.com/company/contact/
>>                       https://www.malemburg.com/
>>
>>
>
> --
> *JEAN-MARK **WRIGHT* | Staff Engineer
> <https://s3.amazonaws.com/wave-buoyant/public/Wave_logo_RGB-109x30.svg>
> <https://www.waveapps.com/>
>
> Join our community on Facebook <http://www.facebook.com/waveHQ>, LinkedIn
> <http://www.linkedin.com/company/1196866>, or Instagram
> <https://www.instagram.com/wave_hq>
>
> This message and any attachments are intended only for the use of the
> addressee and should be considered confidential. If you are not an intend=
ed
> recipient, you may not review, copy or distribute this message. If you ha=
ve
> received this communication in error or would like to stop receiving thes=
e
> emails, please notify the sender by replying to this email. Wave is locat=
ed
> at 500-155 Queens Quay East, Box 3, Toronto ON, M5A 0W4.
>
> --
> Marc-Andre Lemburg
> eGenix.com
>
> Professional Python Services directly from the Experts (#1, Sep 16 2024)
> >>> Python Projects, Coaching and Support ...    https://www.egenix.com/
> >>> Python Product Development ...        https://consulting.egenix.com/
> ________________________________________________________________________
>
> ::: We implement business ideas - efficiently in both time and costs :::
>
>    eGenix.com Software, Skills and Services GmbH  Pastor-Loeh-Str.48
>     D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg
>            Registered at Amtsgericht Duesseldorf: HRB 46611
>                https://www.egenix.com/company/contact/
>                      https://www.malemburg.com/
>
>

--=20
*JEAN-MARK **WRIGHT* | Staff Engineer
<https://s3.amazonaws.com/wave-buoyant/public/Wave_logo_RGB-109x30.svg>
<https://www.waveapps.com/> <https://www.waveapps.com/>
<https://www.waveapps.com/> <https://www.waveapps.com/>
<https://www.waveapps.com/>

Join our community on Facebook <http://www.facebook.com/waveHQ>, LinkedIn
<http://www.linkedin.com/company/1196866>, or Instagram
<https://www.instagram.com/wave_hq>

This message and any attachments are intended only for the use of the
addressee and should be considered confidential. If you are not an intended
recipient, you may not review, copy or distribute this message. If you have
received this communication in error or would like to stop receiving these
emails, please notify the sender by replying to this email. Wave is located
at 500-155 Queens Quay East, Box 3, Toronto ON, M5A 0W4.

--00000000000052e66006227073ec
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Thanks for all the links! I&#39;ll check it out.<br></div>=
<br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon=
, Sep 16, 2024 at 3:01=E2=80=AFPM Marc-Andre Lemburg &lt;<a href=3D"mailto:=
[email protected]">[email protected]</a>&gt; wrote:<br></div><blockquote class=3D=
"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(2=
04,204,204);padding-left:1ex"><u></u>

 =20
   =20
 =20
  <div>
    <div>On 16.09.2024 20:12, Jean-Mark Wright
      wrote:<br>
    </div>
    <blockquote type=3D"cite">
      <div dir=3D"ltr">
        <div>Hi Marc-Andre,</div>
        <div><br>
        </div>
        <div>Thanks for your response.<br>
        </div>
        <div><br>
        </div>
        <div>My request isn&#39;t directly related to Python. I reached out
          because we&#39;re mostly a Python shop. Python is the primary
          space I&#39;d be looking to solve this problem for. I figure some
          folks would understand some of the intricacies and challenges
          of achieving my goals and could help me with pointers.
          Possibly I could make some amendments to the database
          interface, or something else. We&#39;re using Postgres.</div>
        <div><br>
        </div>
        <div>&gt; There are plenty tools out there for monitoring and
          tracing databases <br>
          &gt; out there, but those are typically not Python-specific.</div=
>
        <div><br>
        </div>
        <div>We&#39;re using DataDog and switching providers isn&#39;t prob=
able
          currently. There&#39;s some space to augment the information we
          currently have. I&#39;m not aware of all the possibilities though=
.
          That&#39;s why I&#39;ve reached out.<br>
        </div>
      </div>
    </blockquote>
    <p>PostgreSQL provides plenty of statistics to monitor and insight
      tooling:<br>
    </p>
    <p>=C2=A0=C2=A0=C2=A0 <a href=3D"https://www.postgresql.org/docs/curren=
t/monitoring-stats.html" target=3D"_blank">https://www.postgresql.org/docs/=
current/monitoring-stats.html</a></p>
    <p>=C2=A0=C2=A0=C2=A0 <a href=3D"https://www.postgresql.org/docs/curren=
t/monitoring.html" target=3D"_blank">https://www.postgresql.org/docs/curren=
t/monitoring.html</a><br>
    </p>
    <p>You can access these using psycopg from Python, of course, and
      write custom logic to alert you.</p>
    <p>Or you can use Grafana or a similar tool to visualize them (via
      Prometheus or OpenTelemetry):</p>
    <p>=C2=A0=C2=A0=C2=A0 <a href=3D"https://grafana.com/solutions/postgres=
ql/monitor/" target=3D"_blank">https://grafana.com/solutions/postgresql/mon=
itor/</a></p>
    <p>It&#39;s also possible to ingest the data in OpenTelemetry,
      Nagios/Icinga, Zabbix, Checkmk, etc.</p>
    <p>There also plenty of commercial tools or commercial offerings for
      the OSS tools out there.<br>
    </p>
    <p>Most of these (if not all), give you alerting, visuals, and data
      recording.</p>
    <p>This is a vast space and where to dig deeper depends a lot on
      your use cases, architecture and data sizes.</p>
    <p>E.g. if you&#39;re into tracing query plans, you could have a look a=
t
      PG Ferret:</p>
    <p>=C2=A0=C2=A0=C2=A0 <a href=3D"https://github.com/ChrisBellew/pg-ferr=
et" target=3D"_blank">https://github.com/ChrisBellew/pg-ferret</a></p>
    <p>Now, getting all this data is easy. What is hard, is making sense
      of it :-)<br>
    </p>
    <p><br>
    </p>
    <blockquote type=3D"cite"><br>
      <div class=3D"gmail_quote">
        <div dir=3D"ltr" class=3D"gmail_attr">On Sat, Sep 14, 2024 at
          5:00=E2=80=AFPM Marc-Andre Lemburg &lt;<a href=3D"mailto:mal@egen=
ix.com" target=3D"_blank">[email protected]</a>&gt;
          wrote:<br>
        </div>
        <blockquote class=3D"gmail_quote">Hi Jean-Mark,<br>
          <br>
          this list is about Python database connectivity. How does your
          request <br>
          related to Python ? You also don&#39;t mention the database in
          question.<br>
          <br>
          There are plenty tools out there for monitoring and tracing
          databases <br>
          out there, but those are typically not Python specific.<br>
          <br>
          Thanks.<br>
          <br>
          <br>
          On 12.09.2024 14:29, Jean-Mark Wright via DB-SIG wrote:<br>
          &gt; Hi,<br>
          &gt; I&#39;m aiming to improve database trace quality to better
          understand what&#39;s <br>
          &gt; happening in our database. I&#39;d love to get index
          information, query <br>
          &gt; planning information, performance statistics and richer
          errors into our <br>
          &gt; database spans. I don&#39;t know what the best layer is for
          this enrichment <br>
          &gt; (e.g. database module, OpenTelemetry, in our application,
          etc...).<br>
          &gt; <br>
          &gt; I&#39;m looking for the following specifically:<br>
          &gt; <br>
          &gt;=C2=A0 =C2=A0* Thoughts on the possibilities of getting this
          information and where<br>
          &gt;=C2=A0 =C2=A0 =C2=A0it would come from?<br>
          &gt;=C2=A0 =C2=A0* Thoughts on whether this enrichment aligns wit=
h the
          database<br>
          &gt;=C2=A0 =C2=A0 =C2=A0specification&#39;s purpose?<br>
          &gt;=C2=A0 =C2=A0* Any contacts who could help answer or provide =
more
          questions.<br>
          &gt; <br>
          &gt; <br>
          &gt; This article <br>
          &gt; &lt;<a href=3D"https://jaywhy13.hashnode.dev/dear-editor-we-=
need-better-database-observability" rel=3D"noreferrer" target=3D"_blank">ht=
tps://jaywhy13.hashnode.dev/dear-editor-we-need-better-database-observabili=
ty</a>&gt;
          captures the issues I&#39;ve faced in greater detail.<br>
          &gt; <br>
          &gt; Thanks in advance for your help!<br>
          &gt; <br>
          &gt; <br>
          &gt; -- <br>
          &gt; *JEAN-MARK **WRIGHT* | Staff Engineer<br>
          &gt; &lt;<a href=3D"https://s3.amazonaws.com/wave-buoyant/public/=
Wave_logo_RGB-109x30.svg" rel=3D"noreferrer" target=3D"_blank">https://s3.a=
mazonaws.com/wave-buoyant/public/Wave_logo_RGB-109x30.svg</a>&gt;<br>
          &gt; &lt;<a href=3D"https://www.waveapps.com/" rel=3D"noreferrer"=
 target=3D"_blank">https://www.waveapps.com/</a>&gt;&lt;<a href=3D"https://=
www.waveapps.com/" rel=3D"noreferrer" target=3D"_blank">https://www.waveapp=
s.com/</a>&gt;&lt;<a href=3D"https://www.waveapps.com/" rel=3D"noreferrer" =
target=3D"_blank">https://www.waveapps.com/</a>&gt;&lt;<a href=3D"https://w=
ww.waveapps.com/" rel=3D"noreferrer" target=3D"_blank">https://www.waveapps=
.com/</a>&gt;&lt;<a href=3D"https://www.waveapps.com/" rel=3D"noreferrer" t=
arget=3D"_blank">https://www.waveapps.com/</a>&gt;<br>
          &gt; <br>
          &gt; Join our community onFacebook &lt;<a href=3D"http://www.face=
book.com/waveHQ" rel=3D"noreferrer" target=3D"_blank">http://www.facebook.c=
om/waveHQ</a>&gt;,LinkedIn
          <br>
          &gt; &lt;<a href=3D"http://www.linkedin.com/company/1196866" rel=
=3D"noreferrer" target=3D"_blank">http://www.linkedin.com/company/1196866</=
a>&gt;,=C2=A0orInstagram
          <br>
          &gt; &lt;<a href=3D"https://www.instagram.com/wave_hq" rel=3D"nor=
eferrer" target=3D"_blank">https://www.instagram.com/wave_hq</a>&gt;<br>
          &gt; <br>
          &gt; This message and any attachments are intended only for
          the use of the <br>
          &gt; addressee and should be considered confidential. If you
          are not an <br>
          &gt; intended recipient, you may not review, copy or
          distribute this message. <br>
          &gt; If you have received this communication in error or would
          like to stop <br>
          &gt; receiving these emails, please notify the sender by
          replying to this <br>
          &gt; email. Wave is located at 500-155 Queens Quay East, Box
          3, Toronto ON, <br>
          &gt; M5A 0W4.<br>
          &gt; <br>
          &gt; _______________________________________________<br>
          &gt; DB-SIG maillist=C2=A0 -=C2=A0 <a href=3D"mailto:DB-SIG@pytho=
n.org" target=3D"_blank">[email protected]</a><br>
          &gt; <a href=3D"https://mail.python.org/mailman/listinfo/db-sig" =
rel=3D"noreferrer" target=3D"_blank">https://mail.python.org/mailman/listin=
fo/db-sig</a><br>
          <br>
          -- <br>
          Marc-Andre Lemburg<br>
          eGenix.com<br>
          <br>
          Professional Python Services directly from the Experts (#1,
          Sep 14 2024)<br>
          =C2=A0&gt;&gt;&gt; Python Projects, Coaching and Support ...=C2=
=A0 =C2=A0 <a href=3D"https://www.egenix.com/" rel=3D"noreferrer" target=3D=
"_blank">https://www.egenix.com/</a><br>
          =C2=A0&gt;&gt;&gt; Python Product Development ...=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 <a href=3D"https://consulting.egenix.com/" rel=3D"noreferrer"=
 target=3D"_blank">https://consulting.egenix.com/</a><br>
________________________________________________________________________<br=
>
          <br>
          ::: We implement business ideas - efficiently in both time and
          costs :::<br>
          <br>
          =C2=A0 =C2=A0 eGenix.com Software, Skills and Services GmbH=C2=A0
          Pastor-Loeh-Str.48<br>
          =C2=A0 =C2=A0 =C2=A0D-40764 Langenfeld, Germany. CEO Dipl.-Math. =
Marc-Andre
          Lemburg<br>
          =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Registered at Amtsgeric=
ht Duesseldorf: HRB 46611<br>
          =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <a href=
=3D"https://www.egenix.com/company/contact/" rel=3D"noreferrer" target=3D"_=
blank">https://www.egenix.com/company/contact/</a><br>
          =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 <a href=3D"https://www.malemburg.com/" rel=3D"noreferrer" tar=
get=3D"_blank">https://www.malemburg.com/</a><br>
          <br>
        </blockquote>
      </div>
      <br>
      <br>
      <span class=3D"gmail_signature_prefix">-- </span><br>
      <div dir=3D"ltr" class=3D"gmail_signature">
        <div>
          <div dir=3D"ltr">
            <div dir=3D"ltr">
              <div dir=3D"ltr">
                <div dir=3D"ltr">
                  <div dir=3D"ltr">
                    <div dir=3D"ltr">
                      <div dir=3D"ltr">
                        <div dir=3D"ltr">
                          <div dir=3D"ltr">
                            <div dir=3D"ltr">
                              <div dir=3D"ltr">
                                <div dir=3D"ltr">
                                  <div dir=3D"ltr">
                                    <div dir=3D"ltr">
                                      <div dir=3D"ltr">
                                        <div dir=3D"ltr">
                                          <div dir=3D"ltr">
                                            <div dir=3D"ltr">
                                              <div dir=3D"ltr">
                                                <div dir=3D"ltr">
                                                  <div>
                                                    <div dir=3D"ltr">
                                                      <div dir=3D"ltr">
                                                        <div dir=3D"ltr">
                                                          <div dir=3D"ltr">
                                                          <div dir=3D"ltr">
                                                          <div dir=3D"ltr">
                                                          <div dir=3D"ltr">
                                                          <div dir=3D"ltr">
                                                          <div dir=3D"ltr">
                                                          <div dir=3D"ltr">
                                                          <div dir=3D"ltr">
                                                          <div dir=3D"ltr">
                                                          <div dir=3D"ltr">
                                                          <div dir=3D"ltr">
                                                          <div dir=3D"ltr">
                                                          <div dir=3D"ltr">
                                                          <div dir=3D"ltr">
                                                          <div dir=3D"ltr">
                                                          <div dir=3D"ltr">
                                                          <div dir=3D"ltr">
                                                          <div><span><b>JEA=
N-MARK
                                                          </b></span><span>=
<b>WRIGHT</b>=C2=A0</span>|=C2=A0<span>Staff
                                                          Engineer</span></=
div>
                                                          <div><a href=3D"h=
ttps://s3.amazonaws.com/wave-buoyant/public/Wave_logo_RGB-109x30.svg" targe=
t=3D"_blank"><img></a></div>
                                                          <div><a href=3D"h=
ttps://www.waveapps.com/" target=3D"_blank"><img></a><br>
                                                          <br>
                                                          </div>
                                                          <div>Join our
                                                          community on<span=
>=C2=A0</span><a href=3D"http://www.facebook.com/waveHQ" target=3D"_blank">=
Facebook</a>,<span>=C2=A0</span><a href=3D"http://www.linkedin.com/company/=
1196866" target=3D"_blank">LinkedIn</a>,=C2=A0or<span>=C2=A0</span><a href=
=3D"https://www.instagram.com/wave_hq" target=3D"_blank">Instagram</a></div=
>
                                                          </div>
                                                          </div>
                                                          </div>
                                                          </div>
                                                          </div>
                                                          </div>
                                                          </div>
                                                          </div>
                                                          </div>
                                                          </div>
                                                          </div>
                                                          </div>
                                                          </div>
                                                          </div>
                                                          </div>
                                                          </div>
                                                          </div>
                                                        </div>
                                                      </div>
                                                    </div>
                                                    <div><span><br>
                                                      </span></div>
                                                    <div><span>This
                                                        message and any
                                                        attachments are
                                                        intended only
                                                        for the use of
                                                        the addressee
                                                        and should be
                                                        considered
                                                        confidential. If
                                                        you are not an
                                                        intended
                                                        recipient, you
                                                        may not review,
                                                        copy or
                                                        distribute this
                                                        message. If you
                                                        have received
                                                        this
                                                        communication in
                                                        error or would
                                                        like to stop
                                                        receiving these
                                                        emails, please
                                                        notify the
                                                        sender by
                                                        replying to this
                                                        email. Wave is
                                                        located at 500-</sp=
an><span>155
                                                        Queens Quay
                                                        East, Box 3,
                                                        Toronto ON, M5A
                                                        0W4.</span></div>
                                                  </div>
                                                </div>
                                              </div>
                                            </div>
                                          </div>
                                        </div>
                                      </div>
                                    </div>
                                  </div>
                                </div>
                              </div>
                            </div>
                          </div>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    <pre cols=3D"72">--=20
Marc-Andre Lemburg
eGenix.com

Professional Python Services directly from the Experts (#1, Sep 16 2024)
&gt;&gt;&gt; Python Projects, Coaching and Support ...    <a href=3D"https:=
//www.egenix.com/" target=3D"_blank">https://www.egenix.com/</a>
&gt;&gt;&gt; Python Product Development ...        <a href=3D"https://consu=
lting.egenix.com/" target=3D"_blank">https://consulting.egenix.com/</a>
________________________________________________________________________

::: We implement business ideas - efficiently in both time and costs :::
   =20
   eGenix.com Software, Skills and Services GmbH  Pastor-Loeh-Str.48
    D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg
           Registered at Amtsgericht Duesseldorf: HRB 46611
               <a href=3D"https://www.egenix.com/company/contact/" target=
=3D"_blank">https://www.egenix.com/company/contact/</a>
                     <a href=3D"https://www.malemburg.com/" target=3D"_blan=
k">https://www.malemburg.com/</a>

</pre>
  </div>

</blockquote></div><br clear=3D"all"><br><span class=3D"gmail_signature_pre=
fix">-- </span><br><div dir=3D"ltr" class=3D"gmail_signature"><div style=3D=
"font-size:12.8px;background-color:rgb(255,255,255)"><div dir=3D"ltr"><div =
dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"=
ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><d=
iv dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=
=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr=
"><div dir=3D"ltr"><div style=3D"font-size:12.8px"><div dir=3D"ltr" style=
=3D"font-family:arial,sans-serif"><div dir=3D"ltr"><div dir=3D"ltr"><div di=
r=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"lt=
r"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div=
 dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D=
"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div><span style=
=3D"font-size:12.8px"><b><font color=3D"#4c8ff0">JEAN-MARK </font></b></spa=
n><span style=3D"font-size:12.8px"><font color=3D"#4C8FF0"><b>WRIGHT</b></f=
ont><font color=3D"#01959e">=C2=A0</font></span><font color=3D"#606060" sty=
le=3D"font-size:small">|=C2=A0</font><span style=3D"font-size:12.8px"><font=
 color=3D"#8a8a8b">Staff Engineer</font></span></div><div style=3D"color:rg=
b(80,0,80)"><a href=3D"https://s3.amazonaws.com/wave-buoyant/public/Wave_lo=
go_RGB-109x30.svg" target=3D"_blank"><img></a></div><div style=3D"color:rgb=
(80,0,80);font-size:12.8px"><a href=3D"https://www.waveapps.com/" target=3D=
"_blank"></a><a href=3D"https://www.waveapps.com/" target=3D"_blank"></a><a=
 href=3D"https://www.waveapps.com/" target=3D"_blank"></a><a href=3D"https:=
//www.waveapps.com/" target=3D"_blank"></a><a href=3D"https://www.waveapps.=
com/" target=3D"_blank"><img src=3D"https://s3.amazonaws.com/wave-prod-emai=
l-assets/miscellaneous/wave-gmail-signature-DO-NOT-DELETE.png" style=3D"wid=
th: 150px; height: 41px;"></a><br><br></div><div style=3D"font-size:12.8px"=
><font style=3D"font-size:12px">Join our community on</font><span style=3D"=
color:rgb(80,0,80);font-size:12px">=C2=A0</span><a href=3D"http://www.faceb=
ook.com/waveHQ" style=3D"font-size:12px" target=3D"_blank"><font color=3D"#=
4c8ff0">Facebook</font></a><font color=3D"#919191" style=3D"color:rgb(80,0,=
80);font-size:12px">,</font><span style=3D"color:rgb(80,0,80);font-size:12p=
x">=C2=A0</span><a href=3D"http://www.linkedin.com/company/1196866" style=
=3D"font-size:12px" target=3D"_blank"><font color=3D"#4c8ff0">LinkedIn</fon=
t></a><font style=3D"font-size:12px">,=C2=A0</font><font style=3D"font-size=
:12px">or</font><span style=3D"font-size:12px">=C2=A0</span><a href=3D"http=
s://www.instagram.com/wave_hq" target=3D"_blank"><font color=3D"#2e8ff0">In=
stagram</font></a></div></div></div></div></div></div></div></div></div></d=
iv></div></div></div></div></div></div></div></div></div></div></div><div s=
tyle=3D"font-family:arial,sans-serif;color:rgb(80,0,80);font-size:12.8px"><=
span><br></span></div><div style=3D"font-size:12.8px"><span><font color=3D"=
#bebebe" face=3D"Trebuchet">This message and any attachments are intended o=
nly for the use of the addressee and should be considered confidential. If =
you are not an intended recipient, you may not review, copy or distribute t=
his message. If you have received this communication in error or would like=
 to stop receiving these emails, please notify the sender by replying to th=
is email. Wave is located at 500-</font></span><span style=3D"color:rgb(190=
,190,190);font-family:Trebuchet">155 Queens Quay East, Box 3, Toronto ON, M=
5A 0W4.</span></div></div></div></div></div></div></div></div></div></div><=
/div></div></div></div></div></div></div></div></div></div></div></div></di=
v></div>

--00000000000052e66006227073ec--

--===============8892972741732422494==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
DB-SIG maillist  -  [email protected]
https://mail.python.org/mailman/listinfo/db-sig

--===============8892972741732422494==--