DynamoDB Cheatsheet - Όλα όσα πρέπει να γνωρίζετε για το Amazon Dynamo DB για την πιστοποίηση συνεργατών προγραμματιστών AWS 2020

Η εμφάνιση υπηρεσιών cloud έχει αλλάξει τον τρόπο δημιουργίας εφαρμογών ιστού. Αυτό με τη σειρά του άλλαξε τις ευθύνες ενός Προγραμματιστή Ιστού.

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

Οι υπηρεσίες cloud μας επιτρέπουν να μειώσουμε την πολυπλοκότητα των εφαρμογών ιστού και των διακομιστών ιστού, ωθώντας τις ευθύνες σε αυτές τις εξαιρετικά διαθέσιμες, επεκτάσιμες και ανθεκτικές υπηρεσίες cloud.

Ένας προγραμματιστής ιστού που γνωρίζει πώς να αναπτύξει και να ενσωματώσει υπηρεσίες cloud με μια εφαρμογή ιστού είναι αυτό που ονομάζουμε Cloud Engineer.

Αν θέλετε να παρακολουθήσετε γρήγορα την καριέρα σας ως Web Developer το 2020, τότε η πιστοποίηση AWS Developer Associate μπορεί να σας βοηθήσει να επιτύχετε αυτόν τον τελικό στόχο.

Η πιο σημαντική υπηρεσία AWS που πρέπει να μελετήσετε για να περάσετε ότι η εξέταση AWS Developer Associate είναι το DynamoDB. Γι 'αυτό και κυκλοφόρησα αυτό που ονομάζω The Ultimate DynamoDB Cheatsheet δωρεάν. Μπορείτε να το εκτυπώσετε την ημέρα της εξέτασής σας για να αυξήσετε τις πιθανότητες επιτυχίας.

Ήταν ο Nader ο AWS Developer Advocate για AWS Amplify που πρότεινε να κυκλοφορήσω ολόκληρο το cheatsheet μου δωρεάν. Δεν θα έχετε αυτόν τον πόρο εάν δεν ήταν γι 'αυτόν.

Ήταν ο Kirk ο Ανώτερος Τεχνολόγος AWS που ειδικεύτηκε στο DynamoDB που έθεσε εθελοντικά το χρόνο του για να εξασφαλίσει την ακρίβεια αυτού του cheatsheet. Αυτό μετέτρεψε από 5 σελίδες σε 8 σελίδες! ????????

Εάν διαθέτετε Twitter, παρακαλώ με ευχαριστήστε να τους ευχαριστήσω μέσω του tweet στο @ dabit3 και @NoSQLKnowHow με το hashtag #AWSCertified.

Ας προχωρήσουμε λοιπόν στο cheatsheet:

Τα βασικά του DynamoDB

Το DynamoDB είναι μια πλήρως διαχειριζόμενη βάση δεδομένων / τιμής και κλειδιού NoSQL.

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

Το DynamoDB κλιμακώνεται προς τα πάνω και προς τα κάτω για να υποστηρίζει ό, τι χωρητικότητα ανάγνωσης και εγγραφής καθορίζετε ανά δευτερόλεπτο σε λειτουργία χωρητικότητας. Ή μπορείτε να το ρυθμίσετε σε λειτουργία κατ 'απαίτηση και δεν υπάρχει προγραμματισμός χωρητικότητας.

  • Το DynamoDB αποθηκεύει 3 αντίγραφα δεδομένων σε μονάδες SSD σε 3 AZ σε μια περιοχή.
  • Οι πιο συνηθισμένοι τύποι δεδομένων του DynamoDB είναι B (Binary), N (Number) και S (String)
  • Οι πίνακες αποτελούνται από στοιχεία (σειρές) και στοιχεία αποτελούνται από χαρακτηριστικά (στήλες)

Διαβάζει και γράφει συνέπεια

Το DynamoDB μπορεί να ρυθμιστεί ώστε να υποστηρίζει Τελικά συνεπείς αναγνώσεις (προεπιλογή) και Ισχυρά συνεπείς αναγνώσεις ανά κλήση.

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

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

Χωρίσματα

Ένα διαμέρισμα είναι όταν το DynamoDB τεμαχίζει τον πίνακα σας σε μικρότερα κομμάτια δεδομένων. Αυτό επιταχύνει την ανάγνωση για πολύ μεγάλους πίνακες.

