Cloud database
Quella dei cloud database è una tipologia di basi di dati che viene ospitata su una piattaforma di cloud computing. Nelle versioni più evolute la maggior parte del sistema database è gestito dalla piattaforma cloud, lasciando al proprietario solo compiti amministrativi di alto livello. Si parla in questo caso di Database-as-a-Service (DBaaS).
Modelli di Distribuzione
[modifica | modifica wikitesto]Ci sono due metodi primari per gestire un database in ambiente cloud:
- Virtual machine Image
- Le piattaforme cloud permettono agli utenti di acquistare istanze di macchine virtuali per un tempo limitato, ed è possibile gestire un database in tali macchine virtuali. Gli utenti possono anche caricare le proprie machine image con all'interno il database già installato, oppure utilizzare una macchina già pronta che contiene una versione ottimizzata di un database. Per esempio, Oracle fornisce macchine già pronte con installato Oracle Database 11g Enterprise Edition su Amazon EC2[1] e su Microsoft Azure.[2]
- Database-as-a-service (DBaaS)
- Con un database erogato come servizio, i proprietari delle applicazioni non devono installare a manutenere il database. Invece, il fornitore del servizio si prende la responsabilità di installare e manutenere il database, e ai proprietari delle applicazioni viene fatto pagare un importo proporzionale all'uso del servizio. Per esempio, Amazon Web Services fornisce tre database come servizi offrendoli come parte del suo portfolio cloud: SimpleDB, un database NoSQL chiave-valore; Amazon RDS, un servizio di database relazionale che include il supporto per MySQL, Oracle, etc.; e DynamoDB. Microsoft offre il suo servizio Azure SQL Database nella sua piattaforma cloud Azure.
La piattaforma di cloud computing Rackspace offre database come servizio per MySQL and MongoDB. I fornitori dei servizi hanno anche lanciato il loro servizio sotto questo modello. Oracle fornisce il proprio database come servizio, permettendo agli utenti di accedere a Oracle Database 11g and 12c come servizio cloud. MongoDB ha recentemente lanciato il proprio MongoDB come servizio, MongoDB Atlas.[3]
Architetture e caratteristiche comuni
[modifica | modifica wikitesto]- Molti servizi di database offrono una console web, che l'utente finale può utilizzare per fornire e configurare le istanze del database. Per esempio, la console web di Amazon Web Services abilita gli utenti a lanciare le istanze del database, creando snapshots (analoghi ai backups) del database, e monitorando le sue statistiche[4]
- Il servizio di database consiste di una componente di gestione, che controlla gli strati sottostanti delle istanze usando una service API. La service API è esposta all'utente finale, e gli permette di eseguire operazioni di manutenzione e scalabilità sulle proprie istanze del database. Per esempio la service API di Amazon Relational Database Service abilita alla creazione di istanze di database, modificando le risorse disponibili sull'istanza, cancellando istanze di database, creando snapshot (cioè dei backup) del database, e ripristinando un database da uno snapshot.[5]
- Lo strato software sottostante include tipicamente il sistema operativo, il database e software di terzi parti usati per gestirlo. Il fornitore del servizio (ad esempio MongoLab o ObjectRocket) è responsabile dell'installazione, dell'aggiustamento e dell'aggiornamento del software sottostante e garantendo complessivamente il funzionamento e le prestazioni del database.
- La scalabilità differisce tra i diversi venditori - molti offrono una scalabilità automatizzata, altri abilitano l'utente nel gestirla mediante l'uso di un'API. C'è tipicamente un affidamento per un certo livello di alta disponibilità (ad esempio 99.9% or 99.99%).
Modello dei dati
[modifica | modifica wikitesto]Nella progettazione e nello sviluppo di sistemi tipicamente si utilizzano la gestione dei data e i database relazionali come loro chiave di costruzione. Interrogazioni avanzate espresse in SQL lavorano bene con relazioni precise che sono imposte sulle informazioni dai database relazionali. Tuttavia, la tecnologia dei database relazionali non era inizialmente disegnata o sviluppata per usi su sistemi distribuiti. Questo problema è stato indirizzato con l'aggiunta di miglioramenti nella creazione dei cluster con i database relazionali, sebbene molti compiti di base richiedano complessi e costosi protocolli, ad esempio la sincronizzazione dei dati.[6]
I moderni database relazionali hanno mostrati scarse prestazioni su sistemi data-intensive, perciò, l'idea di NoSQL è stata usato all'interno dei sistemi di gestione dei database basati sul cloud.[7] All'interno di database NoSQL implementati, non ci sono requisiti per schemi fissati nelle tabelle, e l'uso dell'operazione di join è vietato. "The NoSQL databases have proven to provide efficient horizontal scalability, good performance, and ease of assembly into cloud applications."[8]
È anche importante una distinzione tra i cloud database che sono relazionali rispetto a quelli non relazionali o NoSQL:
- SQL database
- Ad esempio PostgreSQL, EDB Postgres Advanced Server, NuoDB, Oracle Database, Microsoft SQL Server, MariaDB e MySQL, rappresentano un tipo di database che possono girare in una piattaforma cloud, sia in una macchina virtuale sia erogati come servizio, in base al fornitore. Mentre i database SQL sono facilmente scalabili verticalmente, la scalabilità orizzontale viene posta come sfida, che i servizi dei cloud database hanno iniziato a indirizzare.[9]
- NoSQL database
- Ad esempio Apache Cassandra, CouchDB e MongoDB, sono un altro tipo di database che possono girare nel cloud. I database NoSQL sono costruiti per servire pesanti carichi di lettura/scrittura e possono scalare su e giù facilmente,[10] e perciò sono molto più adatti per essere eseguiti in una piattaforma cloud.
- Tuttavia, la maggior parte delle applicazioni contemporanee sono costruite intorno ad un modello dei dati relazionale, quindi lavorare con database NoSQL spesso richiede una riscrittura del codice delle applicazioni.[11]
- Molti database relazionali hanno inglobato funzionalità usate nei NoSQL tra cui risultano il formato JSON, il formato JSON binario, e database chiave-valore. Questi database multi-modello includono PostgreSQL e EDB Postgres Advanced Server.
- Un database multi-modello con funzionalità relazionali e non, fornisce un'interfaccia SQL standard agli utenti e alle applicazioni, e così facilita l'uso di tali database per applicazioni contemporanee costruite intorno ad un modello dati SQL.
Principali venditori
[modifica | modifica wikitesto]Le seguente tabelle elenca i venditori di database maggiormente degni di nota con offerte di cloud database, classificate dal loro modello di distribuzione - immagini di macchine virtuali vs. database come servizi - e modello dei dati, SQL vs. NoSQL.
Distribuzione su Macchina Virtuale | Database come servizio | |
---|---|---|
Modello Dati SQL |
| |
Modello dati NoSQL |
|
|
Note
[modifica | modifica wikitesto]- ^ a b Amazon Machine Images - Oracle Database 11g Release 2 (11.2.0.1) Enterprise Edition - 64 Bit Archiviato il 16 ottobre 2011 in Internet Archive., Amazon Web Services, Retrieved 2011-11-9.
- ^ List of Oracle VM Images (MSDN), Retrieved 2014-9-22
- ^ MongoDB Atlas - Hosted MongoDB as a Service, su mongodb.com. URL consultato il 1º settembre 2016.
- ^ "AWS Management Console, Amazon RDS Features", Amazon Web Services, Retrieved 2011-11-10.
- ^ "Amazon Relational Database Service, Features, Detailed Description", Amazon Web Services, Retrieved 2011-11-10.
- ^ A. Anjomshoaa and A. Tjoa, "How the cloud computing paradigm could shape the future of enterprise information processing", Proceedings of the 13th International Conference on Information Integration and Web-based Applications and Services - iiWAS'11, pp. 7-10, 2011.
- ^ S. Cass, "Designing for the Cloud", MIT Technology Review, 2009. [Online]. Available: https://www.technologyreview.com/s/414090/designing-for-the-cloud/. Retrieved 2016-10-04.
- ^ "NoSQL", Wikipedia, 2016. Retrieved 2016-10-04.
- ^ Dave Rosenberg, Are databases in the cloud really all that different? Archiviato il 2 novembre 2012 in Internet Archive., CNET, Retrieved 2011-11-6
- ^ Agrawal, Rakesh, The Claremont report on database research (PDF), in SIGMOD Record, vol. 37, n. 3, ACM, 2008, pp. 9–19, DOI:10.1145/1462571.1462573, ISSN 0163-5808 .
- ^ Ken North, "SQL, NoSQL or SomeSQL?", Dr. Dobb's, Retrieved 2011-11-9.
- ^ Deploy your database applications and projects on the cloud Archiviato il 27 novembre 2011 in Internet Archive., IBM.com, Retrieved 2011-9-1
- ^ Chris Kanaracus, "Ingres rolls out cloud database offerings", Infoworld.com, Retrieved 2011-8-28.
- ^ "Amazon Web Services Announces Two New Database Services – AWS Database Migration Service and Amazon RDS for MariaDB Archiviato il 1º giugno 2017 in Internet Archive., Amazon Press Releases, retrieved 2015-11-17
- ^ "MariaDB Enterprise Cluster + MariaDB MaxScale Archiviato il 4 dicembre 2016 in Internet Archive., Microsoft Azure, retrieved 2015-11-17
- ^ "Running MySQL on Amazon EC2 with EBS (Elastic Block Store), Amazon Web Services, retrieved 2011-11-20
- ^ Swoyer, Stephen. "NuoDB: A Database for the Cloud." TDWI. Nov. 13, 2012. Retrieved Nov. 26, 2012
- ^ "Oracle Database in the Cloud", Oracle.com, Retrieved 2011-11-9.
- ^ Chris Kanaracus, "EnterpriseDB Adding New Cloud Option for PostgreSQL Database Archiviato il 14 gennaio 2012 in Internet Archive.", PCWorld, retrieved 2011-8-28
- ^ AWS | SAP HANA, su Amazon Web Services, Inc.. URL consultato il 7 luglio 2016.
- ^ SAP Solutions | Microsoft Azure, su azure.microsoft.com. URL consultato il 7 luglio 2016.
- ^ SAP HANA Enterprise Cloud, su hana.sap.com. URL consultato il 7 luglio 2016 (archiviato dall'url originale il 15 agosto 2016).
- ^ Copia archiviata, su finance.yahoo.com. URL consultato il 3 dicembre 2016 (archiviato dall'url originale il 14 aprile 2016).
- ^ a b EnterpriseDB#cite note-10
- ^ Cloud SQL - MySQL Relational Database Service, su cloud.google.com. URL consultato il 28 novembre 2016.
- ^ "Announcing Heroku PostgreSQL Database Add-on", Heroku Blog, Retrieved 2011-11-9.
- ^ Noel Yuhanna, SQL Azure Raises The Bar On Cloud Databases Archiviato il 15 settembre 2011 in Internet Archive., Forrester, Retrieved 2011-11-9.
- ^ Klint Finley, "7 Cloud-Based Database Services" Archiviato il 9 novembre 2011 in Internet Archive., ReadWriteWeb, Retrieved 2011-11-9.
- ^ "Setting up Cassandra in the Cloud Archiviato il 26 ottobre 2018 in Internet Archive.", Cassandra Wiki, Retrieved 2011-11-10.
- ^ Google Cloud Platform Blog: Click to Deploy Apache Cassandra on Google Compute Engine, su cloudplatform.googleblog.com. URL consultato il 28 novembre 2016.
- ^ "Clusterpoint Database Virtual Box VM Installation Guide Archiviato il 10 marzo 2015 in Archive.is.", Clusterpoint, Retrieved 2015-03-08.
- ^ "Amazon Machine Images, CouchDB 0.10.x 32 bit Ubuntu[collegamento interrotto]", Amazon Web Services, Retrieved 2011-11-10.
- ^ CouchDB Cloud Hosting on Google Cloud Platform, su bitnami.com. URL consultato il 28 novembre 2016.
- ^ "Amazon Machine Image, Hadoop AMI[collegamento interrotto]", Amazon Web Services, Retrieved 2011-11-10.
- ^ Cloud Dataproc - Managed Spark & Managed Hadoop Service, su cloud.google.com. URL consultato il 28 novembre 2016.
- ^ "Hadoop at Rackspace Archiviato il 2 marzo 2014 in Internet Archive.", Rackspace Big Data Platforms, Retrieved 2014-02-24.
- ^ MarkLogic Developer 8 (HVM) on AWS Marketplace, su aws.amazon.com. URL consultato il 31 marzo 2016.
- ^ Flexible Deployment (PDF), su marklogic.com. URL consultato il 28 novembre 2016.
- ^ "MongoDB on Amazon EC2, MongoDB.org, Retrieved 2011-11-10.
- ^ Deploying MongoDB on Google Compute Engine, su cloud.google.com. URL consultato il 28 novembre 2016.
- ^ "MongoDB on Azure Archiviato il 31 ottobre 2012 in Internet Archive., MongoDB.org, Retrieved 2011-11-10.
- ^ "Easily Scale MongoDB at Rackspace Archiviato il 2 marzo 2014 in Internet Archive.", Managed MongoDB ObjectRocket by Rackspace, Retrieved 2014-02-24.
- ^ "Neo4J in the Cloud Archiviato il 25 settembre 2011 in Internet Archive.", Neo4J Wiki, Retrieved 2011-11-10.
- ^ "Announcing Neo4J on Windows Azure", Neo4J Blog, Retrieved 2011-11-10.
- ^ Andrew Brust, "Cloudant Makes NoSQL as a Service Bigger", ZDNet, Retrieved 2012-5-22.
- ^ Bigtable - Scalable NoSQL Database Service, su cloud.google.com. URL consultato il 28 novembre 2016.
- ^ Datastore - NoSQL Schemaless Database, su cloud.google.com. URL consultato il 28 novembre 2016.
- ^ MongoDB Atlas - Hosted MongoDB as a Service, su mongodb.com. URL consultato il 30 agosto 2016.