<div dir="ltr"><div>Dear all</div><div><br></div><div>Allow me to continue a conversation that we started a couple of years ago.</div><div><a href="https://lists.osgeo.org/pipermail/postgis-devel/2019-March/027817.html" target="_blank">https://lists.osgeo.org/pipermail/postgis-devel/2019-March/027817.html</a><br></div><div><br></div><div>Since that time MobilityDB has continued its development. In particular MobilityDB is now an OSGeo project</div><div><a href="https://www.osgeo.org/projects/mobilitydb/" target="_blank">https://www.osgeo.org/projects/mobilitydb/</a><br></div><div>and we are involved in the OGC Moving Features Standard Working Group</div><div><a href="https://www.ogc.org/projects/groups/movfeatswg" target="_blank">https://www.ogc.org/projects/groups/movfeatswg</a><br></div><div><div><br></div><div>Now that our user base has considerably increased, we are continuously receiving the same question "What about PostGIS 3.1 support?"</div></div><div><br></div><div>An important aspect to take into account in order to answer the above question is that a reasonably sized mobility dataset contains BILLIONS (literally) of timestamped points (or instants as we call them).</div><div><br></div><div>For example, the Danish Maritime Authority provide AIS datasets</div><div><a href="https://www.dma.dk/SikkerhedTilSoes/Sejladsinformation/AIS/Sider/default.aspx" id="gmail-m_-7690667889495823632m_-8017813441787440758gmail-m_-7772652013323000766LPlnk170567" target="_blank" style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:16px">https://www.dma.dk/SikkerhedTilSoes/Sejladsinformation/AIS/Sider/default.aspx</a><br></div><div>with the following characteristics</div><div><br></div><div><br><table dir="ltr" style="color:rgb(0,0,0);table-layout:fixed;font-size:10pt;font-family:Arial;width:0px;border-collapse:collapse;border:none"><colgroup><col width="100"><col width="100"><col width="100"></colgroup><tbody><tr style="height:21px"><td style="border:1px solid rgb(204,204,204);overflow:hidden;padding:2px 3px;vertical-align:bottom"><br></td><td style="border:1px solid rgb(204,204,204);overflow:hidden;padding:2px 3px;vertical-align:bottom;text-align:center"># Instants</td><td style="border:1px solid rgb(204,204,204);overflow:hidden;padding:2px 3px;vertical-align:bottom;text-align:center">Data Size</td></tr><tr style="height:21px"><td style="border:1px solid rgb(204,204,204);overflow:hidden;padding:2px 3px;vertical-align:bottom">1 day</td><td style="border:1px solid rgb(204,204,204);overflow:hidden;padding:2px 3px;vertical-align:bottom;text-align:center">10,408,105</td><td style="border:1px solid rgb(204,204,204);overflow:hidden;padding:2px 3px;vertical-align:bottom;text-align:center">1.5GB</td></tr><tr style="height:21px"><td style="border:1px solid rgb(204,204,204);overflow:hidden;padding:2px 3px;vertical-align:bottom">1 week</td><td style="border:1px solid rgb(204,204,204);overflow:hidden;padding:2px 3px;vertical-align:bottom;text-align:center">71,381,898</td><td style="border:1px solid rgb(204,204,204);overflow:hidden;padding:2px 3px;vertical-align:bottom;text-align:center">6.5GB</td></tr><tr style="height:21px"><td style="border:1px solid rgb(204,204,204);overflow:hidden;padding:2px 3px;vertical-align:bottom">1 month</td><td style="border:1px solid rgb(204,204,204);overflow:hidden;padding:2px 3px;vertical-align:bottom;text-align:center">312,206,006</td><td style="border:1px solid rgb(204,204,204);overflow:hidden;padding:2px 3px;vertical-align:bottom;text-align:center">53GB</td></tr><tr style="height:21px"><td style="border:1px solid rgb(204,204,204);overflow:hidden;padding:2px 3px;vertical-align:bottom">2 months</td><td style="border:1px solid rgb(204,204,204);overflow:hidden;padding:2px 3px;vertical-align:bottom;text-align:center">639,676,615</td><td style="border:1px solid rgb(204,204,204);overflow:hidden;padding:2px 3px;vertical-align:bottom;text-align:center">103GB</td></tr><tr style="height:21px"><td style="border:1px solid rgb(204,204,204);overflow:hidden;padding:2px 3px;vertical-align:bottom">4 months</td><td style="border:1px solid rgb(204,204,204);overflow:hidden;padding:2px 3px;vertical-align:bottom;text-align:center">1,406,804,683</td><td style="border:1px solid rgb(204,204,204);overflow:hidden;padding:2px 3px;vertical-align:bottom;text-align:center">224GB</td></tr><tr style="height:21px"><td style="border:1px solid rgb(204,204,204);overflow:hidden;padding:2px 3px;vertical-align:bottom">8 months</td><td style="border:1px solid rgb(204,204,204);overflow:hidden;padding:2px 3px;vertical-align:bottom;text-align:center">2,831,621,116</td><td style="border:1px solid rgb(204,204,204);overflow:hidden;padding:2px 3px;vertical-align:bottom;text-align:center">461GB</td></tr></tbody></table></div><div><br></div><div>As you may know, MobilityDB delegates the spatial processing to PostGIS and takes care of the temporal aspects. Obviously, we can use the SQL interface to call PostGIS functions. However, given the huge number of points that need to be manipulated, we cannot afford to tell our users that migrating from PostGIS version 2.5.5 to 3.1.2 will imply a significant performance penalty.</div><div><br></div><div>Therefore, we ask your advice to support PostGIS 3.1 in MobilityDB. We are willing to change ANYTHING in our code (which is already compatible with PostgreSQL version 14 beta)</div><div><a href="https://github.com/MobilityDB/MobilityDB/tree/develop">https://github.com/MobilityDB/MobilityDB/tree/develop</a><br></div><div>to enable a sustainable integration of PostGIS and MobilityDB.</div><div><br></div><div>Regards</div><div><br></div><div>Esteban</div><div><br></div></div>