Το DynamoDB δημιουργεί αυτόματα διαμερίσματα για:

  • Κάθε 10 GB δεδομένων ή
  • Όταν υπερβαίνετε τα όρια RCU (3000) ή WCU (1000) για ένα μόνο διαμέρισμα
  • Όταν το DynamoDB βλέπει ένα μοτίβο ενός καυτού διαμερίσματος, θα χωρίσει αυτό το διαμέρισμα σε μια προσπάθεια να διορθώσει το πρόβλημα.

Το DynamoDB θα προσπαθήσει να χωρίσει ομοιόμορφα τα RCU και WCUs σε διαμερίσματα

Κύριος σχεδιασμός κλειδιού

Τα κύρια κλειδιά καθορίζουν πού και πώς θα αποθηκευτούν τα δεδομένα σας σε διαμερίσματα

Το σχήμα κλειδιού μπορεί να αποτελείται από δύο κλειδιά:

  • Το Partition Key (PK) είναι επίσης γνωστό ως HASH
  • οΤο Sort Key (SK) είναι επίσης γνωστό ως RANGE
Όταν χρησιμοποιείτε το AWS DynamoDB API π.χ. CLI, SDK αναφέρονται στο PK και το SK με τα εναλλακτικά ονόματά τους για λόγους παλαιού τύπου.

Το πρωτεύον κλειδί διατίθεται σε δύο τύπους:

  • Απλό πρωτεύον κλειδί (χρησιμοποιώντας μόνο ένα κλειδί διαμέρισης)
  • Σύνθετο πρωτεύον κλειδί (Χρησιμοποιώντας τόσο ένα διαμέρισμα όσο και ένα κλειδί ταξινόμησης)

Η βασική μοναδικότητα έχει ως εξής:

  • Κατά τη δημιουργία ενός απλού πρωτεύοντος κλειδιού, η τιμή PK μπορεί να είναι μοναδική
  • Κατά τη δημιουργία ενός σύνθετου πρωτεύοντος κλειδιού το συνδυασμένο PK και SK πρέπει να είναι μοναδικά

Κατά τη χρήση ενός κλειδιού Ταξινόμησης, οι εγγραφές στο διαμέρισμα ομαδοποιούνται λογικά σε Αύξουσα σειρά.

Δευτερεύοντες δείκτες

Το DynamoDB έχει δύο τύπους ευρετηρίων:

  • LSI - Τοπικός δευτερεύων δείκτης
  • GSI - Παγκόσμιος Δευτερεύων Δείκτης

LSI - Τοπικός δευτερεύων δείκτης

  • Υποστηρίζει έντονα ή ενδεχομένως αναγνώσεις συνοχής
  • Μπορεί να δημιουργηθεί μόνο με τον αρχικό πίνακα (δεν μπορεί να τροποποιηθεί ή και δεν μπορεί να διαγραφεί εκτός και αν διαγραφεί ο πίνακας)
  • Μόνο σύνθετο
  • 10 GB ή λιγότερο ανά διαμέρισμα
  • Μοιραστείτε μονάδες χωρητικότητας με βασικό πίνακα
  • Πρέπει να μοιραστείτε το κλειδί διαμέρισης (PK) με τον πίνακα βάσης.

GSI - Παγκόσμιος Δευτερεύων Δείκτης

  • Διαβάζει μόνο η τελική συνοχή (δεν μπορεί να παρέχει ισχυρή συνέπεια)
  • Μπορεί να δημιουργήσει, να τροποποιήσει ή να διαγράψει ανά πάσα στιγμή
  • Απλό και σύνθετο
  • Μπορεί να έχει οποιεσδήποτε ιδιότητες ως Κύριο κλειδί (PK) ή δευτερεύον κλειδί (SK)
  • Χωρίς περιορισμό μεγέθους ανά διαμέρισμα
  • Έχει τις δικές του ρυθμίσεις χωρητικότητας (δεν κάνει κοινή χρήση με τον βασικό πίνακα)

Σάρωση

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

  • Σαρώνει όλα τα στοιχεία σε έναν πίνακα και, στη συνέχεια, επιστρέφει ένα ή περισσότερα στοιχεία μέσω φίλτρων
  • Από προεπιλογή επιστρέφει όλα τα χαρακτηριστικά για κάθε στοιχείο (χρησιμοποιήστε το ProjectExpression για περιορισμό)
  • Οι σαρώσεις είναι διαδοχικές και μπορείτε να επιταχύνετε τη σάρωση μέσω παράλληλων σαρώσεων χρησιμοποιώντας τμήματα και συνολικά τμήματα
  • Οι σαρώσεις μπορεί να είναι αργές, ειδικά με πολύ μεγάλα τραπέζια και μπορούν εύκολα να καταναλώσουν την παρεχόμενη απόδοση.
  • Οι σαρώσεις είναι ένας από τους πιο ακριβούς τρόπους πρόσβασης σε δεδομένα στο DynamoDB.

