Azure for Students anunciada pela Microsoft


A Microsoft anunciou no último dia 05/03 o Azure for Students. Desenvolvido para o uso da nuvem, com os estudantes em mente, ele oferece aos alunos verificados acesso total a mais de 25 produtos Azure gratuitos, além de crédito de US$ 100 para uso em produtos pagos, sem exigência de cartão de crédito.

O Azure for Students faz parte do crescente compromisso da Microsoft com a Educação, tanto na nuvem quanto na sala de aula STEM (“Science, Technology, Engineering and Mathematics”, ou Ciência, Tecnologia, Engenharia e Matemática, em português).

Microsoft anuncia o Azure for Students

Você pode começar a construir com qualquer um dos serviços gratuitos e usar o seu crédito Azure para gastar agora:

– Descubra a flexibilidade do Azure por meio da biblioteca de serviços de código aberto.

– Implemente máquinas virtuais Azure, incluindo equipadas com GPUs poderosas, com suporte para Linux, Windows Server, SQL Server, Oracle, IBM e SAP. O Azure oferece aos usuários a flexibilidade de virtualização para uma ampla gama de soluções de computação.

– Crie aplicativos Web e Móveis rapidamente usando .NET, .NET Core, Java, Ruby, Node.js, PHP e Python. Integre o Azure App Service em modelos existentes e obtenha uma produtividade de desenvolvedor incomparável com recursos de ponta, como integração contínua, depuração no site ao vivo e o líder do setor, Microsoft Visual Studio IDE – Integrated Development Environment.

– Inteligência Artificial e Aprendizado de Máquinas conectam aplicativos, sites e robôs com algoritmos inteligentes para ver, ouvir, falar, entender e interpretar as necessidades de um usuário por meio de métodos naturais de comunicação. Habilitando computadores para aprender com dados e experiências e para agir sem ser programado.

– Aproveite o Big Data analisando todos os dados em um único lugar sem restrições artificiais com o Azure Data Lake Store. O Data Lake Store pode armazenar trilhões de arquivos, e um único arquivo pode ser maior do que um petabyte em tamanho – 200 vezes maior do que outras opções da loja na nuvem.

Para maiores informações, acesse: https://azure.microsoft.com/pt-br/free/students/

Fontes e Direitos Autorais: 

Anúncios

Microsoft Virtual Academy – Novo treinamento sobre noções básicas do Windows Server 2016


Nos últimos dias a Microsoft adicionou a sua biblioteca de cursos on-line disponibilizados no Microsoft Virtual Academy, um novo curso dedicado exclusivamente ao Windows Server 2016, trata-se do curso de Noções Básicas, focado em profissionais, estudantes e entusiastas que querem conhecer um pouco mais sobre o sistema operacional da Microsoft utilizado em servidores.

A Microsoft Virtual Academy (ou MVA) oferece treinamento online da Microsoft realizado por especialistas para ajudar os tecnólogos a aprender constantemente, com centenas de cursos em múltiplos idiomas. A MVA é gratuita e o serviço inteiro é hospedado no Microsoft Azure. Além dos treinamentos, ela também oferece para download diversos ebooks gratuitos.

O treinamento é dividido em seis módulos que apresentam a versão 2016 do Windows Server, que foi lançada em setembro de 2016 durante a conferência Ignite e disponibilizada oficialmente em outubro do mesmo ano.

O Treinamento

O primeiro módulo centra-se na instalação do novo sistema operacional e na comparação da funcionalidade de diferentes versões.

No segundo módulo, são apresentadas as novas funções na área de identidade. O terceiro módulo apresenta os novos recursos da rede.

O módulo 4 fornece uma visão geral dos novos recursos e melhorias na memória. No quinto módulo, são apresentadas as novas funções no campo da virtualização. Após uma pequena introdução ao Hyper-V, também é mostrado como criar e configurar máquinas virtuais.

No último módulo, a Microsoft aborda os contêineres que fornecem uma extensão da virtualização.

Treinamento gratuito: Noções básicas sobre o Windows Server 2016
O treinamento é dividido em seis módulos que apresentam a versão 2016 do Windows Server, que foi lançada em setembro de 2016 durante a conferência Ignite e disponibilizada oficialmente em outubro do mesmo ano

Módulos do treinamento gratuito Noções básicas sobre o Windows Server 2016:

01 | Introdução ao Windows Server 2016
O primeiro módulo se concentra na instalação do novo sistema operacional e na comparação da funcionalidade de diferentes versões.

02 | Serviços de diretório do Windows Server 2016
No segundo módulo, são apresentadas as novas funções no campo da identidade.

03 | Serviços de rede no Windows Server 2016
No terceiro módulo você receberá uma introdução às novas funções na rede.

