[quote=“drea”]Dear Reynald,
- The definition of a TANGO HOST is now more clear - it’s the computer node running the entire TANGO control system.[/quote]
Let me try to be even more precise… The TANGO HOST is defined by a host and a port number. This information is used to locate the Tango Database server, which is running on this host and listening on this port number.
The Tango Database Server will be contacted by a Tango server every time this Tango server is starting, in order to get its configuration from the Tango Database (name of the devices managed by this server, configuration of these devices, … )
The database server will also store in the Tango Database the information necessary to establish the communication with a given Tango device (CORBA IOR in the current implementation).
So when a client will try to connect to a Tango device, it will first contact the database server, which will give him back the information on how to contact this Tango device. The client will then contact the device directly.
Every TANGO device belongs to a specific TANGO control system.
A TANGO control system is composed (among other things) of the following elements:
- The Tango Database
- The database server running on the host and listening on the port defined in the TANGO_HOST environment variable
- The TANGO device servers which can run on many different hosts
- The TANGO devices, which are exported by the TANGO device servers, and which are basically objects (as in object programming languages) on which you can invoke commands and read or/and write attributes.
To refer to a specific TANGO control system, we usually refer to it with its TANGO HOST because this is the minimum information needed to get access to the whole TANGO configuration and to be able to connect to the TANGO devices belonging to this control system.
[quote=“drea”] What I was in fact aiming for is to have multiple HOSTS on the network, with possibly devices from one TANGO HOST communicating with devices on another TANGO HOST. The reason of course is that we would not like a single computer managing the entire global system.
[/quote]
If your system is really big, you can split it in multiple control systems and use several TANGO HOSTS. In that case, it is indeed possible for devices belonging to one TANGO HOST to communicate with devices from another TANGO HOST, using the FQDN (Fully Qualified Device Name).
For instance if you have a device named my/device/name from TANGO_HOST my_tango_host:12345, you can communicate with it using the following name: tango://my_tango_host:12345/my/device/name.
[quote=“drea”] 3) The MySQL TANGO database is probably sufficient to store the control system definition. What I am more worried about is the archiving part - perhaps there are ways to interface between the TANGO archiving mechanism and some form of MySQL cluster / cloudstack in order to have high throughput archiving of raw data. I expect the network to be a 40G Ethernet setup, with quite high data rates coming from the devices. A data rate of 4Tb/s being generated from all various stations will not be uncommon. Of course this is not “control data”, but pure upstream observation data, say spectrum data from radio telescopes. Ideally this data finds its way into some form of datastore. I was wondering if there are recommended ways of interfacing traditional high throughput cloud storage systems with TANGO devices. We can assume there will not be any added computation/compression at this stage, but direct storage. Storage is ideally permanent (unless explicitly removed by higher-level management processes).
[/quote]
The Tango archiving mechanism (Tango historical Database), as of today, is not able and was not designed to cope with your requirements.
We are currently trying to improve it to be able to store data into Apache Cassandra but this might still not fit your needs?
Usually, Cassandra is used with a replication factor >= 3, so this would multiply by at least 3 the network traffic.
Nothing prevents you to use Tango for the control part and to develop a Tango device server managing the streaming part to a specific datastore, using the technology you want.
Maybe someone around here has already encounter similar needs and can give you advices?
Happy to help 