Learn

All is packed to conquer galaxies. Just here. For Free.

PERCHÈ NOSQL?

little_title_logoPerchè scegliere una soluzione NoSQL?

I Big Users e i Big Data, che dominano gli attuali scenari di business, guidano ad oggi la considerazione e l’adozione di un nuovo modello di database basato su una tecnologia NoSQL, in alternativa ai database relazionali.

Big Users

Oggi la diffusione vertiginosa dell’uso globale di internet, l’aumento del numero di ore trascorse online dagli users e la crescente popolarità di smartphone e tablet fa sì che siano molte le applicazioni con milioni di utenti al giorno.
Il consistente numero di utenti, combinato con la natura dinamica delle tipologie di utenza, rafforzano il bisogno di una tecnologia di database più facilmente scalabile.
Con le tecnologie relazionali molti sviluppatori trovano difficile, se non impossibile, ottenere la scalabilità dinamica di cui necessitano gestendo nel frattempo la richiesta di performance degli utenti.

Big Data

E’ diventato più facile raccogliere dati attraverso terzi come Facebook, D&B e altri: le informazioni personali e i contenuti generati dagli utenti, i dati di geo localizzazione, le statistiche sociali sono solo alcuni esempi della crescente gamma di dati raccolti fino ad oggi.
Gli sviluppatori vorrebbero un database molto flessibile che riesca a supportare facilmente nuovi tipi di dati e non sia vincolato da strutture dati statiche: la maggior parte dei nuovi dati è destrutturata e semi-strutturata, quindi gli sviluppatori necessitano di un database capace di un efficiente metodo di immagazzinamento di tali dati.
Sfortunatamente, il rigido approccio schematico caratteristico dei database relazionali rende impossibile una veloce incorporazione di nuovi tipi di dati e non è adatto a dati destrutturati o semi-strutturati: NoSQL fornisce un modello di dati che si addice meglio a questo tipo di necessità.

I modelli di database relazionali e NoSQL sono molto diversi. Un database relazionale è composto da tabelle che sono messe in relazione fra loro attraverso chiavi esterne, meglio note come foreign keys. In pratica, i dati vengono distribuiti in diverse tabelle che contengono righe e colonne, ossia tuple di dati che prendono senso se collegati ai rispettivi attributi (intestazioni delle colonne), assumendo così la natura di informazioni. In questo modo, anche se i dati descrivono uno stesso oggetto, devono essere comunque memorizzati in tabelle differenti ed essere poi messi in relazione tra loro. Ogni volta che si effettua un’interrogazione, chiamata query, i dati devono essere raccolti dalle differenti tabelle e combinati fra loro per fornire l’informazione richiesta dall’applicazione. Lo stesso vale per le operazioni di cancellazione, inserimento e aggiornamento. Per ogni query eseguita in linguaggio SQL, è necessario verificare le relazioni tra i differenti dati presenti nelle differenti tabelle e applicare le eventuali modifiche richieste, preservando l’integrità del DB da eventuali corruzioni.

Leggi tutto

I database NoSQL sono progettati in maniera differente: ad esempio nei database NoSQL orientati ai documenti, i dati non sono inseriti in tabelle e, soprattutto, non sono distribuiti secondo differenti strutture logiche, ma sono raccolti, aggregati e conservati in documenti nel formato JSON. Ogni JSON è capace di raccogliere in un unico documento/oggetto tutti i dati, logicamente in relazione, ripartiti tra le tabelle del database relazionale, in modo che il documento possa essere trattato dall’applicazione come un vero e proprio oggetto unico. In questo modo si evita il processo di aggregazione dei dati tipico delle elaborazioni SQL, poichè i dati sono già in formato aggregato.

Si ottengono così migliori performance nelle operazioni di accesso al DB, anche se si ha lo svantaggio della duplicazione dei dati dovuta alla loro aggregazione. Di contro, i costi sempre meno proibitivi dei sistemi di storage rendono questo svantaggio di poco importanza, a fronte di un netto guadagno di flessibilità di sistema (facilmente scalabile e distribuibile) offerto dal modello NoSQL.

Un’ulteriore caratteristica che differenzia i database relazionali da quelli NoSQL è la rigida schematizzazione. Per realizzare una tabella di qualsivoglia database relazionale, è necessario definire a priori uno schema (noto come entità-relazione), nel quale si definiscono anche i singoli attributi delle tabelle per la corretta interpretazione dei dati raccolti.

Cambiare in itinere il suddetto schema, ad esempio introducendo nuovi attributi, è problematico e, spesso, sconsigliato proprio per evitare di compromettere i dati e la struttura del DB. Tale limite rende i database relazionali poco adatti alla caratteristica dinamica dei Big Data e alla scalabilità richiesta dalle condizioni di Big User e dalle tecnologie di cloud computing .