04 | Soluções de armazenamento do Windows Server 2016
Este módulo fornece uma visão geral dos novos recursos e melhorias de memória.

05 | Virtualização do Windows Server 2016
No quinto módulo são apresentadas as novas funções no campo da virtualização.

06 | Windows Server 2016 Container Basics
O último módulo tem como foco os contêineres.

Para maiores informações e acesso ao treinamento clique aqui.

Fontes e Direitos Autorais: Microsoft.com – 05/02/2018.

Suporte para Cosmos DB no Azure Storage Explorer já está disponível como Preview


A Microsoft anunciou na semana passada que o suporte para Cosmos DB no Azure Storage Explorer já está disponível como Preview.

Cosmos DB no Azure Storage Explorer

Com o suporte os bancos de dados Cosmos DB podem ser explorados e gerenciados com a mesma experiência de uso que torna o Azure Storage Explorer uma poderosa ferramenta para desenvolvedores que precisam gerenciar armazenamento no Azure.

Para quem não sabe, o Storage Explorer é um aplicativo autônomo que permite que você trabalhe facilmente com dados do Azure Storage no Windows, macOS e Linux.

O aplicativo fornece várias maneiras de se conectar às contas de armazenamento. Isso inclui se conectar a contas de armazenamento associadas às suas assinaturas do Azure, conectar-se às contas de contas de armazenamento e serviços compartilhados por outras assinaturas do Azure e até mesmo se conectar e gerenciar o armazenamento local usando o Emulador de Armazenamento do Azure.

Suporte para Cosmos DB no Azure Storage Explorer já está disponível como Preview
Azure Storage Explorer

O suporte para o Cosmos DB no Azure Storage Explorer permite que você gerencie entidades, manipule dados, crie e atualize ‘stored procedures’ e muito mais.

Para começar, faça o Azure Storage Explorer aqui para Windows, aqui para macOS ou aqui para Linux, confira aqui um artigo para saber mais sobre o Storage Explorer e utilize o manual para ver como gerenciar Cosmos DB no Azure Storage Explorer.

Uma demonstração do Cosmos DB no Storage Explorer está disponível aqui.


Fontes e Direitos Autorais: azure.microsoft.com – 09/11/2017.

Dica do Mês – Você sabe o que é Normalização de Banco de Dados?


Olá galera, bom dia, bom dia comunidade!!!

Estou de volta com mais um post da sessão Dica do Mês, nossa como o tempo esta passando, este é o sexto post desta nova sessão criada este ano no meu blog e que lentamente começa a apresentar alguns resultados. Como você já deve estar acostumado quando visita o meu blog, todo final de mês é dedicado a post exclusivos das sessões Dica do Mês e Para que Serve.

No último post publicado no mês de Maio, apresentei um conteúdo mais focado para área acadêmica e hoje não será diferente, vou falar sobre um dos conceitos mais importantes quando falamos sobre banco de dados, estou me referindo a Normalização de Dados ou para muitos Normalização.

 Acredito que você já deve ter ouvir falar sobre este conceito, para muitos algo bastante complexo, mas na verdade não é bem assim, por isso eu decidi compartilhar com vocês um pouco do meu conhecimento nesta área.

Então, seja bem vindo a mais uma dica do mês, começa aqui a Dica do Mês – Você sabe o que é Normalização de Banco de Dados?


Introdução

Conhecida como técnicas de racionalização das estruturas de dados de um sistema, eliminando redundâncias, problemas de manipulação e armazenamento, basicamente a normalização é um processo através do qual esquemas de relação, que não sejam satisfatórios às características do modelo relacional, são decompostos em esquemas menores que satisfaçam as propriedades desejáveis.

Inicialmente proposta como uma ferramenta de auxílio no projeto físico para a definição de relações, porém na prática tornou-se uma ferramenta de verificação, pois serve para verificar se os esquemas do projeto físico satisfazem algumas características básicas. Estas características são conhecidas como medidas de qualidade que devem obrigatóriamente estar alinhadas as necessidades do projeto de banco de dados e seu modelagem conceitual.

Medidas de Qualidade

Na normalização, são analisadas algumas medidas de qualidade para o projeto de um esquema de relação. Estas medidas de qualidade visam, por exemplo, evitar um mau uso da memória. As medidas são as seguintes:

1 – Correta representação semântica – os dados devem ser projetados de forma a terem seus significados bem definidos e coerentes com o que realmente querem representar;

2 – Redução de valores redundantes – sempre que possível deve-se reduzir ao máximo os valores redundantes desnecessários, ou seja, valores que muitas vezes aparecem repetidos quando isto não seria preciso;

3 – Redução de valores nulos – sempre que possível deve-se reduzir o número de atributos que por alguma razão receberão muitos valores nulos;

