A Graph of Images
Yesterday we updated the site with some major changes. Some of you may have noticed that loading the photos after clicking the map took a long time for certain locations with lots of photos.
This is because internally, we are actually building up a connected model of how images relate to all their possible neighbors - both in terms of location, direction, overlap and time, amongst others. Our master database is Postgres - very robust and with great tooling, but poor on performance in smart rule-based traversals of our image graph.
Just a few days back, we internally launched a graph search service built on top of the awesome graph database neo4j - also lovingly built in Malmö, Sweden! This graph search service exposes an API that we are now using for the site and that we will open up for developers soon. Even with hundreds of images, the performance is now back to where it needs to be (<100ms, compared to 15s+ in some really bad cases on Postgres).
We will use this as a platform for building new features around browsing photos and navigation. Stay tuned for a number of cool things we can do now that the bottleneck of the database performance is removed.
A photo is connected to other photos based on location and image features. The arrows show the most important connections for user navigation.
What does this mean for you?
- The site is faster
- Your applications will have better and faster search
- Later on, you will be able to do queries for photos in specific directions or with specific properties.
Right now it’s winter over here in Sweden - help take some sunny photos to brighten the database and the front page. Happy mapping!