SlideShare a Scribd company logo
1 of 34
#sqlsatParma
#sqlsat462November 28°, 2015
SQL Server 2016: supporto nativo JSON
Alessandro Alpi
@suxstellino
www.alessandroalpi.net
http://speakerscore.com/SQL16JSON
#sqlsatParma
#sqlsat462November 28°, 2015
Sponsors
#sqlsatParma
#sqlsat462November 28°, 2015
Organizers
getlatestversion.it
#sqlsatParma
#sqlsat462November 28°, 2015
Alessandro Alpi | @suxstellino
Blog ITA: http://blogs.dotnethell.it/suxstellino
Blog ENG: http://suxstellino.wordpress.com/
Website: http://www.alessandroalpi.net
www.engageitservices.it
Team leader (SCRUM)
Getlatestversion.it
#sqlsatParma
#sqlsat462November 28°, 2015
Premessa
Da CTP 2, ora CTP 3
Soggetto a cambiamenti
Feature che devono “maturare” (V1)
#sqlsatParma
#sqlsat462November 28°, 2015
Agenda
Definizioni
JSON vs XML
Caratteristiche
Funzionalità di export
Funzionalità di import
Indicizzazione
Limitazioni
#sqlsatParma
#sqlsat462November 28°, 2015
Supporto per il formato JSON nativo
Dalla CTP 2
Prima di 2016, T-SQL complesso e CPU intensive
Anche in tabelle In-Memory OLTP
Non è un tipo di dato come XML
È una stringa, si gestisce con (n)varchar()
Parser nativo al momento dell’esecuzione della query
Per ora, qualora richiesto, proporre su CONNECT 
#sqlsatParma
#sqlsat462November 28°, 2015
JSON – Funzionalità chiave
Relational data – tables
Non-relational data – JSON, XML
#sqlsatParma
#sqlsat462November 28°, 2015
JSON – concetti
Acronimo di JavaScript Object Notation
Basato su JavaScript, ma indipendente
Tipi di dato comuni: bool, int, real, string, array, null
Stringa, non markup
Esempio:
{
“first”: “Alessandro”,
“last”: “Alpi”
“age”: “34”,
“courses”: [
{“code”: “C001”, “name”: “SQL Server Querying”},
{“code”: “C002”, “name”: “Administering SQL Server”},
{“code”: “C003”, “name”: “Troubleshooting SQL Server”},
]
}
#sqlsatParma
#sqlsat462November 28°, 2015
JSON – concetti
Estremamente leggero e semplice
Perfetto per la rappresentazione dei dati
Leggibile ed autodescrittivo/Portabile (può sostituire XML)
Ottimo per AJAX/Javascript
“ per “name” e “value”
: per “name”:”value”
Special char rappresentati con escape (r, t, ecc.)
{ } object (graffe)
[ , ] array (quadre)
[ { }, { } ] array di object
#sqlsatParma
#sqlsat462November 28°, 2015
Formato
nvarchar, varchar, nchar, char -> string
int, bigint, float, decimal, numeric -> number
bit -> Boolean (true, false)
datetime, date, datetime2, time, datetimeoffset -> string
Uniqueidentifier, money, binary -> string e BASE64 string
#sqlsatParma
#sqlsat462November 28°, 2015
JSON vs XML
Formato leggero
Text based
Parser integrato query
Processing
JsonPath/T-SQL
Indici “normali”
Funzionalità molteplici
Tipizzazione forte
Parser DOM
Processing
XPath/XQuery/T-SQL
Indici XML dedicati
#sqlsatParma
#sqlsat462November 28°, 2015
SQL Server vs DocumentDB
Motore ibrido
Tabelle e JSON string
Funzionalità generiche
Query Processing
T-SQL completo
Indici “normali”
Supporto alle collation
Motore JSON
Solo e specializzato per JSON
Ottimizzato per le scritture
Processing
SQL per DocumentDB
Indici “automatici”
#sqlsatParma
#sqlsat462November 28°, 2015
Integrazione con servizi esterni
#sqlsatParma
#sqlsat462November 28°, 2015
Funzionalità
FOR JSON
OPENJSON
ISJSON (anche DDL)
JSON_VALUE (anche DDL)
JSON_QUERY
Denormalizzazione
#sqlsatParma
#sqlsat462November 28°, 2015
Funzionalità di export
PATH
FOR JSON PATH
AUTO
FOR JSON AUTO
Opzione ROOT
FOR JSON AUTO, ROOT('info')
Opzione INCLUDE_NULL_VALUES
FOR JSON AUTO, INCLUDE_NULL_VALUES
[
{
"Number":"SO43659",
"Date":"2011-05-31T00:00:00"
"AccountNumber":"AW29825",
"Price":59.99,
"Quantity":1
},
{
"Number":"SO43661",
"Date":"2011-06-01T00:00:00“
"AccountNumber":"AW73565“,
"Price":24.99,
"Quantity":3
}
]
SELECT * FROM myTable
FOR JSON AUTO
#sqlsatParma
#sqlsat462November 28°, 2015
FOR JSON PATH
Senza FROM: singoli oggetti JSON
Con FROM: array di oggetti JSON
Ogni colonna di un record è una proprietà sul JSON
Alias con “.” come separatore per profondità
Subquery per sotto-oggetti JSON
#sqlsatParma
#sqlsat462November 28°, 2015
FOR JSON AUTO
Render basato su ordine di colonne/tabelle
Disponibile solo con FROM
Render immodificabile
Ogni colonna è una proprietà sul JSON
In caso di JOIN, la prima tabella è root, la seconda è nested
Subquery
#sqlsatParma
#sqlsat462November 28°, 2015
cmd = (queryWithForJson, conn);
conn.Open();
jsonResult = ();
reader = cmd.ExecuteReader();
(!reader.HasRows())
jsonResult.Append( );
{
reader.Read()
{
jsonResult.Append(reader.GetValue(0).ToString());
}
}
Empty JSON
Append rows
#sqlsatParma
#sqlsat462November 28°, 2015
DEMO
#sqlsatParma
#sqlsat462November 28°, 2015
Funzionalità di import
TVF OPENJSON()
Consente un filtro
Sintassi JS ($.Collezione.Proprietà)
… FROM OPENJSON (@JSalestOrderDetails,
'$.OrdersArray') WITH (definition);
Caricare in tabella
Analizzare colonne
SELECT * FROM
OPENJSON(@json)
[
{
"Number":"SO43659",
"Date":"2011-05-31T00:00:00"
"AccountNumber":"AW29825",
"Price":59.99,
"Quantity":1
},…]
#sqlsatParma
#sqlsat462November 28°, 2015
Funzionalità di import
Validation: ISJSON( json_text )
Importante per CHECK CONSTRAINT
… WHERE (tab.JCol) > 0
Querying: JSON_VALUE( json_text, path )
Estrae uno scalare dal json letto e può filtrare per path
… AND (tab.JCol,' ') = 'C‘
Querying: JSON_QUERY( json_text, path )
Estrae un oggetto dal json letto e può filtrare per path
… AND (tab.JCol,' ') = '{…}‘ (intero JSON)
#sqlsatParma
#sqlsat462November 28°, 2015
Sintassi path
$ (intero JSON text), è il primo carattere di ricerca
$.prop1 (proprietà del JSON)
$[n] (ennesimo elemento nell’array JSON)
$.prop1.prop2.array1[n].prop3.array[2].prop4 (traversing)
Lax (default) e strict mode supportati
Differenza di gestione dei path non trovati (null vs error)
In caso di duplicati, viene tornata la prima occorrenza
#sqlsatParma
#sqlsat462November 28°, 2015
DEMO
#sqlsatParma
#sqlsat462November 28°, 2015
Impieghi possibili
Tabella con campi comuni + estensione JSON
Lettura informazioni di “log”
Fornitura di un formato altamente “digeribile” dalle piattaforme
Passaggio dati a Integration Services
#sqlsatParma
#sqlsat462November 28°, 2015
Operazioni non consigliate
Fare troppi/solo oggetti contenenti chiavi e oggetti
SQL Server è RDBMS, non Key Value Store (es: Redis)
Salvare le informazioni di continuo come JSON
Costa in termini di CPU, seppure poco (singolarmente) andare ad interpretarlo
Tutte le query con FOR JSON
JSON dovrebbe essere una utilità, non una regola
SQL non è un server creato per serializzare JSON
#sqlsatParma
#sqlsat462November 28°, 2015
Indicizzazione
Non è un tipo, è solo una stringa
L’indicizzazione è quella che si farebbe su campi (n)(var)char
Anche full-text
JSON_VALUE può essere usata per una colonna calcolata (+ indice)
Colonne calcolate con JSON_VALUE possono:
Essere nella chiave
Essere nell’INCLUDE
#sqlsatParma
#sqlsat462November 28°, 2015
Indicizzazione – esempio
JSON_VALUE
JSON_VALUE
#sqlsatParma
#sqlsat462November 28°, 2015
Limitazioni FOR JSON
No CLR (Tranne alcuni come HIERARCHYID)
Conversione con Parser integrato
No SELECT INTO
Servono alias sempre per valori senza nome
Tabella per parsing corretto (FOR JSON AUTO)
#sqlsatParma
#sqlsat462November 28°, 2015
DEMO
#sqlsatParma
#sqlsat462November 28°, 2015
Conclusioni
Riduzione gap nei confronti di competitor (PostgreSQL)
Parser integrato ottimizzato (non preferire CLR custom)
Pochissimo t-sql aggiuntivo (parametri su funzioni)
Funzionalità in V1, molto giovane
Indicizzazione futura? Struttura dedicata su storage?
Preferire comunque, per le logiche, l’applicazione
#sqlsatParma
#sqlsat462November 28°, 2015
Risorse
FOR JSON PATH: https://msdn.microsoft.com/en-us/library/dn921877.aspx
FOR JSON AUTO: https://msdn.microsoft.com/en-us/library/dn921883.aspx
INCLUDE_NULL_VALUES: https://msdn.microsoft.com/en-
us/library/dn921878.aspx
ROOT: https://msdn.microsoft.com/en-us/library/dn921894.aspx
POST Jovan Popovic:
http://blogs.msdn.com/b/jocapc/archive/2015/05/16/json-support-in-sql-
server-2016.aspx
POST Aaron Bertrand: http://blogs.sqlsentry.com/aaronbertrand/sql-
server-2016-json-support/
JSON Online Viewer: http://jsonviewer.stack.hu/
JSON Online Query Tool: http://www.jsonquerytool.com/
JSON Online Tool: https://www.jsonselect.com/
#sqlsatParma
#sqlsat462November 28°, 2015
Q&A
Domande?
#sqlsatParma
#sqlsat462November 28°, 2015
THANKS!
http://speakerscore.com/SQL16JSON
#sqlsatParma
#sqlsat462