4 – Não geração de tuplas espúrias (sem sentido) – durante o processo de normalização deve-se atentar para evitar que sejam geradas tuplas que não façam sentido diante da realidade, isto pode ocorrer devido a alguma decomposição.

Estas medidas de qualidade nos ajudam a estabelecer uma estrutura organizacional para nosso modelo de banco de dados, onde podemos tentar afirmar que estamos criando um cenário para armazenar com coerência.

Outro elemento muito importante quando estamos trabalhando com Normalização é a chamada dependência funcional, conhecida como propriedade da semântica ou do significado dos atributos. Você pode estar se perguntando poxa vida o que seria isso, calma vou tentar se ajudar neste respostas.

Dependência Funcional

As decomposições da normalização ocorrem seguindo os conceitos de dependências funcionais. A seguir estes conceitos serão apresentados, juntamente com as três principais e mais utilizadas formas normais.

Uma dependência funcional (DF) é uma propriedade da semântica ou do significado dos atributos. Formalmente, uma dependência funcional entre dois conjuntos de atributos, x e y, que são subconjuntos de um esquema de relação R, denotada por x® y é uma restrição que estabelece que para quaisquer tuplas t1 e t2 de uma instância r de R, tal que, se temos t1[x] = t2[x], então também devemos ter que t1[y] = t2[y].

Em outras palavras, os valores do componente y em uma tupla de r dependem de (ou são determinados por) valores do componente x.

Por exemplo:  Seja x = {Matrícula} e y = {Nome, Endereço, Telefone, CodCurso}, então {Matrícula} {Nome, Endereço, Telefone, CodCurso}, ou seja, a depender do valor da Matrícula, serão determinados os valores do Nome, Endereço, Telefone, e CodCurso.

Quando se define uma dependência funcional, esta regra deve valer para todas as instâncias da relação, é como se fosse uma restrição de integridade, onde em muitos casos não se pode deduzir a existência de uma dependência, conforme a Figura 1 apresentada abaixo demonstra:

Normalização

Figura 1 – Exemplo de como podemos identificar a existência ou não de dependência funcional.

Seguindo em frente, agora que conhecemos um pouco sobre a normalização, suas medidas de qualidade e seu principal elemento de decomposição chamado dependência funcional, o próximo passo é justamente conhecer e entender um pouco mais sobre esta técnica de decomposição de estrutura, para tal será necessário se aprofundar um pouco mais, vamos então começar a desmistificar as tão temidas Formas Normais (kkkkkk), tenho a certeza que você vai gostar.

Formas Normais Baseadas em Chaves Primárias

O processo de normalização é realizado gradativamente através de formas normais, definidas a partir do conceito de DF. As três principais formas normais são a Primeira Forma Normal (1FN), a Segunda Forma Normal (2FN) e a Terceira Forma Normal (3FN).

1FN  2FN  3FN……

Este processo de normalização é composto por algumas propriedades:

  1. Junções sem perda – uma vez definida uma decomposição, caso esta seja recomposta através de uma operação de junção, no resultado gerado não pode haver perdas;  e
  2. Preservação de dependências – assegura que cada DF seja representada em algumas relações individuais resultantes após a decomposição.

A Figura 2 apresentada a seguir ilustra como as formas normais trabalham, sua forma de uso e finalidade:

Normalização1
Figura 2 – Resumo formas normais.

Primeira Forma Normal (1FN)

Um esquema de relação R está na 1FN se todos os seus atributos forem atômicos e monovalorados, ou seja, não possuem valores que formam atributos compostos.

1 – Exemplo:
ESTUDANTES = {MATRÍCULA + NOME + ENDEREÇO + CODCURSO} e
ENDEREÇO é um atributo composto, ENDEREÇO = {RUA + NUMERO + BAIRRO + CIDADE + UF}.

Para colocar na 1FN faz:
ESTUDANTES={MATRÍCULA+NOME+RUA+NUMERO+BAIRRO+CIDADE+UF+CODCURSO}

Um esquema de relação R está na 1FN se todos os seus atributos forem atômicos e monovalorados, ou seja, não possuem valores que formam atributos compostos.

2 – Exemplo:

FUNCIONÁRIOS = {CODFUNC + NOME + CARGO + {PROJETO + DATAINI + DATAFIM}}

Para colocar na 1FN faz:

– FUNCIONÁRIOS = {CODFUNC + NOME + CARGO}

– FUNC_PROJ = {CODFUNC + PROJETO + DATAINI + DATAFIM}

Observação: todas as tabelas são relações na 1FN.

 

Segunda Forma Normal (2FN)

Dependência funcional total ou completa: Uma DF x® y é total, se não existir nenhum atributo A em x, tal que (x – {A})® y, para qualquer AÎ x, ou seja, se retirarmos este atributo A da relação x a DF deixa de existir. Caso contrário, x® y é parcial.

