Aufbau von räumlichem Gedächtnis

Ich habe drei Monate damit verbracht, ein Pinterest für die physische Welt zu bauen.

Die Idee ist simpel. Man hinterlässt digitale Notizen, Fotos oder Geschichten an bestimmten GPS-Koordinaten. Menschen können sie nur sehen, wenn sie physisch an genau diesem Ort stehen. Es verwandelt die reale Welt in eine Sammlung digitaler Zeitkapseln.

Eine standortbasierte App zu entwickeln, ist schwieriger, als es aussieht. Hier ist das, was ich über den Tech-Stack gelernt habe.

Die räumliche Datenbank Man kann Breitengrad und Längengrad nicht einfach als einfache Zahlen speichern, wenn man skalieren möchte. Man benötigt räumliche Indizes. Ich habe PostGIS mit PostgreSQL verwendet.

Es übernimmt:

  • Räumliche Indizierung mit R-tree
  • Integrierte Distanzberechnungen
  • Schnelle Nähe-Abfragen

Wenn man Erinnerungen im Umkreis von 50 Metern um einen Nutzer finden muss, übernimmt PostGIS die Schwerstarbeit.

Die Caching-Strategie Beliebte Touristenattraktionen erhalten zu viele Anfragen. Alle zwei Sekunden auf die Datenbank zuzugreifen, ist schlecht für die Performance. Ich habe Redis GEO-Befehle verwendet, um die IDs der Erinnerungen in belebten Gebieten zu cachen.

Ein Profi-Tipp: Cachen Sie nicht das gesamte Objekt in Redis. Cachen Sie nur die IDs. Das hält den Speicherverbrauch niedrig und reduziert die Abfragezeit von 20 ms auf 2 ms.

Das Upload-Muster Wenn Ihr Server jeden Foto-Upload verarbeitet, wird er unter Last abstürzen. Ich habe ein zweiphasiges Upload-Muster verwendet:

  • Der Client bittet den Server um eine vorsignierte URL
  • Der Client lädt die Datei direkt zu Cloudflare R2 hoch
  • Der Client teilt dem Server mit, wenn der Upload abgeschlossen ist

Ich habe R2 gegenüber S3 bevorzugt, da es keine Egress-Gebühren gibt. Das spart Geld, wenn Nutzer Medien herunterladen.

Was funktioniert hat

  • PostGIS und Redis GEO machen räumliche Abfragen schnell.
  • Direkt-zu-R2-Uploads ermöglichen es dem Backend zu skalieren.
  • Go und Gin bieten hohe Performance bei geringem Speicherverbrauch.
  • Progressiver Datenschutz (Privat, Freunde oder Öffentlich) schützt die Nutzer.

Was schiefgelaufen ist

  • Die GPS-Genauigkeit ist in Städten mit hohen Gebäuden unbeständig.
  • Das „Cold-Start“-Problem ist real. Die App benötigt viele Nutzer, um lebendig zu wirken.
  • Die Inhaltsmoderation erfordert ständige Aufmerksamkeit.

Der Bau dieser App hat mich gelehrt, dass der physische Standort eine unterschätzte Dimension für soziale Apps ist. Digitale Inhalte fühlen sich bedeutungsvoller an, wenn sie an einen realen Ort gebunden sind.

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

Optionale Lern-Community: https://t.me/GyaanSetuAi