Η εξυπηρέτηση μιας μεγάλης βάσης χρηστών με αξιόπιστα, συνεπή και χαμηλής καθυστέρησης δεδομένα είναι μια πολύ δύσκολη πρόκληση για κάθε ομάδα υποστήριξης. Στη Ledger, κάναμε τη στρατηγική επιλογή να φιλοξενήσουμε τις δικές μας υπηρεσίες βασικών δεδομένων blockchain. Μη βασιζόμαστε σε τρίτα μέρη, μπορούμε να διαχειριζόμαστε μόνοι μας τα δεδομένα των πελατών μας, διασφαλίζοντας ότι οι υποκείμενες διαδικασίες συμμορφώνονται με τις οδηγίες ασφαλείας και τους Στόχους Επιπέδου Υπηρεσιών (SLO) που προσανατολίζονται στην απόδοση.
Αλλά αυτή η στρατηγική φέρνει και τις δικές της προκλήσεις.
Η πρώτη μας πρόκληση είναι να μεταφέρουμε αυτές τις βασικές υπηρεσίες παροχής δεδομένων μακριά από δροσερά και λαμπερά εργαλεία noSQL. Σε αυτό το άρθρο, θα εξετάσω γιατί λάβαμε αυτή τη δύσκολη απόφαση, τις πολυπλοκότητες που συναντήσαμε και τα οφέλη που αποκομίσαμε.
Ο στόχος αυτού του άρθρου είναι να δείξει τις τεχνικές πτυχές που μας οδήγησαν να επιλέξουμε την PostgreSQL ως το νέο βασικό επίπεδο αποθήκευσης δεδομένων blockchain.
Βαθιά βουτιά στα Δεδομένα Blockchain
Τα δεδομένα Blockchain έχουν πολλά βασικά χαρακτηριστικά.
Πρώτον, αυξάνεται συνεχώς και τίποτα δεν διαγράφεται ποτέ από αυτό. Ωστόσο, στην πράξη, αν και το μεγαλύτερο μέρος ενός blockchain είναι αμετάβλητο, το νεότερο μέρος του blockchain μπορεί να αλλάξει λόγω συγκρούσεων που πρέπει να επιλυθούν. Πράγματι, καθώς η αλυσίδα είναι ένα δίκτυο ομοτίμων, πολλά νόμιμα μπλοκ μπορεί να συνυπάρχουν προσωρινά. Συνήθως, το παλαιότερο διαγράφεται, με αποτέλεσμα αυτό που λέμε αναδιοργάνωση. Με λίγα λόγια, τα δεδομένα χωρίζονται μεταξύ μιας αμετάβλητης ψυχρής ουράς και μιας σπάνια μεταβαλλόμενης κατάστασης κεφαλής.
Το ζήτημα που προσπαθούμε να λύσουμε είναι ότι, ενώ οι αλυσίδες μπλοκ είναι ιδανικές για την κατοχή βυζαντινών δεδομένων ανοχής σε σφάλματα, είναι λιγότερο αποτελεσματικές για τον τεμαχισμό και την κοπή τους σε πολλούς άξονες. Δηλαδή, η λήψη της λίστας των λειτουργιών που επηρέασαν έναν λογαριασμό είναι πολύ δύσκολη. Ακόμη και η απόκτηση υπολοίπου λογαριασμού σε ένα blockchain όπως το bitcoin είναι μια πρόκληση όταν δεν έχετε ήδη τη λίστα των συναλλαγών.
Για να ξεπεραστούν αυτές οι προκλήσεις, το Ledger Explorer Services ευρετηριάζει ολόκληρο το blockchain. Είναι μια μεγάλη, κρίσιμη και ευαίσθητη στην απόδοση υπηρεσία πλήρως γραμμένη στο Scala, χρησιμοποιώντας το cats-effect χρόνος εκτέλεσης υψηλής απόδοσης. Είμαστε πάνω από 10 rps στο bitcoin, ενώ διατηρούμε μια καθυστέρηση p95 κάτω από 100ms. Κάνουμε και προσλήψεις 😊.
Λίγη ιστορία
Στην αρχή της ιστορίας μας, πολύ πριν γίνω μέλος της εταιρείας, το επίπεδο υπηρεσίας δεδομένων Ledger διαχειριζόταν μια ενσωματωμένη βάση δεδομένων Neo4j. Κάθε πλαίσιο εξυπηρέτησης ευρετηρίαζε τα δικά του δεδομένα και τα εξυπηρετούσε τοπικά, γεγονός που προκάλεσε πολλά προβλήματα.
Η συνέπεια των δεδομένων μεταξύ των παρουσιών δεν ήταν εγγυημένη και το τεράστιο μέγεθος της κατάστασης που έπρεπε να ευρετηριαστεί, σε συνδυασμό με τη χρήση του δίσκου neo4j και της μνήμης ram, δεν ήταν επεκτάσιμο. Αυτό το πρόβλημα χειροτέρευε μόνο καθώς η εταιρεία μεγάλωνε, καθιστώντας όλο και πιο δύσκολη τη δημιουργία νέων περιπτώσεων.
Κασσάνδρα Στη συνέχεια επιλέχθηκε ως ο κύριος οδηγός αυτής της νέας εγκατάστασης: είναι μια ομαδοποιημένη, οριζόντια κλιμακούμενη βάση δεδομένων που βρίσκεται στην πλευρά AP του θεωρήματος CAP. Επιλύει τα ζητήματα που σχετίζονται με την κοινή χρήση δεδομένων και επιτρέπει έναν σαφή διαχωρισμό μεταξύ του στοιχείου ευρετηρίασης, με επίγνωση του blockchain και των ακεφαλικών διακομιστών API.
Αλλά ποιο είναι το νόημα να έχουμε διαθέσιμο ολόκληρο το ιστορικό κράτος αν δεν πρόκειται ποτέ να διαβάσουμε πραγματικά από αυτό;
Όσον αφορά την περίπτωση χρήσης μας, σπάνια χρειάζονται ακατέργαστα δεδομένα ιστορικού, επειδή η κατάσταση του λογαριασμού του χρήστη μπορεί να συγκεντρωθεί από αυτά. Αυτό μας οδήγησε να αμφισβητήσουμε την υπάρχουσα λύση αποθήκευσης δεδομένων που βασίζεται στην κατανεμημένη βάση δεδομένων Cassandra.
Ο όγκος των δεδομένων που χρειάζεται να αποθηκεύσουμε ανά blockchain, αν και είναι στην περιοχή terabyte, δεν είναι αυτό που μπορεί κανείς να ονομάσει «μεγάλα δεδομένα». Επιπλέον, το τμήμα του εάν θα χρησιμοποιηθεί για την απάντηση των περισσότερων ερωτημάτων (γνωστός και ως The hot path) είναι ακόμη μικρότερο. Στις μέρες μας μπορεί κανείς εύκολα να βρει διακομιστές υλικού εμπορευμάτων με περισσότερο από 16 TB αποθήκευσης NVMe SSD. Η κάθετη κλιμάκωση είναι ένα πολύ ισχυρό εργαλείο και μια σχεσιακή βάση δεδομένων είναι επίσης.
Τέλος, το κύριο πρόβλημα που είχαμε με την τρέχουσα ρύθμιση cassandra δεν ήταν ούτε το άχρηστο μοντέλο αποθήκευσης ούτε η κακώς τοποθετημένη περίπτωση χρήσης δεδομένων, αλλά η έλλειψη φιλικότητας προς τους προγραμματιστές. Η ανάπτυξη μιας νέας δυνατότητας που βασίζεται σε δεδομένα στο cassandra έχει αποδειχθεί ότι είναι άσκοπα χρονοβόρα. Προσπαθήσαμε να εφαρμόσουμε κάθε νέο άξονα στον οποίο πρέπει να παρέχουμε δεδομένα.
Δεδομένης της τεχνογνωσίας της ομάδας μας στις δεξιότητες μοντελοποίησης δεδομένων και στην επάρκεια SQL, PostgreSQL ήταν ο τέλειος υποψήφιος. Αυτή η λύση είναι δοκιμασμένη στη μάχη, στιβαρή, εύκολη στην επέκταση, καθιστώντας την ιδανική επιλογή.
Γιατί επιλέξαμε SQL αντί NoSQL:
- Διαβάζει / Γράφει ισορροπίες: η περίπτωση χρήσης δεδομένων blockchain έχει παραμορφωθεί έντονα ως προς τις αναγνώσεις παρά τις εγγραφές (το blockchain γράφει πολύ λίγα δεδομένα σε πολύ λογικό ρυθμό, ακόμη και για μια αλυσίδα blockchain όπως το Polygon). Η Cassandra έχει την ικανότητα να απορροφά πολύ μεγάλο αριθμό εγγραφών – η διαδρομή ανάγνωσης είναι στην πραγματικότητα πλέον από τη διαδρομή εγγραφής.
- Υποστήριξη ευρετηρίασης: Οι δείκτες αποτελούν βασικό στοιχείο ενός ΣΔΒΔ για την απάντηση ερωτημάτων και νέων επιχειρηματικών υποθέσεων ή ευκαιριών. Η Κασσάνδρα έχει περιορισμένη υποστήριξη για την ευρετηρίαση. Οι δείκτες είναι αποτελεσματικοί μόνο εάν το ερώτημα προσδιορίζει ήδη έναν τρόπο περιορισμού του διαμερίσματος στο οποίο θα εκτελεστεί το ερώτημα. Πληρώνουμε εδώ το κόστος για να έχουμε ένα αυθαίρετα διανέμονται βάση δεδομένων. Η υποστήριξη PostgreSQL για δείκτες είναι αποτελεσματική, επεκτάσιμη και στην άκρη.
- Υποστήριξη συγκέντρωσης: Ίδια περίπτωση συνάθροισης. Δεδομένου ότι η Cassandra δεν επιτρέπει τη συνάθροιση πολλαπλών διαμερισμάτων και δεν ανέχεται καμία ρήτρα GROUP BY στη γλώσσα ερωτήματός της, η υποστήριξή της λείπει. Η PostgreSQL προτείνει μια εκτεταμένη υποστήριξη συγκέντρωσης, ακόμη και σε εξωτικούς τύπους δεδομένων, όπως εύρη και blobs jsonb.
- Μοντελοποίηση δεδομένων: Η Cassandra είναι πολύ, πολύ περιοριστική στον τρόπο με τον οποίο είναι δυνατή η μοντελοποίηση δεδομένων. Πρέπει να δημιουργηθεί ένας πίνακας για σχεδόν κάθε αίτημα που θέλετε να απαντήσετε και τα δεδομένα πρέπει να αποσυναρμολογηθούν σε μεγάλες σειρές (χρησιμοποιώντας πλήρως το ευρεία κολόνα κατάστημα πτυχή του C* και επίσης το γεγονός ότι οι συγγραφείς είναι φτηνοί). Η PostgreSQL μας επιτρέπει να αξιοποιήσουμε τη σχεσιακή πτυχή του blockchain (κλήσεις, συναλλαγές, μπλοκ) και τον ελεύθερο χώρο στο δίσκο, ενθαρρύνοντας την επαναχρησιμοποίηση δεδομένων.
- Ad-hoc ερωτήματα και έλεγχος: Το να μπορούμε να χρησιμοποιούμε το πλήρες πρότυπο της SQL και να κάνουμε αυθαίρετα ερωτήματα σημαίνει ότι μπορούμε να εξερευνήσουμε και να αναζητήσουμε πιθανή βασική αιτία σφάλματος ή να έχουμε διερευνητικά δεδομένα για μελλοντικές περιπτώσεις χρήσης. Μπορούμε πραγματικά να χρησιμοποιήσουμε τη βάση δεδομένων ως διαδραστικό και έξυπνο εργαλείο παρά ως ανόητο χώρο αποθήκευσης. Κάνοντας αυτό στην Cassandra χωρίς ένα εκτεταμένο και δαπανηρό σύμπλεγμα υπολογιστών αναλυτικών στοιχείων όπως το Presto, το Spark κ.λπ. (και καθώς εκτελούμε σε γυμνούς μεταλλικούς διακομιστές, δεν έχουμε πρόσβαση σε εργαλεία ανάλυσης κατανεμημένων δεδομένων που δημιουργούνται εύκολα, όπως το EMR).
- Χρήσης του χώρου αποθήκευσης: Η υπόθεση Cassandra είναι ότι η αποθήκευση είναι πολύ φθηνή και ότι το σύμπλεγμα μπορεί εύκολα να επεκταθεί με νέα μηχανήματα. Αυτό σημαίνει ότι Όλοι οι περιορισμοί τόσο στους δείκτες όσο και στους συναθροίσεις πρέπει να πληρωθούν με αποθήκευση. Χωρίς παγκόσμιους αποτελεσματικούς δείκτες και υποστήριξη σύνδεσης σημαίνει ότι πρέπει να αποκανονικοποιήσουμε και να αποθηκεύσουμε ένα αντίγραφο ολόκληρου του πίνακα για κάθε άξονα που θέλουμε να υποβάλουμε ερώτημα. Η PostgreSQL μας εξοικονομεί terabyte αποθήκευσης.
- Συνοχή: Καθώς η Cassandra είναι μια κατανεμημένη, προσανατολισμένη στο AP βάση δεδομένων (η επικοινωνία γίνεται με κουτσομπολιό μεταξύ των κόμβων), η συνέπεια είναι τελική μόνο όσον αφορά τις εγγραφές. Μπορείτε να συντονίσετε την πολιτική συνέπειας κάθε δήλωσης τόσο για ανάγνωση όσο και για εγγραφή, αλλά ο στόχος αυτής της βάσης δεδομένων δεν ήταν ποτέ να έχει ισχυρή συνέπεια. Η PostgreSQL έχει μια ισχυρή ιστορία χρήσης για κρίσιμες αποστολές και είναι εξαιρετικά ανθεκτική. Το ότι είναι συγκεντρωμένο σημαίνει επίσης ότι δεν υπάρχει δίκτυο που εμπλέκεται στη διαδρομή εγγραφής.
- Συναλλαγές και MVCC:
- Συναλλαγές: Η Κασσάνδρα υποστηρίζει μόνο ελαφριές συναλλαγές σε ερωτήματα DML. Μπορεί να εφαρμοστεί κάποια παρτίδα (προκυμαία) αλλά υπάρχουν πολλές προειδοποιήσεις, δηλαδή ότι οι σειρές πρέπει να βρίσκονται στον ίδιο διακομιστή (= διαμέρισμα) για να μην έχουν τρομερή απόδοση.
- MVCC: Η Cassandra υποστηρίζει τη σήμανση χρόνου σειράς, αλλά το πλήρες MVCC δεν είναι εγγυημένο. Μια συμπίεση μπορεί να διαγράψει μπαγιάτικα δεδομένα και δεν υπάρχει τρόπος να πούμε στον C* ότι δεν πρέπει (όπως π.χ. μια συναλλαγή στο PG).
- Η PostgreSQL υποστηρίζει ένα ισχυρό μοντέλο MVCC που διασφαλίζει μια συνεπή διαδρομή ανάγνωσης για τους χρήστες μας.
- Εργαλεία: Η PostgreSQL έχει πολλά περισσότερα εργαλεία που χρησιμοποιούνται ευρέως για τον εύκολο χειρισμό της βάσης δεδομένων. Επιπλέον, ένα εργαλείο όπως διάδρομος διασφαλίζει ότι διατηρούμε μια ισχυρή έκδοση του σχήματος της βάσης δεδομένων. Το έχουμε ήδη ενσωματώσει με επιτυχία στη βάση κώδικα μας. Δεν υπάρχει αντίστοιχο με αυτό το επίπεδο ωριμότητας στην Κασσάνδρα.
- Οριζόντια επεκτασιμότητα: Αυτό είναι το βασικό σημείο πώλησης της Cassandra. Απλώς προσθέστε περισσότερα μηχανήματα καθώς τα δεδομένα σας επεκτείνονται. Δεν υπάρχει ισοδύναμο για το PostgreSQL, καθώς ο διαμοιρασμός και η κατάτμηση πρέπει να γίνονται χειροκίνητα.
Πώς σκοπεύουμε να κλιμακώσουμε
Όπως είδαμε, το μόνο μειονέκτημα στη χρήση μιας ρύθμισης Postgres είναι η κλιμάκωση τόσο στην ανάγνωση όσο και στην αποθήκευση. Τι μπορούμε να κάνουμε για να ξεπεράσουμε αυτόν τον περιορισμό;
Το πρώτο αποτελεσματικό εργαλείο που έχουμε είναι να διαχωρίσουμε κάθε πρωτόκολλο ή blockchain που υποστηρίζουμε στη δική του βάση δεδομένων, καθώς έτσι μπορεί να κλιμακωθεί κατάλληλα, δεδομένου του όγκου και της επισκεψιμότητας. Η τμηματοποίηση ανά επιχειρηματικό τομέα εξασφαλίζει ένα πρώτο επίπεδο κλιμάκωσης.
Προχωρώντας περαιτέρω αυτήν την έννοια, μπορούμε επίσης να τμηματοποιήσουμε τα ψυχρά, ιστορικά δεδομένα σε χρονική κατάτμηση. Οι πιο πρόσφατες εκδόσεις του Postgres έχουν βελτιώσει πολύ τη χρηστικότητα των χωρισμένων πινάκων, που θα μπορούσαν να επιτρέψουν την απρόσκοπτη μετακίνηση δεδομένων σε ένα σύμπλεγμα μηχανών. Για παράδειγμα, θα μπορούσαμε να χρησιμοποιήσουμε φθηνότερα μηχανήματα με λιγότερη υπολογιστική ισχύ για να φιλοξενήσουμε την πλειονότητα των ιστορικών δεδομένων, διατηρώντας παράλληλα δυναμικά μεγαθήρια με στοίβαξη RAM που εξυπηρετούν χρήστες για να φιλοξενούν συγκεντρωτικούς πίνακες και τις πιο πρόσφατες λειτουργίες του χρήστη.
Αυτή η προσέγγιση λειτουργεί πολύ καλά στην περίπτωση χρήσης μας, επειδή δεν υπάρχουν ξένα κλειδιά πολλαπλών διαμερισμάτων στο ιστορικό αποθήκευσης (όλα είναι τελικά συνδεδεμένα με το μπλοκ). Από την οπτική γωνία του κύριου διακομιστή, τα ιστορικά δεδομένα θα μπορούσαν να είναι προσβάσιμα ακόμη και με διαφάνεια χρησιμοποιώντας κατάτμηση και την επέκταση postgres_fdw.
Για να βοηθήσουμε στην εφαρμογή όλων αυτών, εξετάσαμε επίσης την επέκταση TimescaleDB. Αυτή η επέκταση προσθέτει πολλές λειτουργίες στα βασικά postgres και οι περισσότερες από αυτές ταιριάζουν απόλυτα στις περιπτώσεις χρήσης μας:
- Αυτόματη κατάτμηση πινάκων με βάση μια στήλη τύπου χρόνου (στην περίπτωσή μας, την προσαρμόζουμε λαμβάνοντας ως αναφορά το ύψος της αλυσίδας μπλοκ).
- Αυτόματη συμπίεση παλαιότερων τμημάτων, με επίγνωση τύπων δεδομένων και βάσει στήλης. Αυτό εξασφαλίζει μια σχεδόν τέλεια αναλογία συμπίεσης χρησιμοποιώντας αλγόριθμους τελευταίας τεχνολογίας σε δεδομένα που είναι πολύ παρόμοια.
- Αποτελεσματική συνάθροιση βάσει χρονικού κάδου για τον εύκολο υπολογισμό ιστορικών υπολοίπων και γραφημάτων δεδομένων αγοράς.
Είμαστε μόλις στην αρχή του πειραματισμού σχετικά με την αποθήκευση και αυτό ξεκλειδώνει πολλές περιπτώσεις χρήσης. Απόδειξη των εννοιών που χρησιμοποιούν μικρή ποσότητα δεδομένων (~10 μπλοκ στο κεντρικό δίκτυο ethereum, άρα περίπου 2 ημέρες δεδομένων) παρουσίασε μείωση χώρου στο δίσκο έως και 40%.
Όπως είδαμε, ο όγκος δεδομένων, υπό την προϋπόθεση ότι χρησιμοποιούμε τη σωστή στρατηγική, δεν αποτελεί πρόβλημα. Αλλά πώς να κλιμακωθεί με το μέγεθος της βάσης χρηστών μας;
Έχουμε ήδη ένα ωραίο πλεονέκτημα εδώ: ευρετηριάζουμε ολόκληρα τα δεδομένα blockchain. Έτσι, ο αποθηκευτικός χώρος που απαιτείται δεν θα αυξηθεί όπως ο αριθμός των χρηστών, αλλά όπως το συνολικό μέγεθος του blockchain. Οι βελτιστοποιήσεις αποθήκευσης και ανάγνωσης είναι εντελώς ορθογώνιες ως προς την ανάλυσή τους.
Αυτή η ρύθμιση, σε συνδυασμό με την πολύ χαμηλή ανάγκη εγγραφής σε αναλογία με τον όγκο ανάγνωσης που πρέπει να σερβιριστεί, είναι η ονειρεμένη ρύθμιση για ένα μοτίβο αντιγράφου αρχηγού-ακολούθου ταξινόμησης. Προκειμένου να βελτιώσουμε περαιτέρω την απόδοση και τη διεκπεραίωση, μπορούμε επίσης να τοποθετήσουμε τα αντίγραφα ανάγνωσης postgres στα ίδια μηχανήματα με τους διακομιστές API και να εκμεταλλευτούμε τις υποδοχές τομέα UNIX για να παρακάμψουμε τις διαδρομές μετ' επιστροφής στο δίκτυο.
Ακολουθεί ένα παράδειγμα στρατηγικής αναπαραγωγής δεδομένων που θα μπορούσαμε να χρησιμοποιήσουμε για να κλιμακώσουμε τις αναγνώσεις μας. Τα ανοιχτό γκρι πλαίσια αντιπροσωπεύουν μεμονωμένους διακομιστές. Μπορούμε να δούμε εδώ ότι οι ομάδες API τοποθετούνται απευθείας με αντίγραφα των πιο δημοφιλών δεδομένων για να διασφαλιστεί ο ελάχιστος χρόνος μεταφοράς μεταξύ αποθήκευσης και χρηστών. Οι περιπτώσεις αρχειοθέτησης που περιγράφηκαν προηγουμένως δεν αναπαρίστανται για να μην περιπλέκεται πολύ το σχήμα.
Τελικές παρατηρήσεις
Ως μακροχρόνιος χρήστης της Cassandra, θέλω να τονίσω ότι είναι μια εξαιρετική βάση δεδομένων στο σχεδιασμό της, που ταιριάζει σε μια μεγάλη ποικιλία εφαρμογών. Δυστυχώς, η επιλογή που έγινε στο Ledger να το χρησιμοποιήσει έγινε σε μια περίπτωση χρήσης δεδομένων που δεν υλοποιήθηκε ποτέ.
Η παραγωγικότητα της ομάδας μας επηρεάστηκε και ανυπομονούμε για τις προκλήσεις που πρέπει να λύσουμε, επιλέξαμε να τσιμπήσουμε τη σφαίρα και να μην υποκύψουμε στην πλάνη του βυθισμένου κόστους.
Σε πολλές περιπτώσεις, τα δεδομένα σας δεν είναι μεγάλα δεδομένα. Η διαχείριση της διανομής δεδομένων δεν είναι δύσκολη υπόθεση στις περισσότερες περιπτώσεις, και οι συμβιβασμούς μιας ολοκληρωμένης κατανεμημένης βάσης δεδομένων πρέπει πραγματικά να εξεταστούν προσεκτικά. Το βασικό στοιχείο είναι η εμπειρία προγραμματιστή, καθώς ελευθερώνει πολύτιμο χρόνο για να δημιουργήσετε οτιδήποτε άλλο. Αυτή είναι η πραγματική περίπτωση χρήσης στην οποία πρέπει να επενδύσουμε σε μεγάλο βαθμό.
- SEO Powered Content & PR Distribution. Ενισχύστε σήμερα.
- PlatoAiStream. Web3 Data Intelligence. Ενισχύθηκε η γνώση. Πρόσβαση εδώ.
- Minting the Future με την Adryenn Ashley. Πρόσβαση εδώ.
- Αγορά και πώληση μετοχών σε εταιρείες PRE-IPO με το PREIPO®. Πρόσβαση εδώ.
- πηγή: https://www.ledger.com/blog/serving-web3-at-web2-scale
- :έχει
- :είναι
- :δεν
- $UP
- 10
- 10K
- 20
- a
- ικανότητα
- Ικανός
- πρόσβαση
- πρόσβαση
- Λογαριασμός
- απέναντι
- πραγματικά
- προσαρμόσει
- προσθέτω
- Προσθέτει
- εμμένω
- Πλεονέκτημα
- συσσωμάτωση
- αλγόριθμοι
- Όλα
- επιτρέπουν
- επιτρέπει
- ήδη
- Επίσης
- Αν και
- ποσό
- an
- ανάλυση
- analytics
- και
- απάντηση
- κάθε
- οτιδήποτε
- api
- εφαρμογές
- εφαρμοσμένος
- πλησιάζω
- κατάλληλα
- Αρχείο
- ΕΙΝΑΙ
- γύρω
- Τέχνη
- άρθρο
- AS
- άποψη
- πτυχές
- υπόθεση
- At
- διαθέσιμος
- επίγνωση
- μακριά
- ΑΞΟΝΕΣ
- Άξονας
- Backend
- Υπόλοιπο
- ισορροπίες
- βάση
- βασίζονται
- Baseline
- BE
- επειδή
- ήταν
- πριν
- Αρχή
- Μεγαθήρια
- είναι
- οφέλη
- μεταξύ
- Μεγάλος
- Big Data
- Κομμάτι
- Bitcoin
- Αποκλεισμός
- blockchain
- δεδομένα blockchain
- μπλοκ αλυσίδες
- Μπλοκ
- και οι δύο
- Κουτί
- κουτιά
- Φέρνει
- Έντομο
- χτίζω
- επιχείρηση
- αλλά
- by
- κλήση
- κλήσεις
- CAN
- υποψήφιος
- καπάκι
- προσεκτικά
- περίπτωση
- περιπτώσεις
- Αιτία
- προκαλούνται
- κεντρική
- αλυσίδα
- πρόκληση
- προκλήσεις
- πρόκληση
- αλλαγή
- αλλαγή
- φθηνά
- φτηνότερος
- φθηνότερα μηχανήματα
- επιλογή
- Επιλέξτε
- επέλεξε
- επιλέγονται
- καθαρός
- συστάδα
- κωδικός
- βάση κώδικα
- κρύο
- Στήλη
- σε συνδυασμό
- εμπόρευμα
- Επικοινωνία
- εταίρα
- πολυπλοκότητα
- συστατικό
- Υπολογίστε
- έννοια
- έννοιες
- εξέταση
- θεωρούνται
- συνεπής
- Δροσερός
- πυρήνας
- Κόστος
- θα μπορούσε να
- δημιουργήθηκε
- κρίσιμης
- Ρεύμα
- ημερομηνία
- ανάλυση δεδομένων
- κοινή χρήση δεδομένων
- αποθήκευση δεδομένων
- βάση δεδομένων
- Ημ.
- απόφαση
- περιγράφεται
- Υπηρεσίες
- Εργολάβος
- ανάπτυξη
- δύσκολος
- κατευθείαν
- βρωμιά
- διανέμονται
- διανομή
- διαιρούμενο
- do
- κάνει
- πράξη
- τομέα
- Μην
- μειονέκτημα
- όνειρο
- οδηγός
- δυο
- e
- κάθε
- εύκολα
- εύκολος
- άκρη
- Αποτελεσματικός
- αποτελεσματικός
- αλλιώς
- ενσωματωμένο
- τονίζω
- ενεργοποιήσετε
- ενθάρρυνση
- ενίσχυση
- εξασφαλίζω
- εξασφαλίζει
- εξασφαλίζοντας
- Ισοδύναμος
- κ.λπ.
- ethereum
- ETHEREUM MAINNET
- Even
- ενδεχόμενος
- ΠΑΝΤΑ
- Κάθε
- πάντα
- παράδειγμα
- υφιστάμενα
- Εξωτικός
- επεκτείνεται
- εμπειρία
- εξειδίκευση
- διερευνήσει
- εξερευνητής
- επεκτείνουν
- επέκταση
- εκτενής
- γεγονός
- Πτώση
- Χαρακτηριστικό
- Χαρακτηριστικά
- λίγοι
- Εύρεση
- Όνομα
- ταιριάζουν
- Για
- ξένος
- Προς τα εμπρός
- φιλικότητα
- από
- πλήρη
- πλήρης
- πλήρως
- λειτουργίες
- περαιτέρω
- μελλοντικός
- να πάρει
- δεδομένου
- Παγκόσμια
- γκολ
- μετάβαση
- γραφικές παραστάσεις
- γκρί
- εξαιρετική
- Group
- Grow
- Μεγαλώνοντας
- εγγυημένη
- κατευθυντήριων γραμμών
- είχε
- Σκληρά
- υλικού
- Έχω
- που έχει
- κεφάλι
- βαριά
- ύψος
- βοήθεια
- εδώ
- Ψηλά
- υψηλά
- ιστορικών
- οικοδεσπότης
- ΚΑΥΤΌ
- πιο hot
- Πως
- Πώς να
- Ωστόσο
- HTML
- HTTPS
- i
- ιδανικό
- if
- αμετάβλητος
- επηρεάζονται
- εκτελεστικών
- βελτιωθεί
- in
- όλο και περισσότερο
- ευρετήριο
- Δείκτες
- παράδειγμα
- ενσωματωθεί
- διαδραστικό
- σε
- Επενδύστε
- συμμετέχουν
- ζήτημα
- θέματα
- IT
- ΤΟΥ
- ενταχθούν
- εντάχθηκαν
- jpg
- μόλις
- τήρηση
- Κλειδί
- πλήκτρα
- Είδος
- Έλλειψη
- Γλώσσα
- large
- Αφάνεια
- αργότερο
- στρώμα
- Led
- Καθολικό
- νόμιμος
- μείον
- Επίπεδο
- Μόχλευση
- φως
- πυγμάχος ελαφρού βάρους
- Μου αρέσει
- περιορισμός
- περιορισμούς
- Περιωρισμένος
- Λίστα
- λίγο
- τοπικά
- Μακριά
- κοίταξε
- κοιτάζοντας
- Παρτίδα
- Χαμηλός
- μηχανήματα
- που
- Κυρίως
- κεντρικό δίκτυο
- διατηρήσουν
- Η πλειοψηφία
- Κατασκευή
- διαχείριση
- διαχείριση
- χειροκίνητα
- πολοί
- αγορά
- Τα δεδομένα της αγοράς
- ωριμότητα
- max-width
- Ενδέχεται..
- μέσα
- μέταλλο
- μεταναστεύσουν
- ελάχιστος
- αποστολές
- μοντέλο
- μοντελοποίηση
- περισσότερο
- Εξάλλου
- πλέον
- μετακινήσετε
- πολύ
- πρέπει
- και συγκεκριμένα
- σχεδόν
- Ανάγκη
- που απαιτούνται
- ανάγκες
- κανενα απο τα δυο
- δίκτυο
- ποτέ
- Νέα
- όμορφη
- Όχι.
- κόμβων
- τίποτα
- αριθμός
- πολυάριθμες
- στόχοι
- of
- on
- ONE
- αποκλειστικά
- λειτουργούν
- λειτουργίες
- Ευκαιρίες
- or
- τάξη
- δικός μας
- εμάς
- επί
- Ξεπεράστε
- δική
- καταβλήθηκε
- μέρος
- μέρη
- μονοπάτι
- πρότυπο
- Πληρωμή
- ομότιμων
- ομότιμη
- τέλειος
- επίδοση
- προοπτική
- Μέρος
- σχέδιο
- Πλάτων
- Πληροφορία δεδομένων Plato
- Πλάτωνα δεδομένα
- λοβό
- Σημείο
- πολιτική
- Πολύγωνο
- δυνατός
- postgresql
- δυναμικού
- δύναμη
- ισχυρός
- πρακτική
- Πρόβλημα
- Διεργασίες
- παραγωγικότητα
- απόδειξη
- ποσοστό
- προτείνει
- πρωτόκολλο
- αποδεδειγμένη
- παρέχουν
- παρέχεται
- βάζω
- ερωτήματα
- RAM
- σειρά
- Τιμή
- μάλλον
- αναλογία
- Ακατέργαστος
- Διάβασε
- πραγματικός
- πραγματικά
- λογικός
- μείωση
- σχετικά με
- σχετίζεται με
- αξιόπιστος
- αναδιοργάνωση
- απάντηση
- αναπαραγωγή
- εκπροσωπώ
- εκπροσωπούνται
- ζητήσει
- ελαστικός
- Ανάλυση
- επιλυθεί
- με αποτέλεσμα
- επαναχρησιμοποίηση
- δεξιά
- εύρωστος
- ρίζα
- γύρος
- ΣΕΙΡΑ
- τρέξιμο
- τρέξιμο
- ίδιο
- Scala
- επεκτάσιμη
- Κλίμακα
- απολέπιση
- άψογα
- Αναζήτηση
- ασφάλεια
- δείτε
- δει
- τμήμα
- κατάτμηση
- Τις Πωλήσεις
- σημείο πώλησης
- υπηρεσία
- Υπηρεσίες
- εξυπηρετούν
- σειρά
- setup
- διάφοροι
- κοπής
- μοιράζονται
- Κοντά
- δείχνουν
- πλευρά
- παρόμοιες
- αφού
- ενιαίας
- Μέγεθος
- δεξιότητες
- small
- μικρότερος
- έξυπνος
- So
- λύση
- SOLVE
- Λύει
- μερικοί
- Χώρος
- Σπινθήρας
- Ο Spawn
- SQL
- πρότυπο
- Κατάσταση
- Δήλωση
- χώρος στο δίσκο
- κατάστημα
- Ιστορία
- Στρατηγική
- Στρατηγική
- ισχυρός
- δυνατά
- Επιτυχώς
- υποστήριξη
- Υποστηρίζει
- τραπέζι
- Πάρτε
- λήψη
- Έργο
- Τεχνικός
- πει
- όροι
- από
- ότι
- Η
- Το μπλοκ
- Το κράτος
- τους
- τότε
- Εκεί.
- Αυτοί
- αυτοί
- Τρίτος
- τρίτους
- αυτό
- διακίνηση
- ώρα
- προς την
- πολύ
- εργαλείο
- εργαλεία
- Σύνολο
- ΣΥΝΟΛΙΚΑ
- ΚΙΝΗΣΗ στους ΔΡΟΜΟΥΣ
- συναλλαγή
- Συναλλαγές
- μεταφορά
- με διαφάνεια
- τύπος
- τύποι
- τελικά
- υπό
- υποκείμενες
- Δυστυχώς
- unix
- ξεκλειδώνει
- ΧΩΡΙΣ λογο
- us
- χρηστικότητα
- Χρήση
- χρήση
- περίπτωση χρήσης
- μεταχειρισμένος
- Χρήστες
- Χρήστες
- χρησιμοποιώντας
- συνήθως
- Πολύτιμος
- ποικιλία
- κατακόρυφος
- πολύ
- τόμος
- θέλω
- ήταν
- Τρόπος..
- we
- Web2
- Web3
- ΛΟΙΠΌΝ
- Τι
- Τι είναι
- πότε
- Ποιό
- ενώ
- Ενώ
- ολόκληρο
- WHY
- ευρύς
- ευρέως
- θα
- με
- χωρίς
- λειτουργεί
- γράφω
- γραπτή
- εσείς
- Νεότερος
- Σας
- zephyrnet