Академический Документы
Профессиональный Документы
Культура Документы
O que é.
O diferencia dos bancos tradicionais.
E quais ferramentas existentes.
Linguages de consultas a dados em big data(AQL, JAQL, CQL, JSON, HQL).
o que são, exemplos de sintaxes e quais ferramentas existentes.
O que é NoSql
Para falarmos de NoSql Database, vamos cohecer primeiramente sua origem, como
começou e quem o trouxe ao mundo do armazenamento de dados, para então
conhecer mais o que é o NoSQL, e qual a utilização, é importante saber algumas
coisas antes.
Seu autor, Carlo Strozzi, alega que o movimento NoSQL "é completamente distinto
do modelo relacional e portanto deveria ser mais apropriadamente chamado
"NoREL" ou algo que produzisse o mesmo efeito".
Bancos de dados NoSQL são bancos de dados não relacionais, otimizados para
performance escalável e modelos de dados sem esquema. São amplamente
reconhecidos por sua facilidade de desenvolvimento, baixa latência e resiliência,
porém oferecem vantagens e desvantagens diferentes.
Nos RDBMSs, as consultas de dados são flexíveis, mas têm um custo relativamente
alto e não escalam com facilidade em situações de grande volume de tráfego. Em
um banco de dados NoSQL, há formas limitadas de consultar dados com eficiência.
As demais formas de consulta podem apresentar alto custo e baixa performance.
Frente a isso, os bancos de dados NoSQL, vão ficando mais populares entre as
grandes empresas pois reúnem ainda as características de poder trabalhar com
dados semi-estruturados ou crus vindos de diversas origens (arquivos de log,
web-sites, arquivos multimídia, redes sociais, etc...).
Caracteristicas:
Quadro comparativo
Ferramentas existentes.
Bancos de dados NoSQL não fornecem uma linguagem query declarativa de alto
nível como o SQL para evitar tempo extra em processamento. Em vez disso,
executar o querying nesse banco de dados é um modelo de dados específico.
Muitas das plataformas NoSQL permitem interfaces RESTful nos dados, enquanto
outras oferecem query APIs.
AQL:
A sintaxe das consultas AQL são diferentes das SQL, mesmo que algumas
palavras-chave sejam as mesmas. No entando, a AQL deve ser fácil de entender
para qualquer pessoa com um pouco de experiência com SQL.
Syntax:
Consulta:
1 - RETURN DOCUMENT("users/phil");
Insert:
1-
INSERT {
firstName: "Anna",
name: "Pavlova",
profession: "artist"
} IN users
Update:
1 –
UPDATE "PhilCarpenter" WITH {
status: "active",
location: "Beijing"
} IN users
3 –
FOR u IN users
FILTER u.status == "not active"
UPDATE u WITH { status: "inactive" } IN users
RETURN NEW
JAQL
[
{ id: 10,
name: "Joe Smith",
email: "JSmith@email.com",
zip: 85150
},
{ id: 20,
name: "Alice Jones",
email: "AJones@email.com",
zip: 82116
}
]
Amostra de documento de JSON
A Jaql usa um modelo de dados muito simples, um valor de JDM (Modelo de Dados
de Jaql) que é um átomo, uma matriz ou um registro. Os tipos atômicos mais
comuns são suportados, incluindo sequências, números, valores nulos e datas. As
matrizes e registros são tipos compostos que podem ser aninhados de modo
arbitrário. De modo mais detalhado, uma matriz é uma coleção ordenada de valores
que pode ser usada para modelar as estruturadas de dados como vetores, listas,
conjuntos ou pacotes. Um registro é uma coleção não ordenada de pares de valores
de nomes que pode modelar estruturas, dicionários e mapas. Apesar de sua
simplicidade, o JDM é bastante flexível. Ele permite que a Jaql opere com uma
variedade de diferentes representações de dados para entrada e saída, incluindo
arquivos de texto delimitado, arquivos de JSON, arquivos binários, Arquivos de
Sequência da Hardtop, bancos de dados relacionais, armazenamentos de valores
de chave ou documentos XML. As funções são valores de primeira classe na Jaql.
Elas podem ser designadas a uma variável e têm alta ordem, podendo ser passadas
como parâmetros ou usadas como um valor de retorno. As funções são o principal
ingrediente para a possibilidade de reutilização, já que qualquer expressão de Jaql
pode ser contida em uma função e que uma função pode ser parametrizada em
maneiras poderosas. A próxima lista é um exemplo de um script de Jaql que
consiste de uma sequência de operadores.
Sintaxe JAQL
import myrecord;
countFields = fn(records) (
records
-> transform myrecord::names($)
-> expand
-> group by fName = $ as occurrences
into { name: fName, num: count(occurrences) }
);
read(hdfs("docs.dat"))
-> countFields()
-> write(hdfs("fields.dat"));
JAQL - Script de Jaql que consiste de uma sequência de operadores.
CQL
Sintax CQL
SELECT * FROM MyTable;
UPDATE MyTable
"Bar" int
);
JSON
<id>1</id>
<nome>Alexandre Gama</nome>
<endereco> R. Qualquer</endereco>
JSON:
HQL
A HQL tem sua própria sintaxe e gramática sendo escritas como strings ao contrário
da API Criteria do Hibernate que tem uma forma de uma API convencional do Java.
As consultas HQL são traduzidas pelo Hibernate em consultas SQL e, além disso, o
Hibernate também provê uma API que permite consultas SQL diretamente.
Uma grande vantagem da HQL é que ela é bastante fácil de ser utilizada e muito
intuitiva. O uso da HQL é sempre bastante recomendada para evitarmos problemas
de portabilidade e principalmente termos como vantagem a geração do SQL por
parte do Hibernate que é feito da melhor forma e mais otimizada além também de
utilizar as estratégias de cache que o Hibernate cria.
Sintaxe:
O HQL basicamente utiliza as operações Select, Insert Update e Delete, exemplos
abaixo.
[WHERE logicalExpression];
[SELECT [DISTINCT] property [, ...]] FROM path [[AS] alias] [, ...] [FETCH
ALL PROPERTIES]
WHERE logicalExpression
HAVING logicalExpression
https://www.devmedia.com.br/introducao-aos-bancos-de-dados-nosql/26044
https://aws.amazon.com/pt/nosql/
https://imasters.com.br/artigo/21781/banco-de-dados/escolhendo--a-ferramenta-
certa-para-o-banco-de-dados-nosql/
https://imasters.com.br/artigo/21781/banco-de-dados/escolhendo--a-ferramenta-
certa-para-o-banco-de-dados-nosql/
https://docs.arangodb.com/3.0/AQL/
Linguagem JAQL
https://imasters.com.br/artigo/24486/software-livre/utilize-linguagens-parecidas-com-
a-sql-para-a-estrutura-do-mapreduce/?trace=1519021197&source=single
Linguagem CQL
https://docs.datastax.com/en/dse/6.0/cql/cql/cql_using/introTOC.html
https://imasters.com.br/noticia/atualizacao-do-cassandra-ganha-batches-atomicos-
nos-virtuais-e-melhorias-na-cql/?trace=824205206&source=news-search
Linguagem JSON
https://www.devmedia.com.br/json-tutorial/25275
Linguagem HQL
https://www.devmedia.com.br/introducao-ao-hibernate-query-language-hql/29581