Fiware Orion Broker and Database Connectivity - fiware

We are using MongoDB for our on-premise environment.
When would Orion officially support AWS DocumentDB
Would Orion drop MongoDB after supporting DocumentDb or support both in future.
These questions came up after seeing the few related discussion.
Is Orion compatible with AWS DocumentDB #3778
https://github.com/telefonicaid/fiware-orion/issues/3778
Fiware stack iotagent,Orion context broker compatibility with AWS DocumentDB instead of mongoDB
Geospatial - Geometry Specifiers
https://docs.aws.amazon.com/documentdb/latest/developerguide/mongo-apis.html#mongo-apis-geospatial
Updated Query
What software stack (set of components, environment) is officially supported by FIWARE community?
-> Orion v3.0.0 should use Mongo 4.4 with CentOS 8 on x86_64?
Does Orion v3.0.0 officially support using AWS DocumentDB as a backend DB except for some known limitations such as geoqueries.

We took a quick look at DocumentDB and if I'm not wrong, there is no support for geoqueries, thus not really interesting for Orion/Orion-LD. And no, I strongly doubt we'd drop mongo, both would most probably be supported simultaneously.

As far as I understand, AWS Document DB is a kind of clone of the official MongoDB software. Taking into account the fixes done in the context the issue you cite it should be supported since Orion 3.0.0 (maybe with some limitations, as the geo-queries that #kzangeli mentions). If you have evidences on the contraty, please publish them as comment in that issue.
Orion will not drop support of MongoDB in favour of any of their un-official clones.
EDIT:
What software stack (set of components, environment) is officially supported by FIWARE community? -> Orion v3.0.0 should use Mongo 4.4 with CentOS 8 on x86_64?
That's correct with regards to Orion. As alternative, you can also use docker-based deployment, so you could use any (hosting) operating system able to run docker containers.
Does Orion v3.0.0 officially support using AWS DocumentDB as a backend DB except for some known limitations such as geoqueries.
No. The only DB officially supported by Orion is MongoDB. However, the lack of official support doesn't means no support at all ;). You are encourage to test and tell us how it goes.

Related

Is it mandatory to use Couchbase at both client and server end for seamless sync operations?

I want to know how to sync Couchbase with other Databases seamlessly? Can we use different databases with Couchbase in the same project?
As you haven't specified which databases you have in mind, I will give you a broad answer:
Mobile: Couchbase can be sync with Couchbase Lite (https://www.couchbase.com/products/lite) via Sync Gateway - the middleware between cblite and Couchbase Server. Sync Gateway is mandatory in this case for security reasons, as you should not simply expose your database on the web.
Xamarin: https://blog.couchbase.com/synchronized-drawing-apps-with-couchbase-mobile/
Android: https://docs.couchbase.com/couchbase-lite/current/java-android.html
Swift: https://docs.couchbase.com/couchbase-lite/current/swift.html
Java: https://docs.couchbase.com/couchbase-lite/current/java-platform.html
Others: https://docs.couchbase.com/couchbase-lite/current/index.html
Couchbase Lite 1.x could also be sync with PouchDB, but we dropped this support on Couchbase Lite 2.x as we rewrote the whole thing and this is a feature yet to come.
Server: One of the most common ways to sync Couchbase Server with another database is through the Kafka Connector https://docs.couchbase.com/kafka-connector/current/index.html

MySQL JDBC SSL Client Certificates without keystore (SSLSocketFactory)

Google Cloud SQL (MySQL) supports SSL Client Certificates for securing connections. I have gotten these working with the mysql CLI client and with MySQL-python without any drama, but Java's JDBC driver model seems to be significantly less flexible. I was able to get it working by importing the necessary keys and certificates into my keystore, but it does not appear that I can easily provide a specific certificate to use for a particular connection at runtime.
For my use storing all the certificates in a single keystore per JVM won't work, we have a multi-tenant environment with dozens of isolated client certificates. The PostgreSQL JDBC documentation offhandedly mentions it should be possible by implementing your own SSLSocketFactory (source):
Information on how to actually implement such a class is beyond the scope of this documentation. Places to look for help are the JSSE Reference Guide and the source to the NonValidatingFactory provided by the JDBC driver.
The Java SSL API is not very well known to the JDBC driver developers and we would be interested in any interesting and generally useful extensions that you have implemented using this mechanism. Specifically it would be nice to be able to provide client certificates to be validated by the server.
The only implementation I have seen is GoogleCloudPlatform/cloud-sql-mysql-socket-factory which on-the-fly queries the Google Cloud APIs to retreive emphemeral ssl client certificates. This is what I'm starting with, but I'm disheartened by the fact some basic socket properties (notably connectTimeout and socketTimeout) are not currently implemented.
Are there other SSLSocketFactory implementations I should be aware of? It seems like a generic implementation would be useful for multiple JDBC drivers (MySQL connector/J, PostgreSQL pgJDBC and Oracle offer some client cert support). That way JDBC connection strings could support client certificates as standardize parameters (base64 encoded?) just as usernames and passwords are currently included.

Fiware: Can we use cygnus on Raspberry Pi

Can we install cygnus on RaspberryPi?
Thinking of using it with Cepheus to add persistance on the gateway level.
Thanks in advance for your help!
Never tried, nevertheless it is a Java application, so having a JVM and the proper libraries should work. Most probably the memory is a problem, so it is probably you could not handle a high througput of notifications. In any case, as said, it is a matter of trying.
The keypoint for using it with Cepheus is if Cepheus notifies in the same format than Orion Context Broker. If not, Cygnus will not understand the notifications.
Another important thing is the storage aimed to be used for persistence. I don't know if any of the supported storages in Cygnus, for instance MySQL or MongoDB, can be run wihtin a Raspberry Pi! In this case, the best option may be to install the storage in a remote machine.

How to connect to my MQTT Broker in Openshift

Following these two tutorials (https://www.anavi.org/article/182/ and http://wei-meilin.blogspot.tw/2014/05/red-hat-openshift-xpaas-simple-mqtt.html) I have installed a MQTT Broker using JBoss Fuse.
Although my mqtt-container disappears after a while (I don't know why) I can make a port-forwarding and test the broker.
But I would like to know how to connect directly to the broker. Do you know how to do it?
I have tried this tutorial (http://training.runcloudrun.com/advanced/16-Network-and-Protocols.md.html - AMQ Example) but I don't have access to "/var/lib/openshift/.httpd.d/sniproxy.cfg"
I am the author of the first tutorial that you pointed out. If you want to use MQTT without local port forwarding please have a look at the remark at the article on my blog and the AMQ cartridge that demonstrates the SNI features:
The port forwarding is not convenient for real life cases, especially if the MQTT clients are working on embedded devices such as microcontrollers and it is recommended to use a SNI Proxy as explained here: http://training.runcloudrun.com/advanced/16-Network-and-Protocols.md.html
I was using Online Openshift and that feature is only available for Enterprise edition.
Why doesn't Openshift have this feature (complete) in the Online mode?
One way to work around is to use the mqtt over websocket feature with a DIY cartridge. See the SO question "How can I access socket through Openshift" for some pointers to further details about how to run websocket on openshift.
The mosquitto seems to have implemented the websocket feature though I have not verified by testing it out.

Legstar module for mainframe connectivity

We don't have CICS Tx Gateway installed but do have CICS Tx Server. I want to know if Legstar can connect from an ESB like (Mule,Camel,JBossESB,WSO2) to the z/OS mainframe using this module to CICS Transaction Server. Alternatively, if there are other options to connect to the mainframe, feel free to suggest.
TIA.
I think I saw in one of your several questions on this topic that you are using CICS TS 3.2; there is a section in the documentation germane to the discussion called Connecting CICS to the Web. Documentation for later versions and releases of CICS TS are available here.
As Joe Zitzelberger indicates, you can use raw TCP/IP sockets (we have done this since CICS TS version 1 more than a decade ago), REST/POX (we have done this since version 2.1 which we started using in 2006), and SOAP (available via a support pack in 2.3 and built into the product since 3.1).
You can also talk to CICS via MQ.
More discussion here.
Update per comment from OP: These are realtime synchronous interactions. In our case, response time is subsecond.
You can do a direct connection to CICS/TS with SOAP over HTTP to execute your CICS transactions and to return your data.