Ερώτηση

  • Βρείτε αντικείμενα με βάση τις βασικές τιμές κλειδιών
  • Ο πίνακας πρέπει να έχει σύνθετο κλειδί για να μπορεί να υποβάλει ερώτημα
  • Από προεπιλογή, τα ερωτήματα είναι Τελικά συνεπή (χρησιμοποιήστε το ConsistentRead True για να αλλάξετε έντονα τη συνέπεια)
  • Από προεπιλογή επιστρέφει όλα τα χαρακτηριστικά για κάθε στοιχείο που βρέθηκε από ένα ερώτημα (χρησιμοποιήστε το ProjectExpression για περιορισμό)
  • Από προεπιλογή ταξινομείται αύξουσα (χρησιμοποιήστε το ScanIndexForward to False για να αντιστρέψετε τη σειρά σε φθίνουσα)

Λειτουργίες χωρητικότητας

Το DynamoDB έχει δύο λειτουργίες χωρητικότητας, Provisioned και On-Demand . Μπορείτε να κάνετε εναλλαγή μεταξύ αυτών των λειτουργιών μία φορά κάθε 24 ώρες .

Προβλέπεται

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

  • Το Provisioned είναι κατάλληλο για προβλέψιμες ή σταθερές καταστάσεις φόρτου εργασίας
  • Οι μονάδες RCU είναι μονάδα ανάγνωσης
  • Τα WCUs είναι μονάδα χωρητικότητας εγγραφής

Θα πρέπει να ενεργοποιήσετε την Αυτόματη κλιμάκωση με λειτουργία Προβλεπόμενης χωρητικότητας. Σε αυτήν τη λειτουργία, ορίζετε ένα πάτωμα και μια οροφή για τη χωρητικότητα που θέλετε να υποστηρίξει το τραπέζι. Το DynamoDB θα προσθέσει και θα αφαιρέσει αυτόματα τη χωρητικότητα μεταξύ αυτών των τιμών εκ μέρους σας και κλήσεις γκαζιού που υπερβαίνουν το ανώτατο όριο για πολύ καιρό.

Εάν υπερβείτε την προβλεπόμενη χωρητικότητά σας, θα λάβετε μια Εξαίρεση:   ProvisionedThroughputExceededException (περιορισμός)

Ο περιορισμός είναι όταν τα αιτήματα αποκλείονται λόγω συχνότητας ανάγνωσης ή εγγραφής υψηλότερη από τα καθορισμένα όρια. Π.χ. υπέρβαση του συνόλου που παρέχεται, χωρισμός χωρισμάτων, αναντιστοιχία χωρητικότητας πίνακα / ευρετηρίου.

Κατα παραγγελια

Η χωρητικότητα κατ 'απαίτηση είναι πληρωμή ανά αίτημα. Έτσι πληρώνετε μόνο για όσα χρησιμοποιείτε.

  • On-Demand είναι κατάλληλο για νέους ή απρόβλεπτους φόρτους εργασίας
  • Η απόδοση περιορίζεται μόνο από τα προεπιλεγμένα ανώτατα όρια για έναν πίνακα (40K RCU και 40K WCUs)
  • Το γκάζι μπορεί να συμβεί εάν υπερβείτε το διπλάσιο της προηγούμενης μέγιστης χωρητικότητας (υψηλή στάθμη νερού) εντός 30 λεπτών. Για παράδειγμα, εάν προηγουμένως έχετε φτάσει στο μέγιστο των 30.000 ops / sec, δεν θα μπορούσατε να φτάσετε αμέσως στα 90.000 ops / sec, αλλά θα μπορούσατε να φτάσετε τα 60.000 ops / sec
  • Επειδή δεν υπάρχει σκληρό όριο, το On-Demand θα μπορούσε να γίνει πολύ ακριβό βάσει αναδυόμενων σεναρίων

Υπολογισμός Αναγνώσεων και Γραφών

