#GlobalAzure
Apresentando o
Azure DocumentDB
Luciano Moreira [ Luti ]
luciano.moreira@srnimbus.com.br
http://luticm.blogspot.com
http://www.linkedin.com/in/luticm
@luticm
Patrocinadores
• Roadmap: SQL Server, DB2, Oracle, beyond
relational, …
■ Motivação
■ Azure DocumentDB
■ Conceitos e recursos
■ Indexação, consistência e transações
■ Modelagem
■ Programação
■ Demonstrações
■ Conclusão
■ Referências
Agenda
■ SGBDRs vão acabar!
■ OK, mas NoSQL tem seu lugar ao sol...
■ Column oriented (Accumulo, Cassandra, HBase,
Vertica, ...)
■ Key-value store (MemcacheDB, Redis, Riak, ...)
■ Document store (Apache CouchDB, Couchbase,
MongoDB, ...)
■ Graph databases (Neo4j, Allegro, OrientDB, ...)
Motivação
■ Michael Stonebreaker
■ Postgre, Ingres, VoltDB
■ Turing award – 25 de março de 2015
Motivação
Motivação
■Existem cenários em que um modelo diferente
do relacional tradicional é interessante
■ Flexibilidade de esquema
■ Agilidade no desenvolvimento
■ Mecanismos de escalabilidade nativos
■ Recursos built-in resolvem problemas complexos
Motivação
■ User generated content
■ Catalog data
■ Log data
■ User preferences data
■ Device sensor data (IoT)
■ http://azure.microsoft.com/en-
us/documentation/articles/documentdb-use-cases/
Motivação
■ Uma alternativa NoSQL no Azure
■ GA em 08 de Abril de 2015
■ Suporte nativo JSON e Javascript
■ Linguagem similar ao SQL
■ Cloud based e diferentes níveis de performance
■ Esquema flexível
■ Estruturado sobre “low-latency, write-optimized, SSD
storage”
■ Interface RESTful HTTP
Azure DocumentDB
■ Recursos
■ Database account
■ Database
■ User
■ Permission
■ Collection
■ Document
■ Attachment
■ Stored procedure, trigger, UDF
Azure DocumentDB
■ Indexação automática de todos os documentos
■ “write-optimized, lock-free and log-structured index
maintenance techniques”
■ Políticas de indexação
■ Definir política padrão (indexar tudo ou não)
■ Excluir documentos específicos (indexingPolicy ou
header de requisição [x-ms-indexingdirective])
■ Incluir/excluir paths específicos
■ Síncrono (consistente) ou assíncrono (lazy)
Azure DocumentDB
■ ACID vs BASE
■ Níveis de consistência suportados
■ Strong
■ Bounded staleness
■ Session
■ Eventual
■ Transações: garantidas para server-side scripts
■ Dentro de uma coleção
Azure DocumentDB
■ Stored procedures
■ Triggers: pré e pós operação
■ User defined functions
■ Internamente todo código é envolto em um
BEGIN TRANSACTION e COMMIT TRANSACTION
■ Exceção é tratada como ROLLBACK
TRANSACTION
Azure DocumentDB
var createDocumentStoredProc = {
id: "createMyDocument",
body: function createMyDocument(documentToCreate) {
var context = getContext();
var collection = context.getCollection();
var accepted = collection.createDocument(collection.getSelfLink(),
documentToCreate,
function (err, documentCreated) {
if (err) throw new Error('Error' + err.message);
context.getResponse().setBody(documentCreated.id)
});
if (!accepted) return;
}
}
Azure DocumentDB
■ Sim, existe “modelagem” para o JSON
■ Embed, FKs, N-N e híbridos
■ Limitações do DocumentDB
■ Bancos, usuários, coleções, etc.
■ Maximum Request Units / second per collection
■ Como você irá dividir os documentos entre as
coleções?
Azure DocumentDB
Azure DocumentDB
■ RANGE PARTITION
Azure DocumentDB
■ LOOKUP PARTITION
Azure DocumentDB
■ HASH PARTITION
Azure DocumentDB
■ RANGE LOOKUP PARTITION (composto)
■ Bibliotecas
■.NET
■ Java
■ Python
■ Javascript
■ Node.js
■Integrações
■ DocumentDB e Azure Search
■ Hadoop job com conector para o DocumentDB
Azure DocumentDB
■ DocumentDB é um banco simples de se
trabalhar
■ Escalabilidade e rápido desenvolvimento
■ Transações e modelos de consistências claros,
mesmo para mindset relacional
■ Cuidado com modelagem, limitações e políticas
■ “Developer friendly”
■ Donald Feinberg em Maio/2014...
Conclusão
■ Portal DocumentDB
http://azure.microsoft.com/en-us/services/documentdb/
■ Blog DocumentDB
http://blogs.msdn.com/b/documentdb/
■ Query playground
http://www.documentdb.com/sql/demo
■ Channel 9 Videos
http://channel9.msdn.com/Series/Developing-Solutions-
with-Azure-DocumentDB
Referências
luciano.moreira@srnimbus.com.br
http://luticm.blogspot.com
http://www.linkedin.com/in/luticm
Apresentando o Azure DocumentDB

