Azure Cosmos DB is a globally distributed database service designed to enable you to elastically and independently scale throughput and storage across any number of geographical regions with a comprehensive SLA. In this session we will discover how Cosmos DB works and what are the key features that enables you to become polyglot in persistency. A single "database" for multiple models.
Azure Stream Analytics è un motore serverless che permette l'analisi dei dati in tempo reale di più flussi simultanei. Durante la sessione vedremo un esempio di come sia possibile determinare situazioni di allarme e notificarle via email.
This talk is a brief introduction to Elasticsearch. What is it ? How can I use it ? How can it be useful for my company or for my business ? (the slides are in ITALIAN)
Ottimizzazione della gestione dei dati sul cloudNicolò Carandini
Lo spazio dei dati (3Vs): Volume, Velocità e Varietà
Il CAP theorem
Data Modeling
Data Platform Azure solutions
Big Data and ML Azure solutions
Cosmos DB
More Data Consistency options: Bounded staleness, Session, Consistent Prefix
Cosmos DB Security & Compliance
Quality Assurance with TLA+
A Case Study: Venice Time Machine
Azure Saturday Pordenone 2018 IoT real time processing for lazy developerAlessio Biasiutti
In this session I explained how to develop a IoT E2E solution writing as less code as possible. I designed the solution using Azure Event Hub, Azure Service Bus, Azure Logic Apps e Azure SQL Database
Azure Stream Analytics è un motore serverless che permette l'analisi dei dati in tempo reale di più flussi simultanei. Durante la sessione vedremo un esempio di come sia possibile determinare situazioni di allarme e notificarle via email.
This talk is a brief introduction to Elasticsearch. What is it ? How can I use it ? How can it be useful for my company or for my business ? (the slides are in ITALIAN)
Ottimizzazione della gestione dei dati sul cloudNicolò Carandini
Lo spazio dei dati (3Vs): Volume, Velocità e Varietà
Il CAP theorem
Data Modeling
Data Platform Azure solutions
Big Data and ML Azure solutions
Cosmos DB
More Data Consistency options: Bounded staleness, Session, Consistent Prefix
Cosmos DB Security & Compliance
Quality Assurance with TLA+
A Case Study: Venice Time Machine
Azure Saturday Pordenone 2018 IoT real time processing for lazy developerAlessio Biasiutti
In this session I explained how to develop a IoT E2E solution writing as less code as possible. I designed the solution using Azure Event Hub, Azure Service Bus, Azure Logic Apps e Azure SQL Database
Programmazione web libera dai frameworkFrancesca1980
Un nuovo progetto web parte quasi sempre con la domanda "che framework usiamo?" Diamo per scontato che non si possa sviluppare per il web senza fare uso di framework. Ma che succederebbe se decidessimo di sviluppare senza framework? Potremmo ottenere maggiore controllo e qualità, meno rischi e meno costi. Serve "solo" la volontà di imparare a programmare bene. Darò alcune dritte con Java e TDD.
Structured Streaming è il modulo di Stream Processing costruito sul motore Spark SQL. In poche parole garantisce l'esecuzione di un messaggio esattamente una volta, è scalabile e fault-tolerant. È possibile definire le analisi stream nello stesso modo in cui si definirebbe un calcolo batch sui dati usando i Dataset/DataFrame API in Scala, Java, Python or R utilizzando l'engine SQL di Spark.
Durante la sessione vedremo un'overview delle funzionalità e un esempio di di come sia possibile eseguire l'ingestion dei dati con Event Hub (Kafka enabled) eseguire un'analisi con Spark e salvare i risultati su Cosmos DB.
Costruire un PoC IoT completo: gestione allarmi, device heartbeat, real-time e batch analysis e integrazione con Dynamics 365. L'intera soluzione sarà costruita utilizzando la piattaforma Cloud Microsoft (Stream Analytics, Logic Apps, SQL Database, Power BI, Dynamics 365).
Il tutto in 1 ora e come sempre scrivendo meno codice possibile!
Come costruire un PoC IoT completo: gestione allarmi, device heartbeat, real-time. L'intera soluzione sarà costruita utilizzando la piattaforma Cloud Microsoft (Stream Analytics, Logic Apps, SQL Database, Power BI, Dynamics 365).
Il tutto in 1 ora e come sempre scrivendo meno codice possibile!
Trovare ciò che serve nella confusione: comprendere i Big Data con l'analisi AWSAmazon Web Services
Ai giorno nostri, le informazioni sono una risorsa che deve ancora essere esplorata. Con l’evoluzione dei social media e della tecnologia, la raccolta di dati sta crescendo costantemente, raddoppiando ogni due anni poiché viene creato un numero sempre maggiore di flussi di dati. L’utente di Internet medio nel 2017 generava 1,5 GB di dati al giorno, un numero che raddoppia ogni 18 mesi. Un veicolo autonomo può generare da solo 4 TB al giorno. Ogni stabilimento di produzione "smart" genera 1PB al giorno. Tuttavia, il potenziale di utilizzo di questa abbondanza di dati deve ancora concretizzarsi, poiché sempre più compagnie e tecnologie di intelligenza artificiale stanno usando questi dati per fare scoperte e influenzare decisioni chiave. In questa sessione esamineremo lo stato attuale dei Big Data all'interno di AWS e analizzeremo in profondità gli ultimi trend in materia di Big Data, oltre che alcuni casi d'uso industriale. Scopriremo la gamma di servizi AWS per i dati gestiti che permettono ai clienti di concentrarsi sul rendere utili i dati, tra cui Amazon Aurora, RDS, DynamoDB, Redshift, Spectrum, ElastiCache, Kinesis, EMR, Elasticsearch Service e Gluehow. In questa sessione parleremo di questi servizi, mostrando come vengono utilizzati oggi dai nostri clienti e condivideremo la nostra visione per l’innovazione.
Speaker: Giorgio Nobile, Solutions Architect, AWS
Talk di Luca Lusso | Drupal Day Roma 2011
Snellire il carico del server per generare e restituire un json da usare per un autocompletamento. Notificare che un nodo è stato appena creato a tutti gli utenti che stanno visitando il sito in questo momento. Oppure ancora mettere a disposizione degli utenti una chat in tempo reale. Tutto questo (e molto altro) si può delegare ad un processo esterno a Drupal per aumentare velocità di interazione e diminuire il carico del server.
Durante il talk si vedrà come installare e usare node.js e come integrarlo con Drupal. Verrà mostrato il modulo nodejs presente nel repository di drupal.org
SQL Saturday 871 - Sardegna 2019 - SQL Server DR on AzureMarco Obinu
Slides presented at SQL Saturday 871, regarding DR technologies for SQL Server using Azure as a secondary datacenter. Slides includes demo videos on how to extend an existing SQL FCI to Azure with Basic Availabity Groups.
Demo scripts available at https://github.com/OmegaMadLab/FCI_and_AG
Full session recording available at https://www.youtube.com/watch?v=s8TmM-0E9sQ
Db2 11.1: l'evoluzione del Database secondo IBMJürgen Ambrosi
La gestione dei dati è indubbiamente un segmento chiave per la strategia IBM dei prossimi anni insieme con le tematiche Cognitive e Cloud. In tale ambito la gestione nelle basi dati è soggetta ad una evoluzione significativa verso la convergenza degli ambienti Analitici e Transazionali cosi da portare nei prossimi mesi ad una significativa semplificazione del disegno architetturale. A differenza dei tipici ambienti di business ove i processi transazionali ed analitici sono basati su distinte architetture, l'hybrid transactional analytical processin (HTAP) consentirà di eseguire analisi e transazioni sullo stesso Database senza impattare le prestazioni di tali ambienti. L'obiettivo di tale disegno strategico è abilitare i nostri clienti ad estrarre più valore dai propri dati, fornendo strumenti di analisi dati real-time nel punto esatto di generazione dei dati stessi.
2014.11.14 Implementare e mantenere un progetto Azure SQL DatabaseEmanuele Zanchettin
Questa sessione affronta come implementare, mantenere e far evolvere soluzioni sviluppate su Azure SQL Database, attraverso l’utilizzo degli strumenti SQL Sever Management Studio e Visual Studio. Attraverso esempi e casi reali, saranno illustrate la versatilità, potenza e affidabilità del database come servizio nel cloud.
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBSteve Maraspin
Pirma parte del seminario su NoSQL al DiTeDi di Udine del 15/12/2012. Affrontato il caso di studio di un'architettura enterprise, basata su datastore relazionali (PostgreSQL) e non (CouchDB, MongoDB, Redis e OrientDB).
Despite the word "DevOps" has been made recently, I've been one of the lucky ones who could work in the way this culture suggests, since 20 years. At that time, no Powershell was available, there was poor internet connection (at least in Italy), there weren't any tools for automation. Anyways my team have understood that mindset before it became mainstream. During my professional experience, I've gathered many scenarios in different businesses and I've learned many lessons. Straight to the point, the problem is focused on "change ourselves". In this session we will try to reply to the following questions:
As a legacy DBA, how to change our way of work? How to forget the bad habits? How to take advantage from our experience and awareness? Just my two cents. Hopefully interesting.
In un mondo in cui il termine smart è ovunque e la coppia smart-working è abusata, meglio concentrarsi sul vero significato del termine. Autonomia, responsabilità, fiducia e flessibilità, unitamente a strumenti tecnologici a supporto.
More Related Content
Similar to Sql saturday parma 2017 (#sqlsat675) - Deep space Cosmos DB
Programmazione web libera dai frameworkFrancesca1980
Un nuovo progetto web parte quasi sempre con la domanda "che framework usiamo?" Diamo per scontato che non si possa sviluppare per il web senza fare uso di framework. Ma che succederebbe se decidessimo di sviluppare senza framework? Potremmo ottenere maggiore controllo e qualità, meno rischi e meno costi. Serve "solo" la volontà di imparare a programmare bene. Darò alcune dritte con Java e TDD.
Structured Streaming è il modulo di Stream Processing costruito sul motore Spark SQL. In poche parole garantisce l'esecuzione di un messaggio esattamente una volta, è scalabile e fault-tolerant. È possibile definire le analisi stream nello stesso modo in cui si definirebbe un calcolo batch sui dati usando i Dataset/DataFrame API in Scala, Java, Python or R utilizzando l'engine SQL di Spark.
Durante la sessione vedremo un'overview delle funzionalità e un esempio di di come sia possibile eseguire l'ingestion dei dati con Event Hub (Kafka enabled) eseguire un'analisi con Spark e salvare i risultati su Cosmos DB.
Costruire un PoC IoT completo: gestione allarmi, device heartbeat, real-time e batch analysis e integrazione con Dynamics 365. L'intera soluzione sarà costruita utilizzando la piattaforma Cloud Microsoft (Stream Analytics, Logic Apps, SQL Database, Power BI, Dynamics 365).
Il tutto in 1 ora e come sempre scrivendo meno codice possibile!
Come costruire un PoC IoT completo: gestione allarmi, device heartbeat, real-time. L'intera soluzione sarà costruita utilizzando la piattaforma Cloud Microsoft (Stream Analytics, Logic Apps, SQL Database, Power BI, Dynamics 365).
Il tutto in 1 ora e come sempre scrivendo meno codice possibile!
Trovare ciò che serve nella confusione: comprendere i Big Data con l'analisi AWSAmazon Web Services
Ai giorno nostri, le informazioni sono una risorsa che deve ancora essere esplorata. Con l’evoluzione dei social media e della tecnologia, la raccolta di dati sta crescendo costantemente, raddoppiando ogni due anni poiché viene creato un numero sempre maggiore di flussi di dati. L’utente di Internet medio nel 2017 generava 1,5 GB di dati al giorno, un numero che raddoppia ogni 18 mesi. Un veicolo autonomo può generare da solo 4 TB al giorno. Ogni stabilimento di produzione "smart" genera 1PB al giorno. Tuttavia, il potenziale di utilizzo di questa abbondanza di dati deve ancora concretizzarsi, poiché sempre più compagnie e tecnologie di intelligenza artificiale stanno usando questi dati per fare scoperte e influenzare decisioni chiave. In questa sessione esamineremo lo stato attuale dei Big Data all'interno di AWS e analizzeremo in profondità gli ultimi trend in materia di Big Data, oltre che alcuni casi d'uso industriale. Scopriremo la gamma di servizi AWS per i dati gestiti che permettono ai clienti di concentrarsi sul rendere utili i dati, tra cui Amazon Aurora, RDS, DynamoDB, Redshift, Spectrum, ElastiCache, Kinesis, EMR, Elasticsearch Service e Gluehow. In questa sessione parleremo di questi servizi, mostrando come vengono utilizzati oggi dai nostri clienti e condivideremo la nostra visione per l’innovazione.
Speaker: Giorgio Nobile, Solutions Architect, AWS
Talk di Luca Lusso | Drupal Day Roma 2011
Snellire il carico del server per generare e restituire un json da usare per un autocompletamento. Notificare che un nodo è stato appena creato a tutti gli utenti che stanno visitando il sito in questo momento. Oppure ancora mettere a disposizione degli utenti una chat in tempo reale. Tutto questo (e molto altro) si può delegare ad un processo esterno a Drupal per aumentare velocità di interazione e diminuire il carico del server.
Durante il talk si vedrà come installare e usare node.js e come integrarlo con Drupal. Verrà mostrato il modulo nodejs presente nel repository di drupal.org
SQL Saturday 871 - Sardegna 2019 - SQL Server DR on AzureMarco Obinu
Slides presented at SQL Saturday 871, regarding DR technologies for SQL Server using Azure as a secondary datacenter. Slides includes demo videos on how to extend an existing SQL FCI to Azure with Basic Availabity Groups.
Demo scripts available at https://github.com/OmegaMadLab/FCI_and_AG
Full session recording available at https://www.youtube.com/watch?v=s8TmM-0E9sQ
Db2 11.1: l'evoluzione del Database secondo IBMJürgen Ambrosi
La gestione dei dati è indubbiamente un segmento chiave per la strategia IBM dei prossimi anni insieme con le tematiche Cognitive e Cloud. In tale ambito la gestione nelle basi dati è soggetta ad una evoluzione significativa verso la convergenza degli ambienti Analitici e Transazionali cosi da portare nei prossimi mesi ad una significativa semplificazione del disegno architetturale. A differenza dei tipici ambienti di business ove i processi transazionali ed analitici sono basati su distinte architetture, l'hybrid transactional analytical processin (HTAP) consentirà di eseguire analisi e transazioni sullo stesso Database senza impattare le prestazioni di tali ambienti. L'obiettivo di tale disegno strategico è abilitare i nostri clienti ad estrarre più valore dai propri dati, fornendo strumenti di analisi dati real-time nel punto esatto di generazione dei dati stessi.
2014.11.14 Implementare e mantenere un progetto Azure SQL DatabaseEmanuele Zanchettin
Questa sessione affronta come implementare, mantenere e far evolvere soluzioni sviluppate su Azure SQL Database, attraverso l’utilizzo degli strumenti SQL Sever Management Studio e Visual Studio. Attraverso esempi e casi reali, saranno illustrate la versatilità, potenza e affidabilità del database come servizio nel cloud.
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBSteve Maraspin
Pirma parte del seminario su NoSQL al DiTeDi di Udine del 15/12/2012. Affrontato il caso di studio di un'architettura enterprise, basata su datastore relazionali (PostgreSQL) e non (CouchDB, MongoDB, Redis e OrientDB).
Similar to Sql saturday parma 2017 (#sqlsat675) - Deep space Cosmos DB (20)
Despite the word "DevOps" has been made recently, I've been one of the lucky ones who could work in the way this culture suggests, since 20 years. At that time, no Powershell was available, there was poor internet connection (at least in Italy), there weren't any tools for automation. Anyways my team have understood that mindset before it became mainstream. During my professional experience, I've gathered many scenarios in different businesses and I've learned many lessons. Straight to the point, the problem is focused on "change ourselves". In this session we will try to reply to the following questions:
As a legacy DBA, how to change our way of work? How to forget the bad habits? How to take advantage from our experience and awareness? Just my two cents. Hopefully interesting.
In un mondo in cui il termine smart è ovunque e la coppia smart-working è abusata, meglio concentrarsi sul vero significato del termine. Autonomia, responsabilità, fiducia e flessibilità, unitamente a strumenti tecnologici a supporto.
Sql Wars - SQL the attack of the Clones and the rebellion of the Containers Alessandro Alpi
How to solve three of he most tricky problems:
- isolating and repeating tests on production data without affecting production databases
- debug and resolve bugs using production-like databases
- review deploy scripts before executing them in production databases
It's a matter of Provisioning
Presentazione su HomeGen (CloudGen): utilizzo di Cloni e Container per l'automazione dei processi DevOps SQL Server. Utilizzo di VS Code e Azure DevOps.
Doaw2020 - Dalla produzione alla QA, provisioning su SQL ServerAlessandro Alpi
In questa sessione vedremo come portare i dati in ambienti QA direttamente dalla produzione, evitando ogni problema conosciuto ad oggi: spazio, tempo, numero di copie, isolamento e via discorrendo. Un annoso problema che può essere finalmente risolto con pochi click.
Wpc2019 - Distruggere DevOps, la storia di un vero teamAlessandro Alpi
Consigli per evitare la distruzione della migrazione culturale verso DevOps. Vedremo un team con "attori" importanti provare a migrare verso buone pratiche e capiremo quanto è difficile arrivare, ma semplice distruggere tutto.
Sql start!2019 Migliorare la produttività per lo sviluppo su SQL ServerAlessandro Alpi
SQL Server non è un mondo, è un universo ricco di funzionalità, architetture e tecnologie. Può spaventare e può essere difficile muoversi al suo interno con la necessaria fluidità. In questa sessione vedremo quali plugin e strumenti sono disponibili per velocizzare lo sviluppo su SQL Server, da Visual Studio Code a Management Studio, da SQL Operations Studio ai tool di RedGate. Migliorare gestione e scrittura di codice, con un occhio di riguardo alla condivisione e al team working, in un mondo in cui DevOps la fa da padrone.
Configuration e change management con Disciplined Agile FrameworkAlessandro Alpi
How to manage changes and configuration management using the Disciplined Agile Framework for DevOps (classic and prescriptive vs automated and iterative solutions). Software Configuration Management (SCM) summit: http://www.snescm.org/Common/Italian-chapter/Summits/2018/index.html
In questa sessione parleremo delle peggiori pratiche da seguire per infrangere ogni nostro sogno di realizzazione di DevOps. Peggiori e molto comuni e, proprio per questo, estremamente pericolose. Dal non rispettare i principi, al fare eccessive personalizzazioni, fino all'estremizzare tutte le buone pratiche. Non serve chissà cosa, e la tentazione è dietro l'angolo.
Automatizzare il processo di link dei database con redgate source controlAlessandro Alpi
Per chi è abituato a lavorare in ambienti molto distribuiti, casi in cui i database sono molteplici, e per chi usa Red Gate Source Control con VSTS (git o TFS), può diventare oneroso effettuare numerose operazioni manuali di collegamento. Tramite PowerShell, è possibile consumare le API del RedGate DLM Automation tool per velocizzare il processo di link dei nostri database. Alla base di DevOps ci sono infatti i concetti di ripetibilità e automatizzazione. Questo è quello che nel nostro team ci ha portato a ridurre l'errore umano all'osso e a velocizzare il provisioning delle nostre soluzioni distribuite.
Sql Saturday a Pordenone - Sql Server journey, da dev a opsAlessandro Alpi
DevOps e SQL Server, l'importanza di automatizzare i processi ripetibili, collaborare, condividere ed integrarsi per velocizzare e rendere più affidabile i nostri processi di deploy per il database.
PASS Virtual Chapter - SQL Server Continuous IntegrationAlessandro Alpi
Build automatizzate, esecuzione di unit test, creazione di un pacchetto nuget, ecco cosa serve per essere pronti con SQL Server e la continuous integration
PASS Virtual Chapter - SQL Server Continuous DeploymentAlessandro Alpi
Dopo aver visto come effettuare la continuous integration terminiamo il ciclo di vita del nostro database effettuandone il deploy, includendo concetti come DevOps e automazione dei processi
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...Alessandro Alpi
In questa serie di slide vedremo come creare i build step su Visual Studio Team Services sfruttando gli add-on forniti da Red Gate, come DLM Automation 2: Build.
PASS Virtual Chapter - Unit Testing su SQL ServerAlessandro Alpi
Con quanto segue andremo ad approfondire il concetto di unit test e, nella fattispecie, del testing tramite il framework free tSQLt, utilizzando t-sql e SQL Server Management Studio.
#DOAW16 - DevOps@work Roma 2016 - Testing your databasesAlessandro Alpi
In these slides we will speak about how to unit test our programmability in SQL Server and how to move from a manual process to an automated one in order to achieve the goals of DevOps
#DOAW16 - DevOps@work Roma 2016 - Databases under source controlAlessandro Alpi
In these slides we will speak about how we can put our databases under source control. What are the type of source control models and links, and, last but not least, how to move from a manual process to an automated one, in order to achieve the goals of DevOps
SQL Server 2016 porterà tantissime novità, tra cui, per quanto riguarda la programmabilità, il supporto al formato JSON. vedremo com'è possibile serializzare i risultati delle nostre query tramite la clausola FOR JSON, inclusa negli ultimi rilasci della piattaforma.
In this presentation we'll learn about the native JSON support in SQL Server 2016. We will speak about Import/Export features, storage considerations and advantages/limitations on using this format in SQL Server.
5. #SqlSat675 – 18/11/2017
C’era una volta…
2010
Ex ”Project Florence”
Nasce per applicazioni onerose all’interno di Microsoft
Perché non esporle? Risposta: DocumentDB (pubblico)
2017
Da DocumentDB a Azure Cosmos DB!
7. #SqlSat675 – 18/11/2017
Caratteristiche
Servizio database su Azure (PaaS)
Storage basato su Atom-record-sequence (ARS)
A – Atom, piccoli set di tipi primitivi (numeri, stringhe, bool)
R – Record, strutture fatte di Atom
S – Sequenze, array di Atom, record o sequenze stesse
Trasformazione implicita del dato su ARS
Core data model rappresentabile in JSON
8. #SqlSat675 – 18/11/2017
Resource Model
Un account database, più database Cosmos DB
Un database Cosmos DB, più user, permission e container
Un container, più item (entità e procedure, trigger, udf)
9. #SqlSat675 – 18/11/2017
Resource Model
Ogni risorsa è navigabile tramite hyperlink
In base alla API, container e item si specializzano:
DocumentDB e MongoDB -> Collection -> Document
Azure Table Storage -> Table -> Row
Gremlin -> Graph -> Node / Edge
12. #SqlSat675 – 18/11/2017
Indicizzazione
Di default gli indici sono allineati in sincrono
Possibile aggiornarli in ”differita” (aumento velocità)
Possibile cambiare il comportamento per alcune raccolte
Per sistemi bulk/elevato numero di letture
Preferire l’aggiornamento in “differita”
13. #SqlSat675 – 18/11/2017
Partizionamento orizzontale
Informazioni partizionate in contenitori (illimitati)
Chiavi di partizione
Partition (replica set)
Partition set
GLOBAL
DISTRIBUTION
LOCAL
DISTRIBUTION
14. #SqlSat675 – 18/11/2017
Distribuzione globale, subito
Distribuzione globale turnkey (chiavi in mano)
Automatica, su più region
Gestione dinamica region
Replica automatica
Geo-fencing
Priorità di failover
Failover auto o manuale
Backup (4 ore) automatici
18. #SqlSat675 – 18/11/2017
Consistenza
Livelli disponibili
Strong (Assoluta) – Solo una region, più severa
Bounded-Staleness (Obsolescenza limitata) – Ritardi in numero di versioni
dell’elemento o tempo, più region
Session (Sessione) – Ambito sessione cliente, più region
Consistency-Prefix (Prefisso coerente) – Repliche convergenti, ordine
garantito, più region
Eventual (Finale) – Letture obsolete, più region, meno severo
19. #SqlSat675 – 18/11/2017
Coerenza
Impostazione del livello di coerenza
Per account Cosmos DB
Personalizzabile per richiesta
Garanzia di coerenza, controllo violazioni
Controllo di linearità
Metrica probabilistica di obsolescenza limitata
22. #SqlSat675 – 18/11/2017
Sicurezza – dati
Chiavi gestite da MS (dal portale di Azure)
Chiavi master read/write (auth)
Chiavi master read only
Token di risorsa database
Ritornati se ad un utente si assegnano autorizzazioni a risorse
Crittografia dei “Data in motion” e “in use” (inviati, live)
Crittografia anche dei “Data at rest” (archiviati)
Nessun costo aggiuntivo per la crittografia dati
23. #SqlSat675 – 18/11/2017
Compliance
Azure Cosmos DB ha le certificazioni
ISO 27001
Supporta le clausole del modello dell'Unione Europea
HIPAA
Altre certificazioni presto disponibili
25. #SqlSat675 – 18/11/2017
TTL – raccolte
Si usa la proprietà DefaultTimeToLive
Se null, disabilitata (default)
Se –1, nessuna scadenza per la raccolta di documenti
Se > 0, tempo in secondi oltre i quali i documenti scadono
Eliminazione automatica, documenti non più raggiungibili
Nessun costo aggiuntivo di RU
26. #SqlSat675 – 18/11/2017
TTL – documenti
Possibile solo se la raccolta ha un TTL (non null)
Esegue l’override della proprietà della raccolta
//Add a prop that serializes to "ttl" in JSON
public class Item
{
//...
[JsonProperty(PropertyName = "ttl")]
public int? TimeToLive { get; set; }
}
//Set the value to the expiration in seconds
var item = new Item { TimeToLive = 60 * 60 *
24 * 30;};
var coll = new DocumentCollection();
coll.Id = "orders";
coll.PartitionKey.Paths.Add("/id");
// expire all documents after 90 days
coll.DefaultTimeToLive = 90 * 60 * 60 * 24;
var ttl = await
client.CreateDocumentCollectionAsync(
"/dbs/mydb", coll, new RequestOptions
{ OfferThroughput = 20000 });
28. #SqlSat675 – 18/11/2017
Unità richiesta
Un solo modo di misurare, unità richiesta (RU)
1 RU = get 1 elemento di 1k con 10 proprietà univoche
Ogni diversa operazione “spende” e addebita RU
Multipli di 100 RU/sec o 1000 RU/min
Se >2500 RU, necessaria una chiave di partizionamento
Le RU addebitate sono quelle riservate
È possibile cambiare le RU col cambio del carico
30. #SqlSat675 – 18/11/2017
Throughput
Cosmos DB ripartiziona/ribilancia i dati
Automaticamente, sulla base delle RU di provisioning
Quando si configurano nuove RU dal portale o via SDK
//Throughput while provisioning
var myCollection = new
DocumentCollection();
myCollection.Id = "coll";
//Set the artition key
myCollection.PartitionKey.Paths.Add("/id");
await client.CreateDocumentCollectionAsync(
UriFactory.CreateDatabaseUri("db"),
myCollection,
new RequestOptions
{ OfferThroughput = 3000 });
//Fetch the resource to be updated
var offer = client.CreateOfferQuery()
.Where(r => r.ResourceLink ==
coll.SelfLink)
.AsEnumerable().SingleOrDefault();
//Set the throughput to 5000 ru/s
offer = new OfferV2(offer, 5000);
//Persist the changes
await client.ReplaceOfferAsync(offer);
31. #SqlSat675 – 18/11/2017
Throughput
Al fine di ottimizzare i costi, valutare:
Le dimensioni dell'elemento
Il numero di proprietà dell'elemento
La coerenza dei dati
Le proprietà indicizzate
La indicizzazione dei documenti
I modelli di query e relativa complessità
L’utilizzo di script (stored procedure e trigger)
33. #SqlSat675 – 18/11/2017
Throughput
Superamento della velocità:
Blocco preventivo fino a ritorno a “regime”
RequestRateTooLargeException (HTTP status code 429)
x-ms-retry-after-ms per il tempo da attendere prima di chiamare
Più client, retry insufficiente, DocumentClientException
Per l’API di MongoDB, Too Many Requests (16500)
36. #SqlSat675 – 18/11/2017
IOT
IoT Hub immagazzina dati dai
sensori delle vetture
Analisi real-time per le
diagnostiche sulla vettura
Nessuna perdita di velocità ed
elastic scale
Dati affinati con HDInsight
41. #SqlSat675 – 18/11/2017
Ed io, che avevo un account DocumentDB?
Nessun problema!
Migrazione as is, trasparente, app invariata
API DocumentDB sempre disponibile
Nessuna perdita di dati e/o cambio di configurazione
Miglioramento del portale
Costi identici
SLA identica
42. #SqlSat675 – 18/11/2017
E la programmabilità?
Se si usa l’API di DocumentDB:
Stored procedure
Udf
Trigger
Disponibili in:
Node.js|JavaScript
.Net|.Net Core
Python
43. #SqlSat675 – 18/11/2017
Consigli
Determinare chiavi di partizionamento efficaci (da subito)
Evitare la stessa chiave per tutti gli elementi
Evitare una chiave diversa per ogni elemento (univoca)
Chiave corretta = miglior compromesso tra query efficienti e
scalabilità della soluzione
Evitare aggiornamenti di proprietà nella stessa partizione
L’accesso alla singola partizione risulterebbe limitato
45. #SqlSat675 – 18/11/2017
Conclusioni
Un sistema così, consente al cliente di
Configurare elasticamente storage e throughput
Scrivere correttamente applicazioni su database distribuiti
Avere un sistema “Always On”
Slegare il dev dallo schema del database (indici compresi)
Sfruttare sempre più API per l’accesso
Ridurre i costi e fornire una SLA comprensiva e semplice
46. #SqlSat675 – 18/11/2017
Risorse
Partizionamento - https://docs.microsoft.com/it-it/azure/cosmos-db/partition-data
Costi (calcolatore) - https://azure.microsoft.com/it-it/pricing/details/cosmos-db/
Throughput (calcolatore) - https://www.documentdb.com/capacityplanner
Controllo linearità - http://dl.acm.org/citation.cfm?id=1806634
Articolo Daniel J. Abadi sulla coerenza - http://cs-www.cs.yale.edu/homes/dna/papers/abadi-
pacelc.pdf
FAQ - https://docs.microsoft.com/it-it/azure/cosmos-db/faq
Costo totale di proprietà - https://aka.ms/documentdb-tco-paper
20 tips: https://docs.microsoft.com/it-it/azure/cosmos-db/20-days-of-tips
Esempi di codice: https://azure.microsoft.com/en-us/resources/samples/?service=cosmos-db
Query playground: https://www.documentdb.com/sql/demo
Azure Cosmos DB started as “Project Florence” in 2010 to address developer pain-points faced by large scale applications inside Microsoft. Observing that the challenges of building globally distributed apps are not a problem unique to Microsoft, in 2015 we made the first generation of this technology available to Azure developers in the form of Azure DocumentDB. Since that time, we’ve added new features and introduced significant new capabilities. Azure Cosmos DB is the result. It is the next big leap in globally distributed, at scale, cloud databases. As a part of this release of Azure Cosmos DB, DocumentDB customers, with their data, are automatically Azure Cosmos DB customers. The transition is seamless and they now have access to the new breakthrough system and capabilities offered by Azure Cosmos DB.
In the evolution of Cosmos DB, we have added significant new capabilities since 2015 (when DocumentDB was made generally available) but only a subset of these capabilities was available in DocumentDB. These capabilities are in the areas of the core database engine as well as, global distribution, elastic scalability and industry-leading, comprehensive SLAs. Specifically, we have evolved the Cosmos DB database engine to be able to efficiently map all popular data models, type systems and APIs to the underlying data model of Cosmos DB. The developer facing manifestation of this work currently will experience it via support for Gremlin and Table Storage APIs. And this is just the beginning… We will be adding other popular APIs and newer data models over time with more advances towards performance and storage at global scale.
We also have extended the foundation for global and elastic scalability of throughput and storage. One of the very first manifestations of it is the RU/m (https://docs.microsoft.com/en-us/azure/cosmos-db/request-units-per-minute) but we have more capabilities that we will be announcing in these areas. The new capabilities will help save cost for our customers for various workloads. We have made several foundational enhancements to the global distribution subsystem. One of the many developer facing manifestations of this work is the consistent prefix consistency model (making in total 5 well-defined consistency models). However, there are many more interesting capabilities we will release as they mature.
It is important to point out that we view Azure Cosmos DB as a constantly evolving database service. Typically, we first validate all new capabilities with the large scale applications inside Microsoft, subsequently expose them to key external customers, and finally, release them to the world.
It is also important to point out that DocumentDB’s SQL dialect has always been just one of the many APIs that the underlying Cosmos DB was capable of supporting. As a developer using a fully managed service like Cosmos DB, the only interface to the service is the APIs exposed by the service. To that end, nothing really changes for a DocumentDB customer. Cosmos DB offers the exactly the same SQL API that DocumentDB did. However, now (and in the future) you can get access to other capabilities which were previously not accessible.
Each resource is uniquely identified by a stable and logical URI and represented as a JSON document. The overall resource model of an application using Azure Cosmos DB is a hierarchical overlay of the resources rooted under the database account, and can be navigated using hyperlinks. With the exception of the item resource - which is used to represent arbitrary user defined content, all other resources have a system-defined schema. The content model of the item resource is based on atom-record-sequence (ARS) described earlier.
Si esegue il provisioning di un contenitore Cosmos DB con velocità effettiva di T richieste/s
In background Cosmos DB effettua il provisioning delle partizioni necessarie per gestire T richieste/s. Se T è maggiore della velocità effettiva massima per partizione t, Cosmos DB esegue il provisioning di N = T/t partizioni
Cosmos DB alloca lo spazio degli hash delle chiavi di partizione in modo uniforme tra le N partizioni. Ogni partizione fisica ospita quindi 1-N valori di chiave di partizione (partizioni logiche)
Quando una partizione fisica p raggiunge il limite di archiviazione, Cosmos DB suddivide p in due nuove partizioni p1 e p2 e distribuisce i valori corrispondenti a circa la metà di chiavi per ciascuna delle partizioni. Questa operazione di suddivisione è invisibile all'applicazione.
Analogamente, quando si esegue il provisioning di una velocità effettiva superiore alla velocità effettiva t*N, Cosmos DB suddivide una o più delle partizioni per supportare la velocità effettiva maggiore
Oltre ai failover automatici, è possibile modificare manualmente l'area di scrittura corrente di un determinato account Cosmos DB in modo dinamico in una delle aree di lettura esistenti. I failover manuali possono essere avviati tramite il portale di Azure o a livello di codice.
I failover manuali assicurano una perdita di dati pari a zero e nessuna perdita di disponibilità e trasferiscono correttamente lo stato di scrittura dalla vecchia alla nuova area di scrittura per l'account Cosmos DB specificato. Come nei failover automatici, durante i failover manuali Cosmos DB SDK gestisce automaticamente le modifiche dell'area di scrittura e garantisce che le chiamate vengano reindirizzate automaticamente alla nuova area di scrittura. La gestione dei failover non richiede alcuna modifica del codice o della configurazione dell'applicazione.
Assoluta:
la coerenza assoluta offre una garanzia di linearità ovvero la garanzia che le letture restituiscano la versione più recente di un elemento.
la coerenza assoluta garantisce che una scrittura sia visibile solo dopo che ne è stato eseguito il commit in modo permanente dal quorum di maggioranza delle repliche. Una scrittura può ottenere o il commit sincrono e permanente da parte della replica primaria e della maggioranza delle repliche secondarie o l'interruzione. Una lettura viene sempre confermata dalla quorum di maggioranza per le letture: un client non potrà mai vedere una scrittura parziale o di cui non sia stato eseguito il commit e leggerà sempre la più recente scrittura confermata.
Gli account Azure Cosmos DB configurati per usare la coerenza assoluta non possono associare più di un'area di Azure con il loro account Azure Cosmos DB.
Il costo di un'operazione di lettura (in termini di unità richiesta consumate) con il livello di coerenza assoluta è più alto rispetto ai livelli sessione e finale, ma uguale a quello del livello con obsolescenza associata.
Obsolescenza limitata:
La coerenza con obsolescenza limitata garantisce che il ritardo delle letture sulle scritture sia al massimo pari a K versioni o prefissi di un elemento o all'intervallo di tempo t.
Pertanto, quando si sceglie il decadimento ristretto, il "decadimento" può essere configurato in due modi: numero di versioni K dell'elemento del ritardo delle operazioni di lettura sulle operazioni di scrittura e l'intervallo di tempo t
Il decadimento ristretto offre un ordine globale totale tranne all'interno della "finestra di decadimento". La garanzia di lettura monotona esiste in un'area sia all'interno che all'esterno della "finestra di decadimento".
L'obsolescenza associata offre una maggiore garanzia di coerenza rispetto alla coerenza di sessione o finale. Per le applicazioni distribuite a livello globale, è consigliabile usare l'obsolescenza associata per gli scenari in cui si desidera una coerenza assoluta ma si desidera anche il 99,99% di disponibilità e bassa latenza.
Gli account Azure Cosmos DB configurati con la coerenza con decadimento ristretto possono associare qualsiasi numero di aree di Azure con il proprio account Azure Cosmos DB.
Il costo di un'operazione di lettura (in termini di unità richiesta consumate) con l'obsolescenza associata è più alto rispetto ai livelli sessione e finale, ma uguale a quello del livello assoluto.
Sessione:
a differenza dei modelli di coerenza globale offerti dai livelli di coerenza assoluta e con obsolescenza associata, la coerenza di "sessione" ha come ambito una sessione del client.
La coerenza di sessione è ideale per tutti gli scenari in cui è coinvolto un dispositivo o una sessione utente poiché garantisce letture monotone, scritture monotone e garanzie di lettura di ciò che si scrive (RYW).
La coerenza di sessione offre una coerenza prevedibile per una sessione e la massima velocità di scrittura, con latenza minima per scrittura e lettura.
Gli account Azure Cosmos DB configurati con la coerenza sessione possono associare qualsiasi numero di aree di Azure con il proprio account Azure Cosmos DB.
Il costo di un'operazione di lettura (in termini di unità richiesta consumate) con il livello di coerenza di sessione è minore rispetto ai livelli assoluto e con obsolescenza associata, ma maggiore rispetto al livello finale
Prefisso consistente:
il prefisso coerente garantisce che, in assenza di altre operazioni di scrittura, alla fine le repliche convergeranno all'interno del gruppo.
Il prefisso coerente garantisce che le operazioni di lettura non vedano mai il fuori sequenza delle operazioni di scrittura. Se queste sono state eseguite nell'ordine A, B, C, il client vede A, A,B o A,B,C, ma mai il fuori sequenza ad esempio A,C o B,A,C.
Gli account Azure Cosmos DB configurati con la coerenza con prefisso coerente possono associare qualsiasi numero di aree di Azure con il proprio account Azure Cosmos DB.
Finale:
la coerenza finale garantisce che, in assenza di altre scritture, alla fine le repliche all'interno del gruppo convergeranno.
La coerenza finale è la forma più debole di coerenza, in cui un client può ottenere nel tempo valori obsoleti rispetto a quelli già visualizzati in passato.
La coerenza finale rappresenta il livello più debole, ma offre la latenza più bassa sia per le letture sia le per scritture.
Gli account Azure Cosmos DB configurati con la coerenza finale possono associare qualsiasi numero di aree di Azure con il proprio account Azure Cosmos DB.
Il costo di un'operazione di lettura, in termini di unità richieste consumate, con il livello di coerenza finale è il più basso fra tutti i livelli di coerenza di Azure Cosmos DB.