La valida alternativa che risolverebbe il problema è il modello NoSQL, detto schemaless, ossia privo di qualsiasi schema della struttura dei dati definito a priori. Ad esempio, nei database NoSQL orientati ai documenti,è possibile inserire nei documenti JSON tutti i campi necessari, senza necessità di specificarli. In questo modo, i dati inseriti possono variare in qualsiasi momento per arricchire le applicazioni, senza rischi per l’integrità del DB.

Da questa caratteristica deriva che i database relazionali sono poco adatti a incorporare velocemente nuovi tipi di dati e sono sconsigliati per la conservazione di dati semi-strutturati o non strutturati, al contrario di quelli NoSQL che si rivelano utili ed efficienti in entrambi i casi.
Se si vuole quindi realizzare un’applicazione scalabile senza grosse problematiche, a costi contenuti, distribuibile nel cloud computing e le cui informazioni devono essere sottoposte ad analisi dei Big Data, la scelta giusta risiede nei database NoSQL.

Il Satellite Volta, in particolare, fornisce soluzioni e strumenti per l’uso di Apache Cassandra, database NoSQL di tipo ”chiave/valore eventually consistent”, sviluppato dall’Apache Software Foundation e rilasciato con licenza open source. Pur seguendo le regole sopra elencate, caratterizzanti dei database NoSQL in generale, i punti di forza di Cassandra sono l’ottimizzazione della gestione di grandi quantità di dati e la sua natura distribuita: un cluster di nodi Cassandra non presenta single points of failure e garantisce, quindi, alta affidabilità e ottime performance.

Proprio per queste ragioni negli ultimi tempi grandi aziende, come Ebay, hanno deciso di orientarsi verso una soluzione NoSQL, ottenendo, nel caso specifico, un miglioramento del tempo di risposta SLA di 6 miliardi di scritture e 5 miliardi di letture al giorno gestendo, nel frattempo, 250TB di dati attraverso Cassandra.

Una volta determinato che la soluzione NoSQL è la più adatta alla tua situazione aziendale, Satellite Volta può fornirti software, servizi e consulenza strategica per garantire performance di successo con la tecnologia NoSQL.

FAQ

little_title_logoSatellite Volta

What is Volta project?

For further information on Volta project click here.

What is Volta Control?

Volta Control is a tool that allows you to design, implement and manage Cassandra database through a graphical interface. You will be able to display the list of keyspace and related tables in a node and carry out reading / writing / deleting operations using CQL code. You can free download Volta Control here.

Can I report a bug?

Volta products are evolving projects. Report any bug you find to our pages SourceForge if the bug refers to libraries Volta, or send an email to support@satellitevolta.com if it refers to Volta tools.

Can I contribute to Volta products? How?

Suggestions and feedbacks are always welcome! Volta libraries are open source projects in all their respects: their pages on SourceForge provide both the jar package download and the entire code that you can download via SVN. If you want to report a bug, suggest an improvement or propose a modification click here. Volta tools are free, but not open source, anyway you are welcome to send suggestions to support@satellitevolta.com.

What are the licenses applied to Volta product?

The license applied to Volta libraries is Apache Software License 2.0.
The license applied to Volta Control is:
Satellite Volta Software License, Version 1.0, September 2014
By downloading and using this software, you agree to the terms and conditions of Satellite Volta Software License (SVSL) for use, reproduction, and distribution.
SVSL sets the same terms and conditions of the Apache Software License 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html), with the exception that:
– You may distribute copies of this software, but only without modifications, only in Object form and only free of charge
– This software is released in Object form only

What is Volta Criteria?

Volta Criteria is a java library designed for those who want to integrate Cassandra database within their java application, providing intuitive methods for statement construct: you won’t have to write code (and therefore know the syntax ) CQL when carrying out CQL queries and statements. Volta Criteria is available as an open source project at its SourceForge page.

What is Volta Log?

Volta Log is a java library that enables you to manage the logs of your application, saving them in Cassandra within a designated structure instead of a file. As a result, it ensures faster access to logs and a more efficient management of them. Volta Log is available as an open source project at its SourceForge page.

What is Volta Monitor?

Volta Monitor is a health status monitoring tool: by connecting to a node, you can see the topology of the cluster and check the status, data loading and statistics on each individual node. You can free download Volta Monitor here.

little_title_logoApache Cassandra

What is a NoSQL database?

The term NoSQL stands for “Not Only SQL” and refers to all those database management systems that do not use the classic relational model and the SQL language, commonly used for querying relational databases. The main features of NoSQL databases are:
• Absence of a fixed pattern: data are often stored in dynamic structures.
• Absence of join operations: there are not relationships between data, so it makes no sense to consider merge operations between them.
• Denormalization of data: in total contrast to relational databases, NoSQL databases encourage the replication of data across multiple facilities.
• Absence of warranty for all ACID properties: a NoSQL database does not guarantee the atomicity or isolation of its operations; texture is not always of “Eventually” type (i.e, “sooner or later” will be reached).

What is Apache Cassandra?