More Related Content

Viewers also liked

Educational managment task_2
Educational managment task_2Educational managment task_2
Educational managment task_2
alexandersaa2013
 
Oraciones simples con solucionario (ppt)
Oraciones simples con solucionario (ppt)Oraciones simples con solucionario (ppt)
Oraciones simples con solucionario (ppt)
CastilloAguilera
 

Viewers also liked (16)

[ITA] SQL Saturday 257 - Put databases under source control
[ITA] SQL Saturday 257 - Put databases under source control[ITA] SQL Saturday 257 - Put databases under source control
[ITA] SQL Saturday 257 - Put databases under source control
 
Lista 2 - geografia
Lista 2 - geografiaLista 2 - geografia
Lista 2 - geografia
 
[ITA] SQL Saturday 264 - Put databases in ALM backgrounds
[ITA] SQL Saturday 264 - Put databases in ALM backgrounds[ITA] SQL Saturday 264 - Put databases in ALM backgrounds
[ITA] SQL Saturday 264 - Put databases in ALM backgrounds
 
PASS Virtual Chapter - SQL Server Continuous Deployment
PASS Virtual Chapter - SQL Server Continuous DeploymentPASS Virtual Chapter - SQL Server Continuous Deployment
PASS Virtual Chapter - SQL Server Continuous Deployment
 