Υπολογισμός αναγνώσεων (RCU)

Μια μονάδα χωρητικότητας ανάγνωσης αντιπροσωπεύει:

  • μια σταθερά ανάγνωση ανά δευτερόλεπτο,
  • ή δύο τελικά σταθερές αναγνώσεις ανά δευτερόλεπτο,
  • για αντικείμενο έως 4 KB σε μέγεθος.

Πώς να υπολογίσετε RCU για ισχυρά

  1. Στρογγυλοποιήστε τα δεδομένα στο πλησιέστερο 4.
  2. Διαίρεση δεδομένων με 4
  3. Ώρες ανά αριθμό αναγνώσεων

Ακολουθεί ένα παράδειγμα:

  • 50 αναγνώσεις στα 40 KB ανά τεμάχιο. (40/4) x 50 = 500 RCU
  • 10 διαβάζει στα 6KB ανά τεμάχιο. (8/4) x 10 = 20 RCU
  • 33 διαβάζει στα 17KB ανά τεμάχιο. (20/4) x 33 = 132 RCU

Πώς να υπολογίσετε RCU για ενδεχόμενα

  1. Στρογγυλοποιήστε τα δεδομένα στο πλησιέστερο 4.
  2. Διαίρεση δεδομένων με 4
  3. Ώρες ανά αριθμό αναγνώσεων
  4. Διαιρέστε τον τελικό αριθμό με το 2
  5. Στρογγυλοποιήστε στον πλησιέστερο ακέραιο αριθμό

Ακολουθεί ένα παράδειγμα:

  • 50 αναγνώσεις στα 40 KB ανά τεμάχιο. (40/4) x 50/2 = 250 RCU
  • 11 διαβάζει στα 9KB ανά τεμάχιο. (12/4) x 11/2 = 17 RCU
  • 14 διαβάζει στα 24KB ανά τεμάχιο. (24/4) x 14/2 = 35 RCU

Υπολογισμός εγγράφων (Writes)

Μια μονάδα χωρητικότητας εγγραφής αντιπροσωπεύει:

  • μία εγγραφή ανά δευτερόλεπτο,
  • για ένα στοιχείο έως 1 KB

Πώς να υπολογίσετε το Writes

  1. Στρογγυλοποιήστε τα δεδομένα στο πλησιέστερο 1.
  2. Ώρες ανά αριθμό συγγραφών

Ακολουθεί ένα παράδειγμα:

  • 50 γράφει στα 40 KB ανά τεμάχιο. 40 x 50 = 2000 WCU
  • 11 γράφει στα 1KB ανά τεμάχιο. 1 x 11 = 11 WCU
  • 18 γράφει με 500 BYTES ανά στοιχείο. 1 x 18 = 18 WCU

Επιταχυντής DynamoDB

Το DynamoDB Accelerator (DAX) είναι μια πλήρως διαχειριζόμενη μνήμη μέσω μνήμης cache για το DynamoDB που εκτελείται σε ένα σύμπλεγμα

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

Το DAX είναι ιδανικό για:

  • γρηγορότεροι χρόνοι απόκρισης
  • εφαρμογές που διαβάζουν συχνότερα έναν μικρό αριθμό αντικειμένων
  • εφαρμογές που είναι εντατικές για ανάγνωση

Το DAX δεν είναι ιδανικό για:

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

Συναλλαγές DynamoDB

Το DynamoDB υποστηρίζει συναλλαγές μέσω των κλήσεων API TransactWriteItems και TransactGetItems .

Οι συναλλαγές σάς επιτρέπουν να υποβάλλετε ερωτήματα σε πολλούς πίνακες ταυτόχρονα και είναι μια προσέγγιση «όλα ή τίποτα» (όλες οι κλήσεις API πρέπει να πετύχουν)

Παγκόσμιοι πίνακες

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

Ροές

Το DynamoDB Streams σας επιτρέπει να ρυθμίσετε μια λειτουργία Lambda που ενεργοποιείται κάθε φορά που τα δεδομένα τροποποιούνται σε έναν πίνακα για να αντιδράσουν στις αλλαγές. Οι ροές δεν καταναλώνουν RCU.

API DynamoDB

Οι πιο αξιοσημείωτες εντολές του DynamoDB API μέσω CLI:   aws dynamodb

