terça-feira, 3 de outubro de 2017

Novo Oracle 18c usa machine learning para trabalhar de forma autônoma

Silvia Bassi
02 de Outubro de 2017 no site Computerworld


Larry Ellison, co-fundador da Oracle e seu atual CTO, é conhecido no cenário global pela postura agressiva e assertiva sobre seus produtos e seus concorrentes. Ellison é o Tony Stark (Homem de Ferro) da vida real. Não tem travas na língua. Suas apresentações durante a abertura do Oracle OpenWorld (OOW), em San Francisco, invariavelmente geram polêmica e agitação.

E na noite deste domingo, 1 de outubro, ao falar para os 60 mil participantes do OOW 2017, Ellison não desapontou. O executivo anunciou o novo Oracle 18c, o Oracle Autonomous Database Cloud, que usa machine learning para trabalhar de forma autônoma na sua própria otimização e administração e também na detecção e aplicação de patches contra ataques de cibersegurança de dados.

“Eu não uso a palavra revolucionária para novas tecnologias todo ano aqui na Oracle OpenWorld porque não existem tantas novas tecnologias revolucionárias assim. Mas esta é", disse Ellison sobre o uso de machine learning no Oracle Autonomous Database Cloud. 

Por causa dessa camada de inteligência artificial, o Oracle 18c dispensa o envolvimento humano nas tarefas de ajustes no tamanho da cloud, aplicação de upgrades, aplicações de correções de segurança e ajustes finos. Ele faz isso enquanto está rodando, sem precisar de downtime e sem correr o risco de erro humano no processo e sem precisar de pessoas testando a performance.

O piloto não sumiu, evoluiu

Com o uso da tecnologia de machine learging, "não teremos mais erro do piloto, porque não teremos piloto", diz Ellison. "Por conta disso garantimos no SLA a disponibilidade do banco em 99,995% do tempo, o que significa menos de 30 minutos por ano em downtime". 

Será o fim do emprego de gestor de banco de dados? Para Larry Ellison na verdade é o momento de evolução desse indivíduo, que ficaria com tempo livre para dedicar-se a tarefas mais nobres ou estratégicas como segurança e planejamento da estratégia de analytics. “Vocês verão uma migração, uma evolução dos conhecimentos sobre banco de dados, na qual o foco passa a ser mais no design e esquematização do database, nos diferentes tipos de analytics de dados, incluindo machine learning; e na criação de novas políticas sobre missão crítica e recuperação de desastres.”

Eliminar a intervenção humana também é uma forma, segundo Ellison, de evitar ataques contra os dados de dentro da corporação, um problema mais comum do que as empresas gostariam, e de eliminar os riscos de ataques que acontecem por conta do downtime na hora de aplicar patches de segurança.

Elástico e muito mais barato

Os atributos de automação da Oracle Autonomous Database Cloud fazem do novo banco dados uma plataforma extremamente elástica, capaz de rapidamente adaptar-se a diferentes workloads sem desperdiçar recursos ou tempo. 

“Esse negócio é verdadeiramente elástico, instantâneamente elástico. Portanto você nunca vai provisionar mais recursos do que precisa. É realmente computação on-demand", disse Ellison, voltando suas baterias contra o concorrente, a AWS e sua cloud elástica.

Para provar que a nuvem da Oracle tem muito mais vantagem para os clientes do que a nuvem da Amazon na hora de rodar seu banco de dados, Larry Ellison comandou no palco uma série de testes de workloads comparando a performance das plataformas Oracle Database on Oracle Cloud e Oracle Database rodando na Amazon Relational Database Service (RDS).

Os números apontam para dez vezes menos tempo em média e de cinco a oito vezes menos custo para rodar o mesmo workload na nuvem da Oracle comparada com a AWS. "Esqueça o SLA e a disponibilidade de 99,995% se quiser, pense no seu bolso. Garantimos mais performance por muito menos custo", disse Elllison, prometendo garantir por escrito, no contrato, que o custo dos clientes que migrarem para a nuvem da Oracle será metade do que pagariam na Amazon.

O produto chega em dezembro de 2017 para data warehouse e em junho de 2018 para processamento de workloads de transações online.

segunda-feira, 2 de outubro de 2017

Novidades do C# 7: Out variables

Estou retomando a série de C# 7, e nesse momento os novos compiladores já saíram, assim como o Visual Studio 2017. Então, a partir de agora, vou linkar direto para os docs das funcionalidades, em vez do Github.

Out variables

A ideia é que você possa, em uma única linha, declarar a variável e já lhe atribuir um valor, ao chamar um método que possui uma variável out.
Isso é muito utilizado em métodos do tipo Try. Até o C# 6, você tinha que fazer assim:
1
2
3
int result;
if (int.TryParse("1", out result))
    WriteLine(result);
E agora com C# 7 você pode declarar a variável na mesma linha do TryParse:
1
2
if (int.TryParse("1", out int result))
    WriteLine(result);
E pode também usar a poderosa inferência de tipos do C# e evitar escrever o tipo, no caso int, aqui. Nesse caso, não há uma grande vantagem ao mudar de int pra var, mas a variável de saída poderia ser um tipo mais complexo e chato de digitar, como um IEnumerable<Person<int>> por exemplo. Veja com fica com a inferência do tipo:
1
2
if (int.TryParse("1", out var result2))
    WriteLine(result2);

Escopo

Note que chamei a variável de result2 em vez de result. Isso porque o escopo da variável declarada é o mesmo da expressão em que ela está inserida, ou seja, ela "vaza" para o escopo do if, e, já tendo sido declarada uma variável result antes, a seguinte deve ter outro nome. Inicialmente o escopo seria restrito ao if, mas isso foi alterado ao longo do caminho.
Variáveis de saída são especialmente interessantes quando falamos de expression bodied members (que temos desde o C# 6). Veja como fica bonito um método que combina out variables com um operador ternário, em uma construção impossível na versão anterior:
1
public int? GetValue() => int.TryParse(this.value, out var result) ? (int?)result : null;
É isso, bem simples, mas bastante útil, deixando nosso código bem mais simples e bonito de ler. Já está disponível, então, divirta-se!
Você consegue ler sobre out variables na seção de novidades do C# 7 no Microsoft Docs.