#DOAW16 - DevOps@work Roma 2016 - Testing your databases
#DOAW16 - DevOps@work Roma 2016 - Testing your databases#DOAW16 - DevOps@work Roma 2016 - Testing your databases
#DOAW16 - DevOps@work Roma 2016 - Testing your databases
 
Quick intro sul Source Control su SQL Server
Quick intro sul Source Control su SQL ServerQuick intro sul Source Control su SQL Server
Quick intro sul Source Control su SQL Server
 
Slide sharing
Slide sharingSlide sharing
Slide sharing
 
Lista 5
Lista 5Lista 5
Lista 5
 
PASS Virtual Chapter - Unit Testing su SQL Server
PASS Virtual Chapter - Unit Testing su SQL ServerPASS Virtual Chapter - Unit Testing su SQL Server
PASS Virtual Chapter - Unit Testing su SQL Server
 
Educational managment task_2
Educational managment task_2Educational managment task_2
Educational managment task_2
 
Oraciones simples con solucionario (ppt)
Oraciones simples con solucionario (ppt)Oraciones simples con solucionario (ppt)
Oraciones simples con solucionario (ppt)
 
Directing teaching resume 2015
Directing teaching resume 2015Directing teaching resume 2015
Directing teaching resume 2015
 
Acting In The Digital Age Workshop @UMFF
Acting In The Digital Age Workshop @UMFFActing In The Digital Age Workshop @UMFF
Acting In The Digital Age Workshop @UMFF
 
DotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql ServerDotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql Server
 
Gordonas sausio
Gordonas sausioGordonas sausio
Gordonas sausio
 
[ITA] Sql Saturday 355 in Parma - New SQL Server databases under source control
[ITA] Sql Saturday 355 in Parma - New SQL Server databases under source control[ITA] Sql Saturday 355 in Parma - New SQL Server databases under source control
[ITA] Sql Saturday 355 in Parma - New SQL Server databases under source control
 

Similar to [Ita] Sql Saturday 462 Parma - Sql Server 2016 JSON support

Presentazione Nuvola Vertica Full New1
Presentazione Nuvola Vertica Full New1Presentazione Nuvola Vertica Full New1
Presentazione Nuvola Vertica Full New1
guest5c2d35b
 
Presentazione Nuvola Vertica Full
Presentazione Nuvola Vertica FullPresentazione Nuvola Vertica Full
Presentazione Nuvola Vertica Full
Alberto.F
 
Presentazione Nuvola Vertica F
Presentazione Nuvola Vertica FPresentazione Nuvola Vertica F
Presentazione Nuvola Vertica F
Alberto.F
 
Presentazione Nuvola Vertica Full New1
Presentazione Nuvola Vertica Full New1Presentazione Nuvola Vertica Full New1
Presentazione Nuvola Vertica Full New1
Alberto.F
 
Presentazione Nuvola Vertica Full New1
Presentazione Nuvola Vertica Full New1Presentazione Nuvola Vertica Full New1
Presentazione Nuvola Vertica Full New1
Alberto.F
 
Presentazione Nuvola Vertica Full New
Presentazione Nuvola Vertica Full NewPresentazione Nuvola Vertica Full New
Presentazione Nuvola Vertica Full New
Alberto.F
 

Similar to [Ita] Sql Saturday 462 Parma - Sql Server 2016 JSON support (20)

Back to the roots - SQL Server Indexing
Back to the roots - SQL Server IndexingBack to the roots - SQL Server Indexing
Back to the roots - SQL Server Indexing
 
Introduction Dax
Introduction DaxIntroduction Dax
Introduction Dax
 
TSQL Advanced Query Techniques
TSQL Advanced Query TechniquesTSQL Advanced Query Techniques
TSQL Advanced Query Techniques
 
Optimizing dax
Optimizing daxOptimizing dax
Optimizing dax
 
Optimizing dax
Optimizing daxOptimizing dax
Optimizing dax
 
SELDA Informatica & QlikView
SELDA Informatica & QlikViewSELDA Informatica & QlikView
SELDA Informatica & QlikView
 
SQL Server Worst Practices
SQL Server Worst PracticesSQL Server Worst Practices
SQL Server Worst Practices
 
Spring, IBatis e Transazioni Aop Nel Jug Avis Web
Spring, IBatis e Transazioni Aop Nel Jug Avis WebSpring, IBatis e Transazioni Aop Nel Jug Avis Web
Spring, IBatis e Transazioni Aop Nel Jug Avis Web
 
Novità di SQL Server 2017
Novità di SQL Server 2017Novità di SQL Server 2017
Novità di SQL Server 2017
 
Basi Di Dati 05
Basi Di Dati 05Basi Di Dati 05
Basi Di Dati 05
 