Definição da 2FN: Um esquema de relação está na 2FN se: estiver na 1FN e, além disso, todo atributo que não pertença a alguma de suas chaves for totalmente dependente da sua chave primária.

Em outras palavras, para que uma relação esteja na 2FN é preciso que esteja na 1FN e que, havendo uma chave primária composta, todos os dados que não são chaves dependem de toda a chave primária (a chave primária completa).

Seja o exemplo de uma relação que represente o estoque de um estabelecimento comercial, da seguinte forma:

ESTOQUE = {PRODUTO + ALMOX + END_ALMOX + UNID_EST + QTD + PRECO}

Não está na 2FN porque alguns dados não chave dependem somente de parte da chave, como END_ALMOX depende só de ALMOX, e UNID_EST depende só de PRODUTO.

Com a normalizando ficaria:
– Estoque = {PRODUTO + UNID_EST}
– Almoxarifado = {ALMOX + END_ALMOX}
– Produto= {PRODUTO + ALMOX + QTD + PRECO}

 

Terceira Forma Normal (3FN)

Dependência funcional transitiva: Uma DF x® y é transitiva em um esquema de relação R se existir um conjunto de atributos z, que não seja um subconjunto de alguma chave de R, e as DFs x® z e z® y forem válidas em R.

Um esquema de relação está na 3FN se: estiver na 2FN e, além disso, nenhum atributo que não pertença a alguma das suas chaves for transitivamente dependente da sua chave primária.

Em outras palavras, para que uma relação esteja na 3FN é preciso que esteja na 2FN e todo atributo, que não pertença a alguma chave for não dependente de algum outro atributo, que também não pertença a alguma chave.

Seja o exemplo de uma relação que represente os dados referentes às músicas, da seguinte forma:

Exemplo: MÚSICA = {CÓDIGO + TÍTULO + GÊNERO + PAÍS_ORIGEM}, supondo que neste exemplo, o PAÍS_ORIGEM refere-se ao GÊNERO musical e não a música, sendo assim, apesar de estar na 2FN, a relação não está na 3FN, pois existe  dependência entre GÊNERO e PAÍS_ORIGEM.

Com a normalizando ficaria:
MÚS_1 = {CÓDIGO + TÍTULO + GÊNERO}
MÚS_2 = {GÊNERO + PAÍS_ORIGEM}

Acredito que você pode ter entendido como inicialmente a normalização de dados vai influenciar na estrutura da sua modelagem de dados, como a mesma vai ser elaborada, estruturada e elaborada.

Para tentar ajudar o seu entendimento e tentar praticar o que estamos vendo neste post, vou deixar algumas perguntas que podem ser de extrema importância para o esclarecimento de dúvidas, como também, um exercício prático de normalização.


Questionário

1.O que é uma dependência funcional?

2.Quem especifica as dependências funcionais que se mantêm (são válidas) entre os atributos de um esquema de relação?

3.A que se refere a expressão “relação desnormalizada”?

4.Defina primeira, segunda e terceira formas normais quando somente chaves primárias são consideradas. Como as definições da 2FN e 3FN, que consideram todas as chaves de uma relação, diferem daquelas que consideram somente chaves primárias?

Exercício

Sejam os seguintes dados de uma locadora de automóveis:

A locadora aluga automóveis de uma determinada marca apenas para clientes pessoa jurídica (empresas). Estes clientes credenciam motoristas para utilizarem os veículos, o preço diário de aluguel e a potência do carro dependem de seu modelo. Considerando que a locadora necessite, para seu controle, dos dados descritos na seguinte relação:

  • REGISTRO_ALUGUEL = {NumCNH + NomeMotorista + DataNasc + CGCCliente + NomeCliente + EndCliente + {PlacaCarro + Modelo + Cor + Potência + QTDDiárias + PreçoDiária}}

Sendo assim chegamos ao final de mais uma dica do mês.

O conhecimento técnico é muito importante para qualquer profissional, mas o conceito é algo que sempre devemos valorizar e conhecer, a diferença entre um bom profissional e um profissional reconhecido e respeitado no mercado de trabalho é saber aliar o conhecimento teórico com o conhecimento prática, como muitos costumam dizer aliar a téoria a prática, sendo este o objetivo deste post.

Espero que você tenha gostado, que as informações e exemplos publicadas possam de alguma maneira ajudar e colaborar com suas atividades diárias, profissionais e ou acadêmicas.

Desejo um forte abraço, agradeço mais uma vez a sua visita.

Até mais.

 

MAIS DETALHES SOBRE O OFFICE 16


A Microsoft está atualmente trabalhando no desenvolvimento da nova versão do Office, que é conhecida pelo codinome Office 16.

Agora a empresa começou a disponibilizar para um grupo restrito a versão de testes da nova versão da popular suíte de produtividade.

