ਸਪੇਸ਼ਲ ਮੈਮੋਰੀ ਬਣਾਉਣਾ

ਮੈਂ ਭੌਤਿਕ ਦੁਨੀਆ ਲਈ ਇੱਕ Pinterest ਬਣਾਉਣ ਵਿੱਚ ਤਿੰਨ ਮਹੀਨੇ ਬਿਤਾਏ।

ਵਿਚਾਰ ਸਰਲ ਹੈ। ਤੁਸੀਂ ਖਾਸ GPS ਕੋਆਰਡੀਨੇਟਸ 'ਤੇ ਡਿਜੀਟਲ ਨੋਟਸ, ਫੋਟੋਆਂ, ਜਾਂ ਕਹਾਣੀਆਂ ਛੱਡ ਸਕਦੇ ਹੋ। ਲੋਕ ਉਹਨਾਂ ਨੂੰ ਉਦੋਂ ਹੀ ਦੇਖ ਸਕਦੇ ਹਨ ਜਦੋਂ ਉਹ ਸਰੀਰਕ ਤੌਰ 'ਤੇ ਉਸੇ ਸਹੀ ਜਗ੍ਹਾ 'ਤੇ ਖੜ੍ਹੇ ਹੋਣ। ਇਹ ਅਸਲ ਦੁਨੀਆ ਨੂੰ ਡਿਜੀਟਲ ਟਾਈਮ ਕੈਪਸੂਲ ਦੇ ਇੱਕ ਸੰਗ੍ਰਹਿ ਵਿੱਚ ਬਦਲ ਦਿੰਦਾ ਹੈ।

ਲੋਕੇਸ਼ਨ-ਅਧਾਰਤ ਐਪ ਬਣਾਉਣਾ ਦਿਖਣ ਵਿੱਚ ਜਿੰਨਾ ਸੌਖਾ ਲੱਗਦਾ ਹੈ, ਉਸ ਤੋਂ ਕਿਤੇ ਜ਼ਿਆਦਾ ਔਖਾ ਹੈ। ਇੱਥੇ ਉਹ ਹੈ ਜੋ ਮੈਂ ਟੈਕ ਸਟੈਕ ਬਾਰੇ ਸਿੱਖਿਆ।

ਸਪੇਸ਼ਲ ਡੇਟਾਬੇਸ ਜੇਕਰ ਤੁਸੀਂ ਸਕੇਲ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਲੈਟੀਟਿਊਡ ਅਤੇ ਲੌਂਗਟੀਊਡ ਨੂੰ ਸਿਰਫ਼ ਸਾਧਾਰਨ ਨੰਬਰਾਂ ਵਜੋਂ ਸਟੋਰ ਨਹੀਂ ਕਰ ਸਕਦੇ। ਤੁਹਾਨੂੰ ਸਪੇਸ਼ਲ ਇੰਡੈਕਸਾਂ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਮੈਂ PostgreSQL ਦੇ ਨਾਲ PostGIS ਦੀ ਵਰਤੋਂ ਕੀਤੀ।

ਇਹ ਸੰਭਾਲਦਾ ਹੈ:

  • R-tree ਦੇ ਨਾਲ ਸਪੇਸ਼ਲ ਇੰਡੈਕਸਿੰਗ
  • ਇਨ-ਬਿਲਟ ਦੂਰੀ ਦੀਆਂ ਗਣਨਾਵਾਂ
  • ਤੇਜ਼ ਪ੍ਰੌਕਸੀਮਿਟੀ ਕੁਐਰੀਆਂ

ਜੇਕਰ ਤੁਹਾਨੂੰ ਕਿਸੇ ਯੂਜ਼ਰ ਦੇ 50 ਮੀਟਰ ਦੇ ਅੰਦਰ ਯਾਦਾਂ ਲੱਭਣ ਦੀ ਲੋੜ ਹੈ, ਤਾਂ PostGIS ਸਾਰਾ ਮੁੱਖ ਕੰਮ ਕਰਦਾ ਹੈ।

ਕੈਸ਼ਿੰਗ ਰਣਨੀਤੀ ਪ੍ਰਸਿੱਧ ਸੈਰ-ਸਪਾਟਾ ਸਥਾਨਾਂ 'ਤੇ ਬਹੁਤ ਜ਼ਿਆਦਾ ਰਿਕੁਐਸਟਾਂ ਆਉਂਦੀਆਂ ਹਨ। ਹਰ ਦੋ ਸਕਿੰਟਾਂ ਬਾਅਦ ਡੇਟਾਬੇਸ ਨੂੰ ਐਕਸੈਸ ਕਰਨਾ ਪਰਫਾਰਮੈਂਸ ਲਈ ਮਾੜਾ ਹੈ। ਮੈਂ ਭੀੜ ਵਾਲੇ ਖੇਤਰਾਂ ਵਿੱਚ ਮੈਮੋਰੀ IDs ਨੂੰ ਕੈਸ਼ ਕਰਨ ਲਈ Redis GEO ਕਮਾਂਡਾਂ ਦੀ ਵਰਤੋਂ ਕੀਤੀ।

