ICT-CPM1-Monitoring-mongodb-editedHSO - TWiki

Download Report

Transcript ICT-CPM1-Monitoring-mongodb-editedHSO - TWiki

Summary of Alma-OSF’s
Evaluation of MongoDB
for Monitoring Data
Heiko Sommer
June 13, 2013
Heavily based on the presentation by
Tzu-Chiang Shen, Leonel Peña
ALMA Integrated Computing Team
Coordination & Planning Meeting #1
Santiago, 17-19 April 2013
Monitoring Storage Requirement
 Expected data rate with 66 antennas:
 150,000 monitor points (“MP”s) total.
 MPs get archived once per minute
• ~1 minute of MP data bucketed into a “clob”
 ~ 7000 clobs/s ~ 25 - 30 GB/day, ~10 TB/year
• 2500 clobs/s + dependent MP demultiplexing + fluctuations
 ~ equivalent to 310KByte/s or 2,485Mbit/s
 Monitoring data characteristic
 Simple data structure: [ID, timestamp, value]
 But huge amount of data
 Read-only data
ICT-CPM1 17-19 April 2013
Prior DB Investigations
 Oracle: See Alisdair’s slides.
 MySQL
 Query problems, similar to Oracle DB
 HBase (2011-08)
 Got stuck with Java client problems
 Poor support from the community
 Cassandra (2011-10)
 Keyspace / replicator issue resolved
 Poor insert performance: Only 270 inserts / minute
(unclear what size)
 Clients froze
 These experiments were done “only” with some help from archive operators,
not in the scope of a student’s thesis like it was later with MongoDB.
 Also “administrational complexity” was mentioned, without details.
ICT-CPM1 17-19 April 2013
Very Brief Introduction of
MongoDB
 no-SQL and document oriented.
 The storage format is BSON, a variation of JSON.
SQL
mongoDB
Database
Database
Table
Collection
Row
Document
Field
Field
Index
Index
 Documents within a collection can differ in structure.
 For monitor data we don’t really need this freedom.
 Other features: Sharding, Replication, Aggregation
(Map/Reduce)
ICT-CPM1 17-19 April 2013
Very Brief Introduction of
MongoDB …
A document in mongoDB:
{
_id: ObjectID("509a8fb2f3f4948bd2f983a0"),
user_id: "abc123",
age: 55,
status: 'A'
}
ICT-CPM1 17-19 April 2013
Schema Alternatives
1.) One MP value per doc
 One MP value per doc:
 One MongoDB collection total, or one per antenna.
ICT-CPM1 17-19 April 2013
Schema Alternatives
2.) MP clob per doc
 A clob (~1 minute of flattened MP data):
 Collection per antenna / other device.
ICT-CPM1 17-19 April 2013
Schema Alternatives
3.) Structured MP /day/doc
 One monitor point
data structure per day
 Monthly database
 Shard key = antenna + MP,
keeps matching docs on the
same node.
 Updates of pre-allocated
documents.
ICT-CPM1 17-19 April 2013
Analysis
 Advantages of variant 3.):
 Fewer documents within a collection
• There will be ~150,000 documents per day
• The amount of indexes will be lower as well.
 No data fragmentation problem
 Once a specific document is identified ( nlog(n) ), the
access to a specific range or a single value can be done
in O(1)
 Smaller ratio of metadata / data
ICT-CPM1 17-19 April 2013
How would a query look
like?
 Query to retrieve a value with seconds-level
granularity:
 Ej: To get the value of the
FrontEnd/Cryostat/GATE_VALVE_STATE at 2012-0915T15:29:18.
db.monitorData_[MONTH].findOne(
{"metadata.date": "2012-9-15",
"metadata.monitorPoint": "GATE_VALVE_STATE",
"metadata.antenna": "DV10",
"metadata.component": "FrontEnd/Cryostat”},
{ 'hourly.15.29.18': 1 }
);
ICT-CPM1 17-19 April 2013
How would a query look like
…
 Query to retrieve a range of values
 Ej: To get values of the
FrontEnd/Cryostat/GATE_VALVE_STATE at minute 29
(at 2012-09-15T15:29)
db.monitorData_[MONTH].findOne(
{"metadata.date": "2012-9-15",
"metadata.monitorPoint": "GATE_VALVE_STATE",
"metadata.antenna": "DV10",
"metadata.component": "FrontEnd/Cryostat”},
{ 'hourly.15.29': 1 }
);
ICT-CPM1 17-19 April 2013
Indexes
 A typical query is restricted by:
 Antenna name
 Component name
 Monitor point
 Date
db.monitorData_[MONTH].ensureIndex(
{ "metadata.antenna": 1, "metadata.component": 1,
"metadata.monitorPoint": 1, "metadata.date": 1
}
);
ICT-CPM1 17-19 April 2013
Testing Hardware / Software
 A cluster of two nodes were created
 CPU: Intel Xeon Quad core X5410.
 RAM: 16 GByte
 SWAP: 16 GByte
 OS:
 RHEL 6.0
 2.6.32-279.14.1.el6.x86_64
 MongoDB
 V2.2.1
ICT-CPM1 17-19 April 2013
Testing Data
 Real data from Sep-Nov of 2012 was used initially, but:
 A tool to generate random data was implemented:









Month: 1 (February)
Number of days: 11
Number of antennas: 70
Number of components by antenna: 41
Monitoring points by component: 35
Total daily documents: 100.450
Total of documents: 1.104.950
Average weight by document: 1,3MB
Size of the collection: 1,375.23GB
 Total index size 193MB
ICT-CPM1 17-19 April 2013
Database Statistics
ICT-CPM1 17-19 April 2013
Data Sets
ICT-CPM1 17-19 April 2013
Data Sets …
ICT-CPM1 17-19 April 2013
Data Sets
ICT-CPM1 17-19 April 2013
Schema 1: One Sample of
Monitoring Data per Document
ICT-CPM1 17-19 April 2013
Proposed Schema:
ICT-CPM1 17-19 April 2013
More tests
 For more tests, see
https://adcwiki.alma.cl/bin/view/Software/HighVolu
meDataTestingUsingMongoDB
ICT-CPM1 17-19 April 2013
TODO
 Test performance of aggregations/combined
queries
 Use Map/Reduce to create statistics (max, min,
avg, etc) of range of data to improve performance
of queries like:
 i.e: Search monitoring points which values >= 10
 Test performance under a year worth of data
 Stress tests with big amount of concurrent queries
ICT-CPM1 17-19 April 2013
Conclusion @ OSF
 MongoDB is suitable as an alternative for
permanent storage of monitoring data.
 Reported 25,000 clobs/s ingestion rate in the tests.
 The schema + indexes are fundamental to achieve
milliseconds level of responses
ICT-CPM1 17-19 April 2013
Comments
 What are the requirements going to be like?
 Only extraction by time interval and offline processing?
 Or also “data mining” running on the DB?
 All queries ad-hoc and responsive, or also batch jobs?
 Repair / flagging of bad data? Later reduction of
redundancies?
 Can we hide the MP-to-document mapping from
upserts/queries?
 Currently queries have to patch together results at the 24
hour and monthly breaks.
ICT-CPM1 17-19 April 2013