OFFICE 16

Por ser uma versão de testes ainda nos estágios iniciais de desenvolvimento, é possível que algumas coisas mencionadas aqui não estejam presentas na versão final.

De acordo com informações do site Winbeta.org, o build da versão de testes é 16.0.3030.1040.

Esta versão de testes do Office 16 inclui novidades como o recurso Tell Me. Ele é exibido na parte superior de aplicativos como o Word e também pode ser usado como uma ferramenta de busca:

office16_tellme
Basicamente o Tell Me oferece uma forma fácil e rápida de obter ajuda sem que seja necessário navegar pela documentação completa do Office. Fazer perguntas como “Como insiro imagens?” fará com que ele exiba informações relevantes e ajuda adicional.

Outra novidade interessante no Office 16 é o suporte para rotação automática de imagens. Neste caso os metadados das imagens são usados para posicioná-las corretamente nos documentos.

Quando uma imagem é inserida no documento, o Office fará a rotação da imagem automaticamente para ficar de acordo com a orientação da câmera. Se o usuário quiser, ainda será possível fazer a rotação manualmente.

A Microsoft também incluiu um novo tema escuro nesta versão Preview do novo Office. Este tema escuro não é o padrão, é apenas mais uma opção para os usuários:

Mais detalhes sobre o Office 16
A nova versão do Excel traz recursos com foco em Business Intelligence, enquanto que o Visio traz novidades como a seção Getting Started, melhorias na acessibilidade e suporte para proteção de arquivos via Information Rights Management (IRM).

O Microsoft Office 16 também inclui diversas melhorias no Outlook, como novas opções de sincronização de mensagens, assim ele pode fazer o download de apenas um dia de mensagens ou optar por 3, 4, 7 ou 14 dias, e armazenamento mais enxuto em dispositivos móveis.

Fontes e Diretois Autorais: Baboo.com – SID VICIOUS @ 20 OUT 2014 | 1:47 PM

Conhecendo o Microsoft SQL Server 2012 e 2014 – Utilizando o ColumnStored Index.


Salve, Salve Comunidade! Tudo bem?

Após um período de diversos eventos que participei e realizei desde Março deste ano, até a última semana, consegui um pouco de tempo para poder compartilhar com vocês, mais um pouquinho sobre o Fantástico Mundo que forma o Microsoft SQL Server, que neste momento se encontra em destaque com o lançamento da nova versão denonimada 2014.

Dentre as diversas inovações que normalmente uma nova versão apresenta, eu vou destacar hoje com você um recurso que foi criado e implementado na versão 2012 mas que apresentou um grande evolução neste nova versão. Estou me referindo ao ColumnStore Index, ou simplesmente, Índice armazenado em Coluna, numa tradução bem comum.

Como de costume foi fazer uma pequena introdução sobre este recursos e no decorrer deste artigo, destacarei:

  • Pontos Positivos e Negativos;

 

 

  • Considerações;

 

 

  • Restrições;

 

 

  • Cenários de Uso; e

 

 

  • Códigos de exemplo.

 

 

Então boa leitura e Lets Go!!!

Introdução ao ColumnStore Index

Implementado no Microsoft SQL Server 2012 desde as primeiras versões disponibilizadas para comunidade, o ColumnStore Index foi apresentado como um dos maiores recursos e inovações do SQL Server 2012, principalmente no quesito de performance para se trabalhar com grandes volumes de dados, algo muito desejado por todos aqueles que trabalham com SQL Server, mas que entendiam que era um ponto a ser investido e tratado pela Microsoft.

Através do ColumnStore Index a Microsoft, possibilitou ao mercado de Banco de Dados e Data Warehouse, o uso de tecnologia considerada inovadora na forma de tratar os dados que estão armazenados em tabelas em bases relacionais e tabelas fatos em ambientes de Data Warehouse.

O funcionamento do ColumnStore Index

Com base, no novo algoritmo de processamento de dados chamado de xVelocity, o Microsoft SQL Server a partir da versão 2012, permite que suas consultas sejam processadas com um ganho de desempenho para padrões de alto nível com grandes volumes de dados, este um recurso que permite aumentar a velocidade das consultas em até 100% dentro de tabelas fatos em um Data Warehouse.

Vindo da tecnologia VertiPaq o ColumnStore Index, recurso que esta vinculado ao xVelocity, permite a transformação das páginas de dados em colunas, onde cada página de dados é acessada independentemente, fazendo com que a compressão seja muito mais efetiva.

Outro fator importante consiste no novo modo interno de busca de dados chamado Batch Mode, que estabelece e permite uma busca de dados nas colunas de forma mais ágil, inteligente, sendo realizado em blocos de 1000 em 1000 registros, possibilitando uma maior velocidade na busca de dados.

