Bancos de dados NoSQL suportar dados semi-estruturados, tipicamente
modeladas como JSON. Eles também fornecem limitados (mas em expansão) linguagens de consulta. Sua idiomática, linguagem não-SQL
construções, as muitas variações, e a falta de semântica formal inibir a profunda compreensão das linguagens de consulta,
e também impedir o progresso no sentido de, poderoso, linguagens de consulta declarativa limpas.
Este documento especifica a sintaxe e semântica da SQL ++,
que é aplicável a ambas as lojas nativas JSON e SQL
bancos de dados. O modelo de dados SQL ++ semi-estruturada é um super conjunto de ambos JSON eo modelo de dados SQL. SQL ++ oferece poderosas capacidades computacionais para o processamento de dados semi-estruturadas semelhante a linguagens de consulta não-relacionais anteriores,
nomeadamente QVG e XQuery. No entanto, SQL ++ é SQL para trás
compatível e é generalizada no sentido de JSON, introduzindo
apenas um pequeno número de extensões de linguagem de consulta para SQL.
Na verdade, os recursos SQL são na maioria das vezes estendida, eliminando as restrições semânticas de SQL, em vez de inventar
novos recursos.
Reconhecendo que a padrão de linguagem de consulta é provavelmente
prematuro para a área em rápida evolução das bases de dados NoSQL,
SQL ++ inclui opções de configuração que formalmente itemize as variações semânticas que os designers de idioma pode
escolher. As opções, muitas vezes referem-se ao tratamento
de semi-structuredness (atributos ausentes, heterogêneos
tipos, etc), onde mais de um abordagens sensíveis são
possíveis.
SQL ++ é unificador: por escolhas adequadas de opções de configuração, a semântica do SQL ++ pode se transformar em os
semântica de linguagens de consulta de banco de dados semi-estruturados existente. A extensa validação experimental mostra como
SQL e quatro linguagens de consulta de banco de dados semi-estruturados
(MongoDB, Cassandra CQL, Couchbase N1QL e AsterixDB AQL) são formalmente descrito por definições adequadas
das opções de configuração.
sendo traduzido, aguarde..
