Οι περιορισμοί του single-node μοντέλου στο cloud

Παρά το γεγονός ότι το DuckDB αποτελεί εξαιρετική επιλογή για αναλύσεις τοπικού επιπέδου (local analytics) ακόμα και σε επίπεδο φορητού υπολογιστή, η λειτουργία του ως cloud-hosted data warehouse δημιούργησε σοβαρά λειτουργικά ζητήματα. Τα φορτία εργασίας των πελατών αποδείχθηκαν πολύ πιο σύνθετα από ό,τι είχε προβλεφθεί, οδηγώντας στην ανάγκη για τεράστια instances.

Η πρόκληση έγκειται στο γεγονός ότι ένας single-node engine απαιτεί τον καθορισμό των πόρων (sizing) πριν την εκτέλεση του query. Χωρίς αξιόπιστους μηχανισμούς πρόβλεψης για τη χρήση CPU και μνήμης σε Ad-hoc ερωτήματα, η εμπειρία χρήσης υποβαθμίζεται, ενώ η προσθήκη δίσκων συχνά καθιστά τις διαδικασίες ασύμφορες από άποψη απόδοσης και κόστους.

Προκλήσεις κλίμακας με το DuckLake

Για να χρησιμοποιηθεί το DuckDB ως πλήρες data warehouse, η PostHog ενσωμάτωσε το DuckLake extension. Ωστόσο, σε κλίμακα 2 petabyte, 1 τρισεκατομμυρίου γραμμών και 15,3 εκατομμυρίων snapshots, η αρχιτεκτονική έφτασε στα όριά της:

  • Σχήμα καταλόγου (catalog schema): Η ανάγκη διατήρησης φορητότητας σε πολλαπλές SQL βάσεις δεδομένων περιόρισε τις βελτιστοποιήσεις σε επίπεδο engine.
  • Συσσώρευση μεταδεδομένων: Πάνω από το 99% των γραμμών στατιστικών του καταλόγου ανήκε σε διαγραμμένους πίνακες, προκαλώντας καθυστερήσεις στα writes που ξεπερνούσαν τα τρία λεπτά ανά commit.
  • Διαχείριση συνδέσεων: Η διατήρηση χιλιάδων ενεργών συνδέσεων σε κοινόχρηστες Postgres βάσεις δεδομένων επέφερε σημαντικό κόστος πόρων.

Τα προβλήματα του pgwire σε κλίμακα παραγωγής

Η παροχή απευθείας συνδέσεων Postgres μέσω της θύρας 5432 αποδείχθηκε δυσκολότερη στη διαχείριση σε σύγκριση με τα HTTP interfaces. Η διαχείριση των reconnects, των TTLs, των idle connections και η έπαρση εργαλείων load balancing για το pgwire (σε αντιδιαστολή με τα AWS Application Load Balancers και τα HTTP headers στο Kubernetes) δημιούργησε ένα διαρκές κόστος συντήρησης, απομακρύνωντας την ομάδα από τον κύριο στόχο της.

Η επόμενη μέρα: Trino και HogLake

Αφήνοντας πίσω το DuckDB, η PostHog επανασχεδίασε εκ βάθρων την υποδομή της γύρω από μια προσαρμοσμένη έκδοση του Trino και δημιούργησε ένα νέο open table format με την ονομασία HogLake, δοκιμάζοντάς το εκτενώς σε κλίμακα petabyte προτού το διαθέσει σε πελάτες.