Dharin Shah

Optimizing Discovery: PostgreSQL's Role in Transforming GetYourGuide's Search

Can a relational database replace your search engine? GetYourGuide migrated from OpenSearch to PostgreSQL, cutting latency by 40% and simplifying their architecture.

Optimizing Discovery: PostgreSQL's Role in Transforming GetYourGuide's Search
#1about 4 minutes

Understanding the original search architecture at GetYourGuide

The previous system used OpenSearch for marketplace data and PostgreSQL for availability, coordinated by a central API layer.

#2about 2 minutes

Identifying the limitations of the OpenSearch implementation

The OpenSearch setup lacked relational joins, had a complex query DSL, and suffered from performance issues and high maintenance overhead.

#3about 2 minutes

Why PostgreSQL was chosen for the migration

PostgreSQL was selected for its mature relational capabilities, JSONB support with GIN indexes, lower operational complexity, and team familiarity with SQL.

#4about 3 minutes

Analyzing PostgreSQL performance concerns for search queries

Initial concerns focused on the performance of GIN indexes, which rely on bitmap heap scans instead of faster index-only scans.

#5about 3 minutes

The challenge of real-time aggregations in PostgreSQL

OpenSearch excels at aggregations due to compressed data structures like roaring bitmaps, a feature not natively available in PostgreSQL for OLTP workloads.

#6about 2 minutes

Designing a hybrid schema and query pattern

The solution involved a denormalized schema using array columns with GIN and BRIN indexes, queried via a "single query, multiple data" (SQMD) pattern using CTEs.

#7about 2 minutes

Implementing dynamic queries and caching strategies

High-cardinality aggregation queries were cached, while the jOOQ library was used to dynamically generate complex SQL from the internal search DSL.

#8about 2 minutes

Operational benefits and limitations of using AWS Aurora

While AWS Aurora provided easy scaling with read replicas, it limited the use of specialized PostgreSQL extensions like roaring bitmaps for performance tuning.

#9about 3 minutes

Handling large objects and replication conflicts

Storing large JSON blobs triggered PostgreSQL's TOAST mechanism, which required tuning and led to replication conflicts on read replicas during vacuum operations.

#10about 3 minutes

Migration results and future roadmap

The migration resulted in a 40% end-to-end latency improvement, and future plans include consolidating text search into PostgreSQL and removing the caching layer.

Related jobs
Jobs that call for the skills explored in this talk.
SabIna compys

SabIna compys
Vienna, Austria

Remote
20-100K
Intermediate
JavaScript
.NET
+1

Featured Partners

Related Articles

View all articles
Dev Digest 128 - Do not Google Monopoly
Hello fellow developer, who watches the watchmen and what is a monopoly? Well, let's find out and learn a few things about new web features and accessibility along the way.News and ArticlesIt is official that Google has monopolised search through ill...
Dev Digest 128 - Do not Google Monopoly
CH
Chris Heilmann
Dev Digest 134 - Where pixels sing?
News and ArticlesWeAreDevelopers LIVE Data and Security Day is on Wednesday, 25/09/2024. Learn about OPC UA Updates, Best Practices for Using GitHub Secrets, Passwordless Web 1.5, Emerging AI Security Risks, Data Privacy in LLMs and get a chance to t...
Dev Digest 134 - Where pixels sing?

From learning to earning

Jobs that call for the skills explored in this talk.