Nas versões anteriores do Microsoft SQL Server, os dados eram armazenados em modo de linhas, como também em tabelas Heaps e Índice em estrutura de armazenamento no formato B-Tree. Com o ColumnStore Index, este cenário muda, estes mesmos dados podem ter um maior aproveitamento, onde os valores são armazenados em modo coluna, sendo as colunas que formam o respectivo índice, conforme apresenta a Figura 1.

ColumnStoreIndex1

Figura 1 – Forma de armazenamento de dados utilizados no ColumnStore Index em comparação a forma normal realizada por Tabelas e Índices.

Como qualquer outro recurso e tecnologia o ColumnStore Index, também possui algumas características e comportamentos, dentre os quais destaco:

Pontos Positivos

A seguir apresento os principais Pontos Positivos existentes para o ColumnStore Index:

  • Batch Mode = Blocos de 1.000 linhas que são retornados a consulta ao ínves de linha-a-linha;

 

 

  • Algoritmo de Redução de Custo de I/O, tornando a consulta assim mais eficiente; e

 

 

  • “Segment  Elimination” de acordo com os filtros passados ao Query Optimizer, possibilitará trazer a consulta mais rápido, isso porque o mecanismo possibilita a quebra da partição em diversas partes selecionando assim os dados de uma forma mais eficiente.

 

 

Pontos Negativos

A seguir apresento alguns elementos considerados Pontos Negativos para em relalção ao ColumnStore Index:

  • Ao criar um ColumnStored Index no SQL Server 2012, a tabela se torna “Read-Only”, não podendo ser permitido operações de DML tais como: INSERT/UPDATE/DELETE e MERGE. Sendo assim só é possivel alterá-la se o ColumnsStore Index for desabilitada ou excluída no Microsoft SQL Server 2012. No Microsoft SQL Server 2014 esta limitação foi contornado, onde podemos criar ColumnStore Index no Clustered que permitem alteração e manipulação;

 

 

  • Algumas operações não são possíveis no novo modo “Batch Mode” como: Outer Joins, Join entre strings, NOT IN, IN, EXISTS e agregações escalares;

 

 

  • Se houver pressão na memória ou um grande uso de paralelismo, provavelmente o Query Optimizer utilizirá o modo linha-a-linha para a execução da consulta; e

 

 

  • Somente nas edições Enterprise, Standard e Developer é possível criar índices do tipo ColumnStore Index.

 

 

Considerações

A seguir apresento a relação de Considerações aplicadas ao ColumnStore Index:

  • Tabelas contendo milhões a bilhões de registros (Fact Tables) representam cenários mais indicados para se trabalhar com o ColumnStore Index;

 

 

  • O ColumnStore Indexes não suporta operações de Seek, somente Scan;

 

 

  • Operações de agregação como SUM(), AVG, joins e filtros utilizados na pesquisa;

 

 

  • Os índices podem ser criados em uma tabela temporária. Quando a tabela for removida ou a sessão encerrada, os índices serão removidos;

 

 

Os tipos de dados corporativos comuns podem ser incluídos em um índice columnstore, sendo eles:

 

  • char e varchar;

 

 

  • nchar e nvarchar (exceto varchar(max) e nvarchar(max));

 

 

  • decimal (e numeric) (exceto com precisão maior que 18 dígitos.);

 

 

  • int , bigint, smallint e tinyint;

 

 

  • float (e real);

 

 

  • Bit; e

 

 

  • money e smallmoney.

 

 

Observação: Todos os tipos de dados de data e hora (exceto datetimeoffset com escala maior que 2) podem ser utilizado.

Por outro lado, existem vários tipos de dados que não podem ser utilizados com ColumnStore Index, sendo eles:

 

  • binary e varbinary;

 

 

  • ntext , text e image;

 

 

  • varchar(max) e nvarchar(max);

 

 

  • Uniqueidentifier;

 

 

  • rowversion (e timestamp);

 

 

  • sql_variant ;

 

 

  • decimal (e numeric) com precisão maior que 18 dígitos;

 

 

  • datetimeoffset com escala maior que 2; e

 

 

  • Tipos CLR (hierarchyid e tipos espaciais).

 

 

Restrições

A seguir apresento a relação de Restrições existentes para o ColumnStore Index:

  • Não pode ter mais de 1024 colunas;

 

 

  • Apenas índices columnstore não clusterizados estão disponíveis, até a versão 2012. Na versão 2014 esta limitação foi removida, permitindo a utilização de ColumnStore Index, com base, em índices Clustered, permitindo a realizações de comandos de manipulação de Dados, sem necessitar que a tabela fique em “Read-Only”.

 

 

  • Não pode ser um índice exclusivo;

 

 

  • Não pode ser criado em uma exibição ou exibição indexada;

 

 

  • Não pode incluir uma coluna esparsa;

 

 

  • Não pode atuar como uma chave primária ou estrangeira;

 

 

  • Não pode ser alterado por meio da instrução ALTER INDEX. Em vez disso, remova e recrie o índice columnstore. Você pode usar ALTER INDEX para desabilitar e recriar um índice columnstore;

 

 

  • Não pode ser criado por meio da palavra-chave INCLUDE; e

 

 

  • Não pode incluir as palavras-chave ASC ou DESC para classificar o índice. Os índices columnstore são ordenados de acordo com os algoritmos de compactação. A classificação eliminará muitos dos benefícios de desempenho.

 

 

