Soporte consultas SQL sobre BDTR SOFIA2

En la implementación de referencia (RI) la BDTR (Base de Datos Tiempo Real) de SOFIA2 se soporta sobre MongoDB, MongoDB es una base de datos NoSQL de almacenamiento documental (JSON), de alto rendimiento, con soporte de consultas complejas incluyendo consultas geoespaciales y con escalabilidad horizontal incluyendo Sharding.

MongoDB ofrece un lenguaje de consultas muy potente basado en Javascript que SOFIA2 soporta por completo. Además de soportar este lenguaje, para los usuarios de la Plataforma que prefieran una sintaxis SQL SOFIA2 ofrece un motor de consultas SQL sobre la BDTR (en este post podéis ver como mapean las consultas SQL con las consultas nativas MongoDB):

SOFIA2 para estas consultas transforma la query SQL al lenguaje de la BDTR subyacente (que podría no ser MongoDB).

Un ejemplo de sentencia en SQL-Like sería:

select * from SensorTemperatura where SensorTemperatura.medida > 25

Y su equivalente en MongoDB:

db.SensorTemperatura.find({"SensorTemperatura.medida":{$gt:25}});

Dentro del motor de consultas SOFIA2 soporta:

Expresiones:

  • SELECT
  • FROM
  • WHERE
  • ORDER BY
  • GROUP BY
  • COUNT
  • LIMIT
  • HAVING
  • ASC
  • DESC
  • AS

Operadores de comparación: >, <, =, >= , <=, !=

Operadores lógicos ||, &&, OR, NOT, AND

Otros operadores: +, MAX, MIN, SUM, AVG

Algunas consultas SQL-LIKE soportadas sobre la BDTR:

SQL-Like
select * from SensorTemperatura;
select identificador,unidad from SensorTemperatura;
select * from SensorTemperatura where SensorTemperatura.unidad = “C”;
select * from SensorTemperatura where SensorTemperatura.medida = 20 and SensorTemperatura.unidad = “C”;
select * from SensorTemperatura where “SensorTemperatura.unidad” = “C” order by “SensorTemperatura.identificador” ASC;
select count(*) from SensorTemperatura;
select count(*) from SensorTemperatura where SensorTemperatura.medida >20
select from SensorTemperatura limit 1
select distinct (SensorTemperatura.identificador) from SensorTemperatura;
select * form SensorTemperatura limit 5 skip 10
select SensorTemperatura.identificador, count(*) as total from SensorTemperatura
select count(*) from SensorTemperatura group by SensorTemperatura.identificador having count(*) >1
select SensorTemperatura.identificador, sum(SensorTemperatura.measure) as total from SensorTemperatura group by SensorTemperatura.identificador
Soporte consultas SQL sobre BDTR SOFIA2

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s