Χρήση του AWS DynamoDB σε μια εφαρμογή Node.js

Πίνακας περιεχομένων
Βασικά Takeaways
- Η DynamoDB είναι μια ισχυρή βάση δεδομένων NoSQL που προσφέρεται από την AWS που μπορεί να χειριστεί μεγάλες ποσότητες διαφορετικών δεδομένων χωρίς να θέτει σε κίνδυνο την απόδοση, την ανθεκτικότητα ή την αξιοπιστία.
- Για να ξεκινήσετε με το DynamoDB στο Node.js, πρέπει να εγκαταστήσετε το πακέτο client-dynamodb από το aws-sdk και να διαμορφώσετε τα διαπιστευτήριά σας.
- Το DynamoDB σάς επιτρέπει να δημιουργείτε εύκολα πίνακες, να γράφετε και να διαβάζετε δεδομένα, να ενημερώνετε εγγραφές και να διαγράφετε εγγραφές χρησιμοποιώντας τις μεθόδους και τις παραμέτρους του πελάτη. Προσφέρει ευελιξία και επεκτασιμότητα για αποτελεσματική ανάπτυξη εφαρμογών.
Ένα μεγάλο μέρος της σύγχρονης ανάπτυξης εφαρμογών χρειάζεται έναν συνδυασμό ισχυρών γλωσσών προγραμματισμού και ισχυρών βάσεων δεδομένων.
Μία από τις λύσεις που προσφέρει το Amazon Web Services (AWS) είναι το DynamoDB, ένα εργαλείο που μπορεί να φέρει επανάσταση στη διαχείριση των δεδομένων σας. Χρησιμοποιώντας το, μπορείτε να παρέχετε γρήγορα μια βάση δεδομένων για τη διαχείριση μεγάλων ποσοτήτων διαφορετικών δεδομένων.
Τι είναι το DynamoDB;
Το AWS προσφέρει υπηρεσίες για διαφορετικές ανάγκες βάσεων δεδομένων, όπως το Amazon RDS για σχεσιακές βάσεις δεδομένων και το DocumentDB για βάσεις δεδομένων εγγράφων όπως το MongoDB. Το DynamoDB είναι μια βάση δεδομένων NoSQL για την αποθήκευση δεδομένων σε μορφή κλειδιού-τιμής.
Το DynamoDB μπορεί να χειριστεί μεγάλες ποσότητες δεδομένων σε κατανεμημένη υποδομή χωρίς να θέτει σε κίνδυνο την απόδοση, την ανθεκτικότητα ή την αξιοπιστία. Προσφέρει ένα ευέλικτο μοντέλο, επιτρέποντάς σας να αποθηκεύετε και να αναζητάτε εύκολα δεδομένα, είτε είναι δομημένα είτε μη.
Μπορείτε να χρησιμοποιήσετε το DynamoDB ως βάση δεδομένων για διάφορους τύπους εφαρμογών. Μπορείτε να έχετε πρόσβαση απευθείας από την κονσόλα ιστού AWS και μέσω προγραμματισμού μέσω του AWS-CLI ή από εφαρμογές web που χρησιμοποιούν το AWS-SDK.
Ξεκινώντας με το DynamoDB στο Node.js
Υπάρχουν πολλά εργαλεία για τη δημιουργία backend API στο Node.js και είστε ελεύθεροι να επιλέξετε τη βάση δεδομένων για το API σας όταν εργάζεστε με οποιοδήποτε από αυτά τα εργαλεία. Το Node.js παρέχει ευρεία υποστήριξη για εξωτερικές υπηρεσίες, συμπεριλαμβανομένων βάσεων δεδομένων όπως το AWS DynamoDB.
Το μόνο που χρειάζεστε για να αποκτήσετε πρόσβαση σε μια υπηρεσία AWS από την εφαρμογή Node είναι το πακέτο πελάτη aws-sdk για αυτήν την υπηρεσία. Για παράδειγμα, για να αποκτήσετε πρόσβαση στο DynamoDB, πρέπει να εγκαταστήσετε το πακέτο client-dynamodb στο aws-sdk.
Εκτελέστε αυτήν την εντολή στον κατάλογο του έργου σας για να εγκαταστήσετε το πακέτο:
npm install @aws-sdk/client-dynamodb
Μετά την εγκατάσταση του aws-sdk/client-dynamodb στο έργο Node.js, πρέπει να προσθέσετε την περιοχή του πίνακα DynamoDB στη διαμόρφωση πριν αλληλεπιδράσετε μαζί του. Θα το κάνετε αυτό κατά την προετοιμασία του προγράμματος-πελάτη DynamoDB.
Εάν έχετε εγκαταστήσει και χρησιμοποιήσει το AWS-CLI στον υπολογιστή σας στο παρελθόν, πιθανότατα έχετε ήδη ορίσει διαπιστευτήρια AWS στο περιβάλλον σας και το SDK θα λάβει αυτόματα τις τιμές σας από το περιβάλλον.
Αλλά αν δεν το έχετε, μπορείτε να κατευθυνθείτε στο Διαχείριση πρόσβασης ταυτότητας AWS (IAM) υπηρεσία στην κονσόλα σας και δημιουργήστε έναν νέο χρήστη. Μετά τη δημιουργία του χρήστη, μπορείτε να λάβετε ένα αναγνωριστικό κλειδιού πρόσβασης και ένα μυστικό κλειδί, τα οποία είναι τα προσωπικά σας διαπιστευτήρια.
Προσθέστε αυτά τα διαπιστευτήρια στο περιβάλλον σας εκτελώντας τις ακόλουθες εντολές τερματικού για την πλατφόρμα σας:
Σε Unix, Linux ή macOS:
export AWS_ACCESS_KEY_ID='your access key ID'
export AWS_SECRET_ACCESS_KEY='you secret access key'
Σε Windows (CMD):
set AWS_ACCESS_KEY_ID='your access key ID'
set AWS_SECRET_ACCESS_KEY='you secret access key'
Στα Windows (PowerShell):
$env:AWS_ACCESS_KEY_ID='your access key ID'
$env:AWS_SECRET_ACCESS_KEY='you secret access key'
Στη συνέχεια, ξανά στο έργο Node.js, δημιουργήστε ένα νέο αρχείο και ονομάστε το dynamodb.js. Σε αυτό το αρχείο, δημιουργήστε ένα νέο πρόγραμμα-πελάτη AWS DynamoDB χρησιμοποιώντας τον ακόλουθο κώδικα:
const { DynamoDB } = require('@aws-sdk/client-dynamodb')const region = "us-east-1"
const client = new DynamoDB({ region })
Πολύ απλό! Το AWS διασφαλίζει ότι δεν εκθέτετε κανένα από τα διαπιστευτήρια ασφαλείας σας στον κώδικά σας, επομένως, ενώ ο παραπάνω κώδικας προσπαθεί να δημιουργήσει τον πελάτη, διαβάζει πρώτα το κλειδί πρόσβασης και το μυστικό κλειδί από το περιβάλλον σας.
Ο νέος-δημιουργημένος πελάτης σάς δίνει τη δυνατότητα να εκτελείτε διάφορες λειτουργίες, όπως τη δημιουργία πινάκων και την ανάγνωση και εγγραφή δεδομένων.
Το DynamoDB είναι χωρίς σχήματα, όπως και άλλες βάσεις δεδομένων NoSQL, ώστε να μπορείτε πάντα να προσθέτετε νέα χαρακτηριστικά (πεδία) σε έναν πίνακα ανά πάσα στιγμή. Αυτός είναι ο λόγος για τον οποίο χρειάζεται μόνο να προσθέσετε χαρακτηριστικά που θα χρησιμεύουν ως κύρια κλειδιά σε έναν πίνακα DynamoDB κατά τη δημιουργία του.
Ελέγξτε τον ακόλουθο κώδικα που δημιουργεί έναν νέο πίνακα (Πελάτης) στο DynamoDB:
const createCustomerTable = async () => {
const params = {
TableName: "Customer",
AttributeDefinitions: [
{
AttributeName: "Email",
AttributeType: "S"
},
],
KeySchema: [
{
AttributeName: "Email",
KeyType: "HASH"
}
],
ProvisionedThroughput: {
ReadCapacityUnits: 5,
WriteCapacityUnits: 5
}
};client.createTable(params, (err, data) => {
if (err) {
console.log(err);
} else {
console.log(data);
}
});
}createCustomerTable();
Το πεδίο AttributeDefinitions είναι το σημείο όπου ορίζετε τα βασικά χαρακτηριστικά του πίνακα και τους τύπους τους. Το χαρακτηριστικό Email εδώ έχει τύπο S που σημαίνει ότι το πεδίο αναμένει μια συμβολοσειρά ως τιμή. Οι τρεις διαθέσιμοι τύποι χαρακτηριστικών είναι S, N και B (String, Number και Binary).
Χρειάζεστε το KeySchema για να ορίσετε κύρια κλειδιά που σας βοηθούν να βρείτε και να οργανώσετε τα στοιχεία γρήγορα. Το DynamoDB αναμένει ότι τα χαρακτηριστικά που προσθέτετε κατά τη δημιουργία του πίνακα θα είναι βασικά χαρακτηριστικά, επομένως το email είναι το κύριο κλειδί εδώ. Πρέπει να το προσθέσετε στο KeySchema και να καθορίσετε τον Τύπο κλειδιού του (HASH).
Η άλλη διαθέσιμη τιμή KeyType είναι το RANGE που χρησιμοποιείται για τα κλειδιά ταξινόμησης. Τα πλήκτρα ταξινόμησης είναι χρήσιμα σε περιπτώσεις όπου μπορεί να έχετε δεδομένα με τα ίδια κλειδιά HASH σε έναν πίνακα και θέλετε να τα ομαδοποιήσετε σύμφωνα με κάποια επιπλέον δεδομένα, όπως ημερομηνία ή χρώμα, μπορείτε να κάνετε τα επιπλέον δεδομένα κλειδί RANGE.
Η τρίτη σημαντική παράμετρος στον παραπάνω κώδικα είναι το ProvisionedThroughput. Εδώ ορίζετε τον αριθμό των αναγνώσεων και εγγραφών που θέλετε να επιτρέπει το DynamoDb στον πίνακα ανά δευτερόλεπτο.
Όταν εκτελείτε τον παραπάνω κώδικα, θα πρέπει να λάβετε έξοδο που μοιάζει με αυτό:
Εάν ελέγξετε τον πίνακα ελέγχου των πινάκων DynamoDB στην κονσόλα ιστού, θα δείτε τον πίνακα είτε να είναι ακόμα διαθέσιμος είτε να είναι ήδη ενεργός.
Να λαμβάνετε πάντα υπόψη τις ανάγκες της εφαρμογής σας όταν προσδιορίζετε τις μονάδες ReadCapacityUnits και WriteCapacityUnits, επειδή μια ακατάλληλη τιμή μπορεί να οδηγήσει σε προβλήματα απόδοσης ή υψηλό κόστος χρέωσης στο λογαριασμό σας.
Αφού βεβαιωθείτε ότι ο πίνακας είναι ήδη ενεργός, μπορείτε να εκτελέσετε λειτουργίες CRUD σε αυτόν.
Ακολουθούν ορισμένα παραδείγματα κώδικα που σας δείχνουν πώς να γράφετε και να διαβάζετε δεδομένα από τον πίνακα Πελάτης.
const createCustomer = async (customer) => {
const params = {
TableName: "Customer",
Item: customer
}client.putItem(params, (err, data) => {
if (err) {
console.error(err)
} else {
console.log(data)
}
})
}const customerData = {
Name: { "S": "Timilehin O." },
Email: { "S": "[email protected]" },
Age: { "N": "18"},
Country: { "S": "Nigeria" }
}createCustomer(customerData)
Το αντικείμενο params περιέχει το TableName που είναι ο πίνακας στον οποίο γράφετε και το πεδίο Item που περιέχει τα δεδομένα που προσθέτετε με τους συγκεκριμένους τύπους τους. Παρατηρήστε τα νέα πεδία που δεν υπήρχαν στον πίνακα αρχικά, έτσι λειτουργεί ευέλικτα το DynamoDB. Μπορείτε να δείτε τα δεδομένα στη βάση δεδομένων σας στην κονσόλα σας ως εξής:
const getAllCustomers = async () => {
const params = {
TableName: "Customer"
}const customers = await client.scan(params)
console.log(customers)
}
Ενώ ο ακόλουθος κώδικας λαμβάνει τον χρήστη από την τιμή του email:
const getCustomerByEmail = async (email) => {
const params = {
TableName: "Customer",
Key: {
Email: { "S": email }
}
}const customer = await client.getItem(params)
console.log(customer)
}getCustomerByEmail("[email protected]")
const updateCustomerLocation = async (email, age) => {
const params = {
TableName: "Customer",
Key: {
Email: { "S": email }
},
UpdateExpression: "SET Age = :newAge",
ExpressionAttributeValues: {
':newAge': { "N": age }
},
ReturnValues: "ALL_NEW"
}const updatedCustomer = await client.updateItem(params)
console.log(updatedCustomer.Attributes)
}
Μπορείτε επίσης να επιλέξετε να κάνετε τη συνάρτησή σας δυναμική δημιουργώντας εκφράσεις ενημέρωσης από τα δεδομένα ενημέρωσης. Η ευελιξία του DynamoDB σάς επιτρέπει να χειρίζεστε κάθε λειτουργία σύμφωνα με τις ανάγκες σας.
const deleteCustomer = async (email) => {
const params = {
TableName: "Customer",
Key: {
Email: { "S": email }
}
}client.deleteItem(params, (err, data) => {
if (err) {
console.error(err)
} else {
console.log("Customer deleted successfully")
}
})
}deleteCustomer("[email protected]")
Δημιουργία αποτελεσματικών εφαρμογών με το DynamoDB
Οι Υπηρεσίες Ιστού της Amazon συνεχίζουν να ευδοκιμούν. Παρέχει μια προσβάσιμη πλατφόρμα που μπορείτε να χρησιμοποιήσετε για να παρέχετε αποτελεσματικές, ασφαλείς ψηφιακές λύσεις. Το DynamoDB είναι η τέλεια επιλογή αν ψάχνετε για μια βάση δεδομένων για να ξεκινήσετε χωρίς να ανησυχείτε για την υποδομή ή την ασφάλεια.
Τώρα είστε εξοπλισμένοι με όλα όσα χρειάζεστε για να ξεκινήσετε με το DynamoDB στο Node.js και μπορείτε να επιλέξετε με σιγουριά το DynamoDB για την επόμενη εφαρμογή Node.js.