Apache Cassandra is a “key value / eventually consistent” NoSQL database, developed by Apache Software Foundation and released under an open source license. Its strengths lie in the optimization of the management of large amounts of data and in its distributed nature: a cluster of nodes Cassandra does not have single points of failure and therefore guarantees high reliability and excellent performance.

What kind of architecture does Cassandra use?

Apache Cassandra has a peer-to-peer distributed architecture: each node in the cluster is as important as the other and data are distributed as evenly as possible. The absence of elements of the master-slave architecture and the possibility of data replication gives high reliability to Cassandra.

What benefits do I get by using Cassandra?

A NoSQL database such as Apache Cassandra provides a perfect tool to manage large amounts of data with excellent performance, thanks to its scale. What is more, it has been designed as a peer-to-peer distributed system on multiple nodes or possibly multiple datacenters, it does not have single points of failure and so it guarantees high reliability and data availability.

Is Apache Cassandra the best choice for my application?

NoSQL databases are not intended to supplant the RDBMS, but they can be adopted alongside with them: there are situations in which Cassandra solves all the problems related to your application, and situations where a relational database is the most suitable choice. Apache Cassandra is particularly suited to projects where there are many scriptures. Common use cases are:
• Management of time-series
• Messaging in social networks
• Monitoring devices
• Maintaining Logs
• Streaming media (audio, video…)
• Real-time data analysis
• Statistical data analysis
• Messaging games in real time

What are the limitations of Apache Cassandra?

There are some kinds of applications for which a NoSQL database Apache Cassandra is the best solution, but in other situations a relational database is the best choice. Choosing among various DBMS for your project, you must consider the following limitations of Cassandra: in this model join or data aggregation functionalities in general do not exist, because of both the base structure of Cassandra and the need to denormalize data, in order to read them from a single node cluster whenever possible. Data sorting is available only within individual partitions: this is due to the ability of Cassandra to manage large amounts of data. Sorting million tuples would be extremely expensive. It must be possible for data belonging to a single partition to be saved on a single node, because of the mechanism which uses Cassandra to save/read data through primary keys. “Physical” limitations on the saved data are: a single column cannot be larger than 2GB; type data collection may not exceed 64 KB; a single partition cannot contain more than 2 billion cells. Cassandra does not guarantee the isolation of its operations; atomicity is only partially provided and it increases costs; the texture is only of “eventually” type (i.e. , “sooner or later ” will be reached).

What platforms does Apache Cassandra run on?

Apache Sofware Foundation provides free and open-source license with the download version of Linux for Cassandra. There are both free and premium versions for other operating systems, including Microsoft Windows, Mac OS and various Linux distributions such as CentOS, Debian and Ubuntu.

Where can I download Apache Cassandra?

Apache Cassandra is an open source and free software: you can download the version for Linux directly from the project website: http://cassandra.apache.org/download/. You will find references to other versions developed privately, available also for Microsoft Windows and Mac OS.

little_title_logoCQL e le strutture dati in Cassandra

What is the CQL language?

CQL is Cassandra Query Language, implemented to provide developers and users with a language easier than Cassandra Thrift (the native language of Cassandra) to perform queries. As for syntax, the CQL is quite similar to SQL, using classic keywords such as SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, etc.. Obviously, there are some differences and limitations due to the type of architecture that differs from the one of relational databases: there are not join functionalities, sorting is limited to the clustering key, the set of supported data types is different.

What datatypes does Cassandra support?

Cassandra comes with the following datatypes:
• ascii , text , varchar : textual data
• bigint , decimal , double, float , int , varint : numerical data
• boolean : Boolean data
• blob file and / or byte array
• counter : counters
• inet : IP addresses
• timestamp : Time data
• uuid , timeuuid unique identifiers
• list , set, map : collections

What is a keyspace?

A keyspace in Cassandra is what in relational databases is commonly called “database scheme”, i.e. a container of tables. Each keyspace can contain multiple column families (tables). At the time of creation, the strategy you want to follow for replicating keyspace, and the replication factor associated with it, must be specified (i.e., how many nodes will replicate data contained in the keyspace).

What is a column family?

In order to compare the concepts of NoSQL databases to those of relational databases (in general less tricky for those who know the classical model), we can say that a family column corresponds to the table concept. More precisely, a column family is a set of column, each of which will be specified by datatype and name.

What is a column?

A column in Cassandra is a tuple containing three values: the name of the column, the value in it and the timestamp of the last entry. In CQL columns is easily associated with a table column, that will be specified by datatype and name.

What is a primary key?

A primary key is, as in SQL, a column or set of columns whose values uniquely identify the row. If the primary key consists of more columns, they will form part of a partitioning key, others will be clustering columns.

What is a partitioning key?

A partitioning key is a column or set of columns in the primary key indicating which partition data of the associated row belong to, and in which nodes of the cluster data will be saved.

What is a clustering column?

A clustering column is a column that is part of a primary key, but that is not the partitioning key. So, it does not indicate the partition to which data belong, but it defines the sort order followed by data within that partition. Clustering columns may or may not be present and they can be one or more for each primary key.