实验性数据组织 - 弹性搜索是否有效?



抱歉,如果这是一个有点抽象的问题,我将尝试提供更多细节。

我运行"实验"(例如各种软件的测试运行(,每个实验都有自己的一组元数据(基本上是键/值对,如开始时间、结束时间、名称、资源基数、系统类型等(和一个或多个与各种性能指标相关的时间序列数据(例如 CPU 和内存使用情况从头到尾以 10 秒间隔(。 数据量不会很大;每月最多几千兆字节。

我想将此数据存储在单个系统中(例如,不是MySQL中的元数据和某些专用时间序列数据库中的性能数据(。elasticsearch会适合这个吗?如何最好地为数据编制索引?

编辑:为了更清楚,这里有一些关于如何组织数据的想法。对于元数据,请使用metadata索引,例如实验aa_12:

{
"_id": "aa_12",
"_source": {
"name": "aa_12",
"start": 1420070400001,
"end": 1420097400001,
"system": "cluster-1",
"nodes": 6,
...
}
}

将实验名称作为_id可以使偶尔的更新更容易(我想(。

然后,对于与此实验关联的时间序列,请使用索引perfdata

,如下所示:
{
"_source": {
"host": "cluster-1-1",
"experiment": "aa_12",
"cpu1": 44,
"cpu5": 40,
"cpu15": 41,
"memtot": 16384,
"memused": 5025,
... rest of metrics
"time": 1420070410001
}
}

因此,例如,我可以查询"在实验 Z 期间为主机 Y 提供指标 X"并使用 kibana/timelion 获取指标图。在这一点上,我担心的是perfdata指数可能会增长到包含大量条目(总体规模不是很大,但仍有数十万/百万个条目(。以上说得通吗?

据我所知,

  • InfluxDB,Cassandra是时间序列数据的不错选择
  • Elasticsearch 是元数据的不错选择

ELasticsearch 是为搜索而构建的,尽管许多人能够通过使用快照和还原功能缓解 Elastic 中的弹性问题,将其用作永久数据存储。这是关于 ElasticSearch 弹性的链接

此外,如果您的用例类似于以下问题,那么 ES 就是您的最佳选择。

  • 是否打算使用 ES 进行搜索?是的
  • 聚合、全文搜索?是的
  • 您是否关心数据弹性?不

如果您确实关心数据弹性,我建议您将元数据存储在 ES 之外的另一个存储 (MySQL( 中,或者使用 ES 的快照或还原功能来保持弹性。

最新更新