SQL Server Modern Query Processing
SQL Server Modern Query ProcessingSQL Server Modern Query Processing
SQL Server Modern Query Processing
 
Sviluppo web con Ruby on Rails
Sviluppo web con Ruby on RailsSviluppo web con Ruby on Rails
Sviluppo web con Ruby on Rails
 
SQL Server2000
SQL Server2000SQL Server2000
SQL Server2000
 
Metadata Driven Pipeline with Microsoft Fabric
Metadata Driven Pipeline  with Microsoft FabricMetadata Driven Pipeline  with Microsoft Fabric
Metadata Driven Pipeline with Microsoft Fabric
 
Presentazione Nuvola Vertica Full New1
Presentazione Nuvola Vertica Full New1Presentazione Nuvola Vertica Full New1
Presentazione Nuvola Vertica Full New1
 
Presentazione Nuvola Vertica Full
Presentazione Nuvola Vertica FullPresentazione Nuvola Vertica Full
Presentazione Nuvola Vertica Full
 
Presentazione Nuvola Vertica F
Presentazione Nuvola Vertica FPresentazione Nuvola Vertica F
Presentazione Nuvola Vertica F
 
Presentazione Nuvola Vertica Full New1
Presentazione Nuvola Vertica Full New1Presentazione Nuvola Vertica Full New1
Presentazione Nuvola Vertica Full New1
 
Presentazione Nuvola Vertica Full New1
Presentazione Nuvola Vertica Full New1Presentazione Nuvola Vertica Full New1
Presentazione Nuvola Vertica Full New1
 
Presentazione Nuvola Vertica Full New
Presentazione Nuvola Vertica Full NewPresentazione Nuvola Vertica Full New
Presentazione Nuvola Vertica Full New
 

More from Alessandro Alpi

More from Alessandro Alpi (13)

Mvp4 croatia - Being a dba in a devops world
Mvp4 croatia - Being a dba in a devops worldMvp4 croatia - Being a dba in a devops world
Mvp4 croatia - Being a dba in a devops world
 
Digital warriors 2020 - Smart?
Digital warriors 2020 - Smart?Digital warriors 2020 - Smart?
Digital warriors 2020 - Smart?
 
Sql Wars - SQL the attack of the Clones and the rebellion of the Containers
Sql Wars - SQL the attack of the Clones and the rebellion of the Containers Sql Wars - SQL the attack of the Clones and the rebellion of the Containers
Sql Wars - SQL the attack of the Clones and the rebellion of the Containers
 
Sql Wars - SQL Clone vs Docker Containers
Sql Wars - SQL Clone vs Docker Containers Sql Wars - SQL Clone vs Docker Containers
Sql Wars - SQL Clone vs Docker Containers
 
Doaw2020 - Dalla produzione alla QA, provisioning su SQL Server
Doaw2020 - Dalla produzione alla QA, provisioning su SQL ServerDoaw2020 - Dalla produzione alla QA, provisioning su SQL Server
Doaw2020 - Dalla produzione alla QA, provisioning su SQL Server
 
Wpc2019 - Distruggere DevOps, la storia di un vero team
Wpc2019 - Distruggere DevOps, la storia di un vero teamWpc2019 - Distruggere DevOps, la storia di un vero team
Wpc2019 - Distruggere DevOps, la storia di un vero team
 
Sql start!2019 Migliorare la produttività per lo sviluppo su SQL Server
Sql start!2019 Migliorare la produttività per lo sviluppo su SQL ServerSql start!2019 Migliorare la produttività per lo sviluppo su SQL Server
Sql start!2019 Migliorare la produttività per lo sviluppo su SQL Server
 
Configuration e change management con Disciplined Agile Framework
Configuration e change management con Disciplined Agile FrameworkConfiguration e change management con Disciplined Agile Framework
Configuration e change management con Disciplined Agile Framework
 
Basta poco per distruggere DevOps
Basta poco per distruggere DevOpsBasta poco per distruggere DevOps
Basta poco per distruggere DevOps
 
Automatizzare il processo di link dei database con redgate source control
Automatizzare il processo di link dei database con redgate source controlAutomatizzare il processo di link dei database con redgate source control
Automatizzare il processo di link dei database con redgate source control
 
