Si può usare un’applicazione JavaScript (Node.js) per accedere al DBMS Apache Cassandra. Infatti, di solito, il DBMS deve essere protetto, quindi NON è esposto sulla rete pubblica. Per lo stesso motivo, il server DBMS e il server Node.js si trovano nella stessa rete locale.
Si veda prima l’articolo su come installare Cassandra e come creare un nuovo utente amministratore1.
L’applicazione node.js che si sta per implementare è considerata di tipo back-end, e si può usare un framework come React
Ci sono varie librerie per usare Cassandra all’interno di Node.js.
Se si vuole realizzare un progetto React, questa soluzione pronta, è abbastanza utile:
.
+ ── dist
+ ── config
+ ── server
├─── .babelrc
├─── webpack.config.server.js
├─── package.json
└─── template.js
Per installare le dipendenze del progetto, dopo averlo decompresso:
npm install
Nel codice sorgente è necessario creare un file ./template.js
// ./template.js export default () => { return `<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>C-assandra-ERN Kickstart</title> </head> <body> <div id="root"></div> <script type="text/javascript" src="/dist/bundle.js"></script> </body> </html>` }
È necessario creare anche un file ./server/server.js
, per istruire il web server Express
// ./server/server.js import {config} from '../config/config.js'; import express from 'express'; import template from '../template.js'; import {cassandraClient} from '../db/cassandraClient.js'; const db = cassandraClient(); const app = express(); app.get('/', (req, res) => { res.status(200).send(template()) }) let port = process.env.PORT || 3000 app.listen(port, function onStart(err) { if (err) { console.log(err) } console.info('Web server started on port %s.', port) })
Per la configurazione del server ./config/config.js
// ./config/config.js const config = { cassandraIP: '172.17.0.2', cassandraPort: 9042, datacenter: 'datacenter1', cassandraUser: 'utente', cassandraSecret: 'segretoXX' } export {config};
Per la connessione da Node.js al DBMS Cassandra, modificare ./server/db/cassandraClient.js
// ./server/db/cassandraClient.js import expressCassandra from 'express-cassandra'; import {config} from '../config/config.js'; function cassandraClient () { try { const cassandraClient = new expressCassandra.createClient({ clientOptions: { contactPoints: [config.cassandraIP], localDataCenter: config.datacenter, protocolOptions: { port: config.cassandraPort }, queryOptions: {consistency: expressCassandra.consistencies.one}, socketOptions: { readTimeout: 60000 }, authProvider: new expressCassandra.driver.auth.PlainTextAuthProvider(config.cassandraUser, config.cassandraSecret) }, ormOptions: { defaultReplicationStrategy: { class: 'SimpleStrategy', replication_factor: 1 }, migration: 'safe', } }); console.info('Web server started on port %s.', config.cassandraPort) } catch (err) { console.error(err); } } export {cassandraClient};
Per compilare un unico bundle
npm run build
Per avviare il server
npm run start
Aprendo il browser su questo indirizzo, apparirà qualcosa nel terminale.
http://localhost:3000
- https://www.cancellino.org/2023/04/database-remoto-1/ [↩]