Consultas SQL, nativas y geoespaciales en SOFIA2

SOFIA2 soporta mensajes de Query bien en el lenguaje nativo de la BDTR o bien en lenguaje SQL para la BDTR o la BDH, para eso SOFIA2 incorpora parsers SQL para MongoDB (BDTR) y Hadoop (BDH).

(Más detalle sobre el protocolo de mensajería SSAP aquí)

Request SSAP QUERY Response SSAP QUERY
{“body”: {“query”: “select * from feedAutobus where Feed.assetId=’316′

limit 1,

“queryType”: “SQLLIKE”

},

“direction”: “REQUEST”,

“ontology”: “feedAutobus”,

“messageType”: “QUERY”,

“messageId”: null,

“sessionKey”: “xxx”

}

{“body”: {“data”: [

{“_id”:{“$oid”:“533bff5f50ae67a5ab0c433c”},

,

“Feed”:
{

“assetId”:“316”,

“assetName”:” Autobús nº 316 “,

“assetSource”:“guiaLocal”,

“assetType”:“Autobus”,

“attribs”:

[

{

“name”:“linea”,

“value”:“1”

},

{

“name”:“nombreLinea”,

“value”:“Abente y Lago – Os Castros”

},

{

“name”:“estado”,

“value”:“Tipo de Autobús: Normal piso bajo .

Última parada por la que ha pasado Plaza de Mina, 26 Hora de paso 14:15

Proxima parada: Plaza de Orense\n”

}

],

“feedId”: “1:316:2014-04-02T12:15:28.706266”,

“feedSource”: “guiaLocal”,

“geometry”: {

“coordinates”: [

-8.403705353600992,

43.36721562022267

],

“type”: “Point”

},

“measures”: [ ],

“measuresTimestamp”: {

“$date”: “2014-04-02T12:15:28.706Z”

},

“measuresType”: “INSTANT”,

“timestamp”: {

“$date”: “2014-04-02T12:15:28.706Z”

},

“type”: “MOBILE”

}

}

],

“error”: null,

“errorCode”: null,

“ok”: true

},

“direction”: “RESPONSE”,

“messageId”: null,

“messageType”: “QUERY”,

“ontology”: “feedAutobus”,

“sessionKey”: “xxx”

}

Que también podría hacerse en lenguaje nativo:

{

“body”: {

“query”: “db.feedAutobus.find({‘Feed.assetId’:’316′}).limit(1),

“queryType”: “NATIVE”

},

“direction”: “REQUEST”,

“ontology”: “feedAutobus”,

“messageType”: “QUERY”,

“messageId”: null,

“sessionKey”: “b2c28802-dcd1-448c-8e63-e1039deb82c3”

}

SOFIA2 también soporta consultas geoespaciales, que pueden hacerse con el lenguaje de consultas geospaciales de MongoDB, por ejemplo para la consulta:

db.feedAutobus.find({‘Feed.geometry’ : {$near : {$geometry : {type : ‘Point’, coordinates : [-8.4, 43.37]}}, $maxDistance: 200}} ).limit(1);

Request SSAP QUERY Response SSAP QUERY
{
 "body": {
 "query": "db.feedAutobus.find(
{'Feed.geometry' : {
$near : {$geometry : {
type : 'Point', coordinates : 
[-8.4, 43.37]}}, 
$maxDistance: 200}} ).
limit(1);",
"queryType": "NATIVE"
},
"direction": "REQUEST",
"ontology": "feedAutobus",
"messageType": "QUERY",
"messageId": null,
"sessionKey": 
"xxx"
}
{“body”: {“data”: [

{

“_id”:{“$oid”:“534d7b85d9475fabab962a62”},

,

“Feed”:
{

“assetId”:“374”,

“assetName”:” Autobús nº 374 “,

“assetSource”:“guiaLocal”,

“assetType”:“Autobus”,

“attribs”:
[

{

“name”:“linea”,

“value”:“2A”

},

{

“name”:“nombreLinea”,

“value”:“Puerta Real – Os Castros – Oza”

},

{

“name”:“estado”,

“value”:“Tipo de Autobús: Normal piso bajo minusválido .

Última parada por la que ha pasado Autoridad Portuaria Hora de paso 20:33

Proxima parada: Puerta Real\n”

}

],

“feedId”: “2A:374:2014-04-15T18:33:54.711930”,

“feedSource”: “guiaLocal”,

“geometry”: {

“coordinates”: [

-8.400029224292654,

43.370000426416276

],

“type”: “Point”

},

“measures”: [ ],

“measuresTimestamp”: {“$date”: “2014-04-15T18:33:54.711Z”},

“measuresType”: “INSTANT”,

“timestamp”: {“$date”: “2014-04-15T18:33:54.711Z”

},

“type”: “MOBILE”

}

}

],

“error”: null,

“errorCode”: null,

“ok”: true

},

“direction”: “RESPONSE”,

“messageId”: null,

“messageType”: “QUERY”,

“ontology”: “feedAutobus”,

“sessionKey”: “xxx”

}

Consultas SQL, nativas y geoespaciales en 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