Het bouwen van ruimtelijk geheugen

Ik heb drie maanden besteed aan het bouwen van een Pinterest voor de fysieke wereld.

Het idee is simpel. Je laat digitale notities, foto's of verhalen achter op specifieke GPS-coördinaten. Mensen kunnen ze alleen zien als ze fysiek op die exacte plek staan. Het verandert de echte wereld in een verzameling digitale tijdcapsules.

Het bouwen van een locatiegebaseerde app is lastiger dan het lijkt. Dit is wat ik heb geleerd over de tech stack.

De ruimtelijke database

Je kunt breedtegraad en lengtegraad niet zomaar als simpele getallen opslaan als je wilt schalen. Je hebt ruimtelijke indexen nodig. Ik heb PostGIS gebruikt met PostgreSQL.

Het handelt het volgende af:

  • Ruimtelijke indexering met R-tree
  • Ingebouwde afstandsberekeningen
  • Snelle nabijheidsqueries

Als je herinneringen wilt vinden binnen 50 meter van een gebruiker, doet PostGIS het zware werk.

De caching-strategie

Populaire toeristische trekpleisters krijgen te veel verzoeken. Elke twee seconden de database raadplegen is slecht voor de prestaties. Ik heb Redis GEO-commando's gebruikt om memory-ID's in drukke gebieden te cachen.

Een pro-tip: cache niet het volledige object in Redis. Cache alleen de ID's. Dit houdt je geheugengebruik laag en verkort de querytijd van 20ms naar 2ms.

Het uploadpatroon

Als je server elke foto-upload afhandelt, zal deze onder zware belasting crashen. Ik heb een uploadpatroon in twee fasen gebruikt:

  • De client vraagt de server om een pre-signed URL
  • De client uploadt het bestand rechtstreeks naar Cloudflare R2
  • De client laat de server weten wanneer de upload is voltooid

Ik heb voor R2 gekozen in plaats van S3 omdat er geen egress-kosten zijn. Dit bespaart geld wanneer gebruikers media downloaden.

Wat werkte

  • PostGIS en Redis GEO maken ruimtelijke queries snel.
  • Directe uploads naar R2 zorgen ervoor dat de backend kan schalen.
  • Go en Gin bieden hoge prestaties met een laag geheugengebruik.
  • Progressieve privacy (Privé, Vrienden of Openbaar) beschermt gebruikers.

Wat misging

  • De GPS-nauwkeurigheid is inconsistent in steden met hoge gebouwen.
  • Het "cold start"-probleem is reëel. De app heeft veel gebruikers nodig om echt tot leven te komen.
  • Contentmoderatie vereist constante aandacht.

Het bouwen hiervan heeft me geleerd dat fysieke locatie een onderschatte dimensie is voor sociale apps. Digitale content voelt betekenisvoller wanneer het verbonden is aan een echte plek.

Bron: https://dev.to/kevinten10/building-spatial-memory-why-i-built-a-pinterest-for-the-physical-world-and-what-i-learned-bpm

Optionele leercommunity: https://t.me/GyaanSetuAi