ਇੱਕ ਪ੍ਰੋ ਟਿਪ: Redis ਵਿੱਚ ਪੂਰੇ ਆਬਜੈਕਟ ਨੂੰ ਕੈਸ਼ ਨਾ ਕਰੋ। ਸਿਰਫ਼ IDs ਨੂੰ ਕੈਸ਼ ਕਰੋ। ਇਹ ਤੁਹਾਡੇ ਮੈਮੋਰੀ ਦੀ ਵਰਤੋਂ ਨੂੰ ਘੱਟ ਰੱਖਦਾ ਹੈ ਅਤੇ ਕੁਐਰੀ ਦੇ ਸਮੇਂ ਨੂੰ 20ms ਤੋਂ ਘਟਾ ਕੇ 2ms ਕਰ ਦਿੰਦਾ ਹੈ।

ਅੱਪਲੋਡ ਪੈਟਰਨ ਜੇਕਰ ਤੁਹਾਡਾ ਸਰਵਰ ਹਰ ਫੋਟੋ ਅੱਪਲੋਡ ਨੂੰ ਸੰਭਾਲਦਾ ਹੈ, ਤਾਂ ਇਹ ਲੋਡ ਹੇਠ ਕ੍ਰੈਸ਼ ਹੋ ਜਾਵੇਗਾ। ਮੈਂ ਦੋ-ਪੜਾਵੀ ਅੱਪਲੋਡ ਪੈਟਰਨ ਦੀ ਵਰਤੋਂ ਕੀਤੀ:

  • ਕਲਾਇੰਟ ਸਰਵਰ ਤੋਂ pre-signed URL ਮੰਗਦਾ ਹੈ
  • ਕਲਾਇੰਟ ਸਿੱਧਾ Cloudflare R2 'ਤੇ ਫਾਈਲ ਅੱਪਲੋਡ ਕਰਦਾ ਹੈ
  • ਕਲਾਇੰਟ ਸਰਵਰ ਨੂੰ ਦੱਸਦਾ ਹੈ ਕਿ ਅੱਪਲੋਡ ਕਦੋਂ ਖਤਮ ਹੋ ਗਿਆ ਹੈ

ਮੈਂ S3 ਦੀ ਬਜਾਏ R2 ਨੂੰ ਚੁਣਿਆ ਕਿਉਂਕਿ ਇਸ ਵਿੱਚ ਕੋਈ egress fees ਨਹੀਂ ਹਨ। ਜਦੋਂ ਯੂਜ਼ਰ ਮੀਡੀਆ ਡਾਊਨਲੋਡ ਕਰਦੇ ਹਨ ਤਾਂ ਇਸ ਨਾਲ ਪੈਸੇ ਦੀ ਬਚਤ ਹੁੰਦੀ ਹੈ।

ਕੀ ਕੰਮ ਕਰਿਆ

  • PostGIS ਅਤੇ Redis GEO ਸਪੇਸ਼ਲ ਕੁਐਰੀਆਂ ਨੂੰ ਤੇਜ਼ ਬਣਾਉਂਦੇ ਹਨ।
  • Direct-to-R2 ਅੱਪਲੋਡ ਬੈਕਐਂਡ ਨੂੰ ਸਕੇਲ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੇ ਹਨ।
  • Go ਅਤੇ Gin ਘੱਟ ਮੈਮੋਰੀ ਦੀ ਵਰਤੋਂ ਦੇ ਨਾਲ ਉੱਚ ਪ੍ਰਦਰਸ਼ਨ ਪ੍ਰਦਾਨ ਕਰਦੇ ਹਨ।
  • ਪ੍ਰੋਗਰੈਸਿਵ ਪ੍ਰਾਈਵੇਸੀ (Private, Friends, ਜਾਂ Public) ਯੂਜ਼ਰਾਂ ਦੀ ਰੱਖਿਆ ਕਰਦੀ ਹੈ।

ਕੀ ਗਲਤ ਹੋਇਆ

  • ਉੱਚੀਆਂ ਇਮਾਰਤਾਂ ਵਾਲੇ ਸ਼ਹਿਰਾਂ ਵਿੱਚ GPS ਦੀ ਸ਼ੁੱਧਤਾ ਅਸਥਿਰ ਹੁੰਦੀ ਹੈ।
  • "cold start" ਦੀ ਸਮੱਸਿਆ ਅਸਲ ਹੈ। ਐਪ ਨੂੰ ਜੀਵੰਤ ਮਹਿਸੂਸ ਹੋਣ ਲਈ ਬਹੁਤ ਸਾਰੇ ਯੂਜ਼ਰਾਂ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।
  • ਕੰਟੈਂਟ ਮੋਡਰੇਸ਼ਨ ਲਈ ਲਗਾਤਾਰ ਧਿਆਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।

ਇਸ ਨੂੰ ਬਣਾਉਣ ਨਾਲ ਮੈਂ ਸਿੱਖਿਆ ਕਿ ਸੋਸ਼ਲ ਐਪਸ ਲਈ ਭੌਤਿਕ ਸਥਾਨ ਇੱਕ ਅਣਗੌਲਿਆ ਪਹਿਲੂ ਹੈ। ਡਿਜੀਟਲ ਕੰਟੈਂਟ ਉਦੋਂ ਵਧੇਰੇ ਅਰਥਪੂਰਨ ਮਹਿਸੂਸ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਇਹ ਕਿਸੇ ਅਸਲ ਜਗ੍ਹਾ ਨਾਲ ਜੁੜਿਆ ਹੋਵੇ।

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

ਵਿਕਲਪਿਕ ਲਰਨਿੰਗ ਕਮਿਊਨਿਟੀ: https://t.me/GyaanSetuAi