Índices ColumnStore não podem ser combinados com os recursos a seguir:

 

  • Compactação de página e de linha, e formato de armazenamento vardecimal (um índice columnstore já foi compactado em um formato diferente);

 

 

  • Replicação;

 

 

  • Controle de alterações;

 

 

  • Change Data Capture; e

 

 

  • Fluxo de arquivos.

 

 

Agora que já conhecemos mais sobre o ColumnStore Index, vamos começar a trabalhar com o mesmo, para isso utilizaremos os Bloco de Código apresentado abaixo, seguindo o passo a passo:

— Passo 1 — Criando o Banco de Registros ColumnStoreIndex —

CREATEDATABASEColumnStoreIndex

Go

— Passo 1.1 — Acessando o Banco de Registros ColumnStoreIndex —

UseColumnStoreIndex

Go

— Passo 2 — Criando uma nova Sequência de Valores —

CREATESEQUENCESeqAsINT— Tipo

STARTWITH 1 — Valor Inicial (1)

INCREMENTBY 1 — Avança de um em um

MINVALUE 1 — Valor mínimo 1

MAXVALUE 100000 — Valor máximo 100000

CACHE 1000 — Mantém 1000 posições em cache

NOCYCLE— Não irá reciclar

Go

— Passo 3 — Criando a Tabela Registros com Primary Key —

CreateTableRegistros

(DescricaoVarChar(60)NotNull,

ValorFloatNull,

DateDateDefaultGetDate(),

TimeTimeDefaultGetDate())

Go

AlterTableRegistros

AddConstraint[PK_Registros]PrimaryKeyClustered (Descricao)On[Primary]

Go

— Passo 3.1 — Criando um Índice NonClustered para Tabela Registros —

CREATENONCLUSTEREDINDEX [IND_Registros_NonClustered]

ON Registros

(Descricao, Valor,Date,Time)

Go

— Passo 4 — Listando a Relação de Índices da Tabela dbo.Registros —

Execsp_helpindex‘Registros’

Go

— Passo 5 — Inserindo a Massa de Registros —

InsertIntoRegistros(Descricao,Valor)

Values (‘Ola…’+Convert(Varchar(100),Rand()),Rand())

Go 10000

No Passo 6, realizaremos a execução do primeiro Select para buscar dados na Tabela Registros em conjunto com o Plano de Execução, conforme apresentam a Figura 2 e Figura 3:

— Passo 6 — Executando o Select em conjunto com Sequence e Verificar o Plano de Execução —

SelectNextValueforSeqAsCodigo,Descricao,Valor,Date,TimefromRegistros

Go

ColumnStoreIndex2

Figura 2 – Resultado do Plano de Execução apresentado após o Passo 6 ser executado.

ColumnStoreIndex3

 

 

Figura 3: Indicadores de execução utilizados pelo operadores Index Scan, na Tabela Registro, sendo que, este operador consumiu 98% do custo de processamento da query executado na Passo 6.

Galera, até aqui nada de novo tirando o objeto Sequence chamado Seq, que criamos no Passo 2, como um recurso para criar um seqüenciador(incremento) de valores utilizado como mecanismo de numeração dos registros que estão sendo inseridos em nossa Tabela. Vale ressaltar que este numerador esta sendo gerado durante o processamento do comando Select.

— Passo 7 — Limpando o Cache de Execução – Procedure e Buffer —

DBCCDROPCLEANBUFFERS

DBCCFREEPROCCACHE

Go

Você pode estar se perguntando o porquê, estamos fazendo a Limpeza do Cache de Execução existente neste momento no SQL Server. Na verdade isso não é obrigatório, decidi fazer uso deste procedimento para garantir e demonstrar que não existe nada residente em memória e que o SQL Server deverá criar novos planos para as transações que estarão sendo processadas.

