O documento apresenta o Azure DocumentDB, um banco de dados NoSQL hospedado na nuvem do Azure. O DocumentDB oferece indexação automática, consistência de dados, suporte a transações e programação em JavaScript. Ele permite modelagem flexível de dados JSON através de particionamento, embutimento e referências.
8. ■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
9. ■ 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
10. ■ 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
14. ■ 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
15. ■ 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
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
23. ■ Bibliotecas
■.NET
■ Java
■ Python
■ Javascript
■ Node.js
■Integrações
■ DocumentDB e Azure Search
■ Hadoop job com conector para o DocumentDB
Azure DocumentDB
24.
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