Το ScyllaDB είναι καλύτερο από την Κασσάνδρα, και εδώ είναι ο λόγος.

Το ScyllaDB είναι μια από τις νεότερες βάσεις δεδομένων NoSQL που προσφέρει πολύ υψηλή απόδοση σε καθυστέρηση δευτερολέπτων. Το σημαντικό σημείο είναι ότι το επιτυγχάνει σε ένα κλάσμα του κόστους μιας σύγχρονης βάσης δεδομένων NoSQL.

Το ScyllaDB εφαρμόζει σχεδόν όλα τα χαρακτηριστικά του Cassandra στο C ++. Όμως, λέγοντας ότι είναι μια απλή θύρα C ++ θα ήταν υποτιμητικό. Οι προγραμματιστές της Scylla έχουν κάνει πολλές αλλαγές κάτω από την κουκούλα που δεν είναι ορατές στον χρήστη, αλλά οδηγούν σε τεράστια βελτίωση της απόδοσης.

Κανείς πλάκα έτσι?

Οχι δεν είμαι.

Όπως μπορείτε να δείτε (αν πήγατε σε αυτόν τον σύνδεσμο), για τις περισσότερες περιπτώσεις, η 99,9 εκατοστιαία καθυστέρηση της Scylla είναι 5-10Χ καλύτερη από την Cassandra.

Επίσης, στα σημεία αναφοράς που αναφέρονται εδώ, ένα τυπικό σύμπλεγμα Scylla 3 κόμβων προσφέρει σχεδόν την ίδια απόδοση με ένα σύμπλεγμα Cassandra 30 κόμβων (το οποίο οδηγεί σε μείωση του κόστους κατά 10 φορές).

Πώς είναι αυτό δυνατόν?

Το πιο σημαντικό σημείο είναι ότι η Scylla γράφεται στο C ++ 14. Λοιπόν, αναμένεται να είναι ταχύτερο από το Cassandra, το οποίο λειτουργεί καθαρά με το JVM.

Ωστόσο, υπήρξαν πολλές σημαντικές βελτιώσεις χαμηλού επιπέδου στη Scylla που το καθιστούν καλύτερο από τον ανταγωνισμό.

Προσέγγιση Shared-Nothing

Η Κασσάνδρα βασίζεται σε νήματα για παραλληλισμό. Το πρόβλημα είναι ότι τα νήματα απαιτούν ένα διακόπτη περιβάλλοντος, ο οποίος είναι αργός.

Επίσης, για την επικοινωνία μεταξύ των νημάτων, πρέπει να κλειδώσετε την κοινόχρηστη μνήμη που οδηγεί και πάλι σε σπατάλη χρόνου επεξεργασίας.

Το ScyllaDB χρησιμοποιεί το πλαίσιο seastar για να διασπάσει αιτήματα σε κάθε πυρήνα. Η εφαρμογή έχει μόνο ένα νήμα ανά πυρήνα. Με αυτόν τον τρόπο, εάν μια περίοδος λειτουργίας αντιμετωπίζεται από τον πυρήνα 1 και ένα αίτημα ερωτήματος για αυτήν την περίοδο σύνδεσης φτάνει στον πυρήνα 2, κατευθύνεται στον πυρήνα 1 για επεξεργασία. Οποιοσδήποτε από τους πυρήνες μπορεί να χειριστεί την απόκριση μετά από αυτό.

Το πλεονέκτημα της κοινής προσέγγισης τίποτα είναι ότι κάθε νήμα έχει τη δική του μνήμη, cpu και ουρές buffer NIC.

Σε περιπτώσεις όπου η επικοινωνία μεταξύ πυρήνων δεν μπορεί να αποφευχθεί, η Seastar προσφέρει ασύγχρονη ασύρματη επικοινωνία μεταξύ πυρήνων, η οποία είναι εξαιρετικά επεκτάσιμη. Αυτά τα πρωτόκολλα χωρίς κλειδί περιλαμβάνουν Futures and Promises, τα οποία χρησιμοποιούνται συνήθως στον προγραμματισμό και έτσι είναι φιλικά για προγραμματιστές.

Αποφύγετε τον πυρήνα

Όταν βρεθεί μια σειρά σε ένα SSTable, πρέπει να σταλεί μέσω του δικτύου στον πελάτη. Αυτό περιλαμβάνει την αντιγραφή δεδομένων από χώρο χρήστη σε χώρο πυρήνα.

Ωστόσο, ο πυρήνας Linux εκτελεί συνήθως λειτουργίες κλειδώματος πολλαπλών νημάτων που δεν είναι επεκτάσιμες.

Το ScyllaDB το φροντίζει αυτό χρησιμοποιώντας τη στοίβα δικτύου της Seastar.

Η στοίβα δικτύου της Seastar λειτουργεί στο χώρο του χρήστη και χρησιμοποιεί το DPDK για ταχύτερη επεξεργασία πακέτων. Το DPDK παρακάμπτει τον πυρήνα για να αντιγράψει τα δεδομένα απευθείας στο buffer NIC και επεξεργάζεται ένα πακέτο εντός 80 κύκλων CPU. (πηγή: Ιστότοπος DPDK)

Μην βασίζεστε στην προσωρινή μνήμη σελίδας

Η προσωρινή μνήμη σελίδας είναι εξαιρετική όταν έχετε διαδοχικό I / O και τα δεδομένα αποθηκεύονται στο δίσκο με τη μορφή καλωδίου.

Ωστόσο, στη Scylla / Cassandra, έχουμε δεδομένα με τη μορφή SSTables. Η προσωρινή μνήμη σελίδας αποθηκεύει δεδομένα στην ίδια μορφή, η οποία καταλαμβάνει ένα μεγάλο κομμάτι μνήμης για μικρά δεδομένα και χρειάζεται σειριοποίηση / αποεπιεριοποίηση όταν θέλετε να τα μεταφέρετε.

Το ScyllaDB, αντί να βασίζεται στην προσωρινή μνήμη σελίδας, εκχωρεί το μεγαλύτερο μέρος της μνήμης του στη γραμμή προσωρινής μνήμης.

Το Row-Cache έχει τα δεδομένα σε βελτιστοποιημένη μορφή μνήμης που καταλαμβάνει λιγότερο χώρο και δεν χρειάζεται σειριοποίηση / αποεστερίωση

Ένα άλλο πλεονέκτημα της χρήσης της προσωρινής μνήμης γραμμής είναι ότι δεν αφαιρείται όταν συμβαίνει συμπίεση ενώ η προσωρινή μνήμη της σελίδας αλλοιώνεται.

Αυτές είναι οι σημαντικότερες βελτιστοποιήσεις στο ScyllaDB που το καθιστούν πολύ πιο γρήγορο, πιο αξιόπιστο και φθηνότερο από το Cassandra. Η Scylla έχει πολλές άλλες βελτιστοποιήσεις κάτω από την κουκούλα που μπορείτε να βρείτε εδώ.

Αν είστε περίεργοι για περισσότερα σχέδια όπως αυτά παραπάνω ή αν θέλετε να επικοινωνήσετε μαζί μου, συνδεθείτε μαζί μου στο LinkedIn ή στο Facebook ή στείλτε ένα email στο [email protected]