Observações

  • Use DBCC FREEPROCCACHE para limpar o cache do plano cuidadosamente. Por exemplo, liberar o cache do plano faz com que um procedimento armazenado seja recompilado em vez de reutilizado no cache.Isso pode causar uma diminuição súbita e temporária no desempenho de consulta.

 

 

  • Para cada armazenamento em cache limpo no cache do plano, o log de erros do SQL Server conterá a seguinte mensagem informativa: “O SQL Server encontrou %d ocorrência(s) de liberação de armazenamento em cache ‘% s’ (parte do cache do plano) devido às operações ‘DBCC FREEPROCCACHE’ ou ‘DBCC FREESYSTEMCACHE'”. Essa mensagem é registrada a cada cinco minutos, desde que o cache seja liberado dentro desse intervalo de tempo.

 

 

O próximo passo será realizar a criação do ColumnStore Index, chamado ColumnStoreIndex_Registros, conforme apresenta a Figura 4:

— Passo 8 — Criando o ColumnStore Index —

CREATENONCLUSTEREDCOLUMNSTOREINDEXColumnStoreIndex_Registros

ONdbo.Registros

(

Descricao,

Valor,

Date,

Time

)

Go

ColumnStoreIndex4

Figura 4: Relação de Índices existentes na Tabela Registros, incluindo o ColumnStore Index.

Pois bem, para ilustrar nosso cenário, vamos fazer a ativação das Estatíticas de Time e IO para utilizarmos como indicadores de comparação quando estivermos ou não fazendo uso do ColumnStore Index, para isso executaremos o Passo 9.

— Passo 9 — Ativando as Estatísticas de Time e IO —

SETSTATISTICSTIMEON

SETSTATISTICSIOON

Go

Muito bem, estatísticas ativas, a partir de agora nossas transações terão o controle de tempo de I/O sendo apresentadas em tela como indicadores ou medidores de desempenho. Nosso próximo passo é executar o Passo 10 e Passo 11, observando as diferenças apresentada entre os Planos de Execução.

— Passo 10 — Executando novamente o Select com ColumnStore Index e Verificar o Plano de Execução —

SelectNextValueforSeqAsCodigo,Descricao,Valor,Date,TimefromRegistros

Go

— Passo 11 — Executando novamente o Select ignorando o ColumnStore Index e Verificar o Plano de Execução —

SelectNextValueforSeqAsCodigo,Descricao,Valor,DatefromRegistros

OPTION (IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX);

Go

Neste momento podemos realizar a execução do Passos 10 e 11, em seguida poderemos observar o resultado deste processamento, com base, nos operadores e custo de processamento de cada operador apresentado pelo Plano de Execução. Então vamos nessa, hora de executar os próximos passos e conferir o seu resultado apresentado abaixo na Figura 5.

ColumnStoreIndex5

Figura 5: Resultado apresentado pelo Plano de Execução, no momento do processamento dos Passos 10 e 11.

Podemos facilmente notar que o custo de Processamento do Passo 10, que faz uso do nosso ColumnStore Index foi de 27%, sendo que, o operador ColumnStore Index Scan, consumiu 98% de processamento. Em contra partida o Passo 11, consumiu 73% do custo de processamento, onde 99% deste processamento foi consumido pelo operador Index Scan.

Entendo que neste momento, você já pode ter entendido e observado como o ColumnStore Index pode fazer diferença, principalmente quando estamos fazendo uma consulta de dados, os demais passos vou deixar como complemento, na verdade com passos adicionais para representar outros cenários de comparação e uso do ColumnStore Index em relação a Tabelas e Índices.

— Passo 12 — Executando novamente o Select + Group By com ColumnStore Index e Verificar o Plano de Execução —

SelectNextValueforSeqAsCodigo,Descricao,Valor,Date,Count(Time)AsContagemfromRegistros

GroupByDescricao,Valor,Date

Go

— Passo 13 — Executando novamente o Select + Group By ignorando o ColumnStore Index e Verificar o Plano de Execução —

SelectNextValueforSeqAsCodigo,Descricao,Valor,Date,Count(Time)AsContagemfromRegistros

GroupByDescricao,Valor,Date

OPTION (IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX);

Go

— Passo 14 — Desativando as Estatísticas de Time e IO —

SETSTATISTICSTIMEOFF

SETSTATISTICSIOOFF

Go

Finish!!!

Conclusão

O ColumnStore Index, com certeza representa uma evolução nos recursos e tecnologias de bancos de dados relacional criada para se trabalhar com grandes volumes de dados, a maneira com que os dados são armazenados no ColumnStore Index nos permitem conseguir um ganho de performance de maneira perceptível e satisfatória.

As vantagens que este tipo de recurso pode apresentar são inúmeras, desde o processo de configuração até mesma a forma de uso, que possibilita ao SQL Server adaptar-se no momento da execução da transação que esta fazendo a consulta dos dados.

Espero que o material apresentado neste artigo possa ser útil e colabore com suas atividades, vou continuar testando novos recursos presentes no Microsoft SQL Server 2012 que foram melhorados na versão 2014.

Mais uma vez obrigado, nos encontramos em breve.

Até mais.