Apresentando o Azure DocumentDB

  • 1.
    #GlobalAzure Apresentando o Azure DocumentDB LucianoMoreira [ Luti ] luciano.moreira@srnimbus.com.br http://luticm.blogspot.com http://www.linkedin.com/in/luticm @luticm
  • 2.
  • 3.
    • Roadmap: SQLServer, DB2, Oracle, beyond relational, …
  • 4.
    ■ Motivação ■ AzureDocumentDB ■ Conceitos e recursos ■ Indexação, consistência e transações ■ Modelagem ■ Programação ■ Demonstrações ■ Conclusão ■ Referências Agenda
  • 5.
    ■ SGBDRs vãoacabar! ■ OK, mas NoSQL tem seu lugar ao sol... ■ Column oriented (Accumulo, Cassandra, HBase, Vertica, ...) ■ Key-value store (MemcacheDB, Redis, Riak, ...) ■ Document store (Apache CouchDB, Couchbase, MongoDB, ...) ■ Graph databases (Neo4j, Allegro, OrientDB, ...) Motivação
  • 6.
    ■ Michael Stonebreaker ■Postgre, Ingres, VoltDB ■ Turing award – 25 de março de 2015 Motivação
  • 7.
  • 8.
    ■Existem cenários emque um modelo diferente do relacional tradicional é interessante ■ Flexibilidade de esquema ■ Agilidade no desenvolvimento ■ Mecanismos de escalabilidade nativos ■ Recursos built-in resolvem problemas complexos Motivação
  • 9.
    ■ User generatedcontent ■ Catalog data ■ Log data ■ User preferences data ■ Device sensor data (IoT) ■ http://azure.microsoft.com/en- us/documentation/articles/documentdb-use-cases/ Motivação
  • 10.
    ■ Uma alternativaNoSQL no Azure ■ GA em 08 de Abril de 2015 ■ Suporte nativo JSON e Javascript ■ Linguagem similar ao SQL ■ Cloud based e diferentes níveis de performance ■ Esquema flexível ■ Estruturado sobre “low-latency, write-optimized, SSD storage” ■ Interface RESTful HTTP Azure DocumentDB
  • 11.
    ■ Recursos ■ Databaseaccount ■ Database ■ User ■ Permission ■ Collection ■ Document ■ Attachment ■ Stored procedure, trigger, UDF Azure DocumentDB
  • 14.
    ■ Indexação automáticade todos os documentos ■ “write-optimized, lock-free and log-structured index maintenance techniques” ■ Políticas de indexação ■ Definir política padrão (indexar tudo ou não) ■ Excluir documentos específicos (indexingPolicy ou header de requisição [x-ms-indexingdirective]) ■ Incluir/excluir paths específicos ■ Síncrono (consistente) ou assíncrono (lazy) Azure DocumentDB
  • 15.
    ■ ACID vsBASE ■ Níveis de consistência suportados ■ Strong ■ Bounded staleness ■ Session ■ Eventual ■ Transações: garantidas para server-side scripts ■ Dentro de uma coleção Azure DocumentDB
  • 16.
    ■ Stored procedures ■Triggers: pré e pós operação ■ User defined functions ■ Internamente todo código é envolto em um BEGIN TRANSACTION e COMMIT TRANSACTION ■ Exceção é tratada como ROLLBACK TRANSACTION Azure DocumentDB
  • 17.
    var createDocumentStoredProc ={ id: "createMyDocument", body: function createMyDocument(documentToCreate) { var context = getContext(); var collection = context.getCollection(); var accepted = collection.createDocument(collection.getSelfLink(), documentToCreate, function (err, documentCreated) { if (err) throw new Error('Error' + err.message); context.getResponse().setBody(documentCreated.id) }); if (!accepted) return; } } Azure DocumentDB
  • 18.
    ■ Sim, existe“modelagem” para o JSON ■ Embed, FKs, N-N e híbridos ■ Limitações do DocumentDB ■ Bancos, usuários, coleções, etc. ■ Maximum Request Units / second per collection ■ Como você irá dividir os documentos entre as coleções? Azure DocumentDB
  • 19.
  • 20.
  • 21.
  • 22.
    Azure DocumentDB ■ RANGELOOKUP PARTITION (composto)
  • 23.
    ■ Bibliotecas ■.NET ■ Java ■Python ■ Javascript ■ Node.js ■Integrações ■ DocumentDB e Azure Search ■ Hadoop job com conector para o DocumentDB Azure DocumentDB
  • 25.
    ■ DocumentDB éum banco simples de se trabalhar ■ Escalabilidade e rápido desenvolvimento ■ Transações e modelos de consistências claros, mesmo para mindset relacional ■ Cuidado com modelagem, limitações e políticas ■ “Developer friendly” ■ Donald Feinberg em Maio/2014... Conclusão
  • 26.
    ■ Portal DocumentDB http://azure.microsoft.com/en-us/services/documentdb/ ■Blog DocumentDB http://blogs.msdn.com/b/documentdb/ ■ Query playground http://www.documentdb.com/sql/demo ■ Channel 9 Videos http://channel9.msdn.com/Series/Developing-Solutions- with-Azure-DocumentDB Referências
  • 27.