Sql saturday parma 2017 (#sqlsat675) - Deep space Cosmos DB
Sql saturday parma 2017 (#sqlsat675) - Deep space Cosmos DBSql saturday parma 2017 (#sqlsat675) - Deep space Cosmos DB
Sql saturday parma 2017 (#sqlsat675) - Deep space Cosmos DB
 
Sql Saturday a Pordenone - Sql Server journey, da dev a ops
Sql Saturday a Pordenone - Sql Server journey, da dev a opsSql Saturday a Pordenone - Sql Server journey, da dev a ops
Sql Saturday a Pordenone - Sql Server journey, da dev a ops
 
[Eng] Sql Saturday TorinoExpo - Sql Server 2016 JSON support
[Eng] Sql Saturday TorinoExpo - Sql Server 2016 JSON support[Eng] Sql Saturday TorinoExpo - Sql Server 2016 JSON support
[Eng] Sql Saturday TorinoExpo - Sql Server 2016 JSON support
 

[Ita] Sql Saturday 462 Parma - Sql Server 2016 JSON support

Editor's Notes

  1. Meet Stephen Hall, I have gotten to know Stephen very well in the past several months working on this project.  Stephen started District Computers more than 10 years ago with the customer in mind.  His company specializes in Small Business with a focus on Office365.
  2. JSON è acronimo di JavaScript Object Notation ed è un recente formato di scambio informazioni basato su JavaScript. Tuttavia è indipendente da esso. Recentemente ha avuto sempre più applicazioni in alternativa a XML/XSLT, essendo decisamente più di immediata gestione. La semplicità di JSON ha consentito la sua presenza sempre più preponderante nella programmazione, soprattutto per quello che ha a che fare con AJAX. I tipi di dato supportati sono: bool (true, false), interi, real, stringhe, array (con le []) ed array associativi (array identificati da una stringa usata come nome). JSON è un formato ed è una stringa, non è un linguaggio di markup come invece è XML. Questo sottolinea ancora di più la sua semplicità.
  3. Tra le cose dette fino ad ora, ci sono alcuni validi motivi per i quali utilizzare JSON. Essendo, come dicevamo, una stringa, è semplice. Il suo punto di forza è proprio questa semplicità. Essendo poi sprovvisto di tag, non è verboso, e quindi è leggero. E’ un formato indicato per la rappresentazione di strutture e dati, essendo in aggiunta molto leggibile ed auto documentativo. Queste considerazioni sottolineano quanto JSON sia portabile, e, di conseguenza, interoperabile, andando di fatto a sostituire XML per la comunicazione cross platform. Infatti è uno dei più utilizzati formati di scambio informazioni presenti ad oggi. Come dicevamo prima, è utilizzato soprattutto nel mondo di AJAX e della programmazione in JavaScript con AJAX, appunto.
  4. Tra le cose dette fino ad ora, ci sono alcuni validi motivi per i quali utilizzare JSON. Essendo, come dicevamo, una stringa, è semplice. Il suo punto di forza è proprio questa semplicità. Essendo poi sprovvisto di tag, non è verboso, e quindi è leggero. E’ un formato indicato per la rappresentazione di strutture e dati, essendo in aggiunta molto leggibile ed auto documentativo. Queste considerazioni sottolineano quanto JSON sia portabile, e, di conseguenza, interoperabile, andando di fatto a sostituire XML per la comunicazione cross platform. Infatti è uno dei più utilizzati formati di scambio informazioni presenti ad oggi. Come dicevamo prima, è utilizzato soprattutto nel mondo di AJAX e della programmazione in JavaScript con AJAX, appunto.
  5. Tra le cose dette fino ad ora, ci sono alcuni validi motivi per i quali utilizzare JSON. Essendo, come dicevamo, una stringa, è semplice. Il suo punto di forza è proprio questa semplicità. Essendo poi sprovvisto di tag, non è verboso, e quindi è leggero. E’ un formato indicato per la rappresentazione di strutture e dati, essendo in aggiunta molto leggibile ed auto documentativo. Queste considerazioni sottolineano quanto JSON sia portabile, e, di conseguenza, interoperabile, andando di fatto a sostituire XML per la comunicazione cross platform. Infatti è uno dei più utilizzati formati di scambio informazioni presenti ad oggi. Come dicevamo prima, è utilizzato soprattutto nel mondo di AJAX e della programmazione in JavaScript con AJAX, appunto.