Το aws dynamodb get-item επιστρέφει ένα σύνολο χαρακτηριστικών για το στοιχείο με το δεδομένο πρωτεύον κλειδί. Εάν δεν υπάρχει αντίστοιχο στοιχείο, τότε δεν επιστρέφει δεδομένα και δεν θα υπάρχει στοιχείο στοιχείου στην απόκριση.

aws dynamodb put-item Δημιουργεί ένα νέο στοιχείο ή αντικαθιστά ένα παλιό στοιχείο με ένα νέο στοιχείο. Εάν ένα στοιχείο που έχει το ίδιο κύριο κλειδί με το νέο στοιχείο υπάρχει ήδη στον καθορισμένο πίνακα, το νέο στοιχείο αντικαθιστά πλήρως το υπάρχον στοιχείο.

aws dynamodb update-item Επεξεργάζει τα χαρακτηριστικά ενός υπάρχοντος στοιχείου ή προσθέτει ένα νέο στοιχείο στον πίνακα, εάν δεν υπάρχει ήδη.

Το aws dynamodb batch-get-item επιστρέφει τα χαρακτηριστικά ενός ή περισσότερων στοιχείων από έναν ή περισσότερους πίνακες. Προσδιορίζετε τα ζητούμενα στοιχεία με πρωτεύον κλειδί. Μια μεμονωμένη λειτουργία μπορεί να ανακτήσει έως και 16 MB δεδομένων , τα οποία μπορούν να περιέχουν έως και 100 στοιχεία .

Το aws dynamodb batch-write-item βάζει ή διαγράφει πολλά στοιχεία σε έναν ή περισσότερους πίνακες. Μπορεί να γράψει έως και 16 MB δεδομένων , τα οποία μπορούν να περιλαμβάνουν έως και 25 αιτήματα τοποθέτησης ή διαγραφής . Τα μεμονωμένα στοιχεία που πρέπει να γραφτούν μπορούν να έχουν μέγεθος έως 400 KB .

Το aws dynamodb create-table προσθέτει έναν νέο πίνακα στον λογαριασμό σας. Τα ονόματα των πινάκων πρέπει να είναι μοναδικά σε κάθε περιοχή.

aws dynamodb update-table Τροποποιεί τις παρεχόμενες ρυθμίσεις διεκπεραίωσης, παγκόσμια δευτερεύοντα ευρετήρια ή ρυθμίσεις DynamoDB Streams για έναν συγκεκριμένο πίνακα.

Η λειτουργία διαγραφής πίνακα aws dynamodb διαγράφει έναν πίνακα και όλα τα στοιχεία του.

Το aws dynamodb transact-get-items είναι μια σύγχρονη λειτουργία που ανακτά ατομικά πολλά στοιχεία από έναν ή περισσότερους πίνακες (αλλά όχι από ευρετήρια) σε έναν μόνο λογαριασμό και περιοχή. Η κλήση μπορεί να περιέχει έως και 25 αντικείμενα . Το συνολικό μέγεθος των στοιχείων στη συναλλαγή δεν μπορεί να υπερβαίνει τα 4 MB .

aws dynamodb transact-write-items μια συγχρονισμένη λειτουργία εγγραφής που ομαδοποιεί έως και 25 αιτήματα δράσης . Αυτές οι ενέργειες μπορούν να στοχεύουν στοιχεία σε διαφορετικούς πίνακες, αλλά όχι σε διαφορετικούς λογαριασμούς AWS ή Περιοχές και καμία ενέργεια δεν μπορεί να στοχεύσει το ίδιο στοιχείο.

Το ερώτημα aws dynamodb βρίσκει αντικείμενα με βάση τις βασικές τιμές κλειδιών. Μπορείτε να ζητήσετε πίνακα ή δευτερεύον ευρετήριο που έχει σύνθετο πρωτεύον κλειδί.

Η σάρωση aws dynamodb επιστρέφει ένα ή περισσότερα στοιχεία και χαρακτηριστικά αντικειμένων με πρόσβαση σε κάθε στοιχείο ενός πίνακα ή ενός δευτερεύοντος ευρετηρίου.

; #rocketsToMars

Θέλω να σας βοηθήσω να μπείτε στη βιομηχανία ιστού και cloud Αυτός είναι ο λόγος για τον οποίο κυκλοφορώ το δωρεάν μάθημα AWS Developer Associate Certification 2020 στο κανάλι YouTube του FreeCodeCamp με 10+ ώρες επιπλέον περιεχομένου που δεν έχω κυκλοφορήσει ποτέ προηγουμένως.

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

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