InfluxDB设计原则
InfluxDB 实现了时间序列数据的最佳设计原则。这些设计原则中的某些可能在性能上有相关的权衡。
时间顺序的数据
为了提高性能,数据按时间升序写入。
严格的更新和删除权限
为了提高查询和写入性能,InfluxDB 严格限制 更新 和 删除 权限。时间序列数据主要是新数据,永远不会被更新。删除通常只影响未被写入的数据,争用更新几乎不会发生。
首先处理读取和写入查询
InfluxDB 优先考虑读写请求而非强一致性。InfluxDB 在执行查询时返回结果。任何影响查询数据的事务会随后处理,以确保数据最终一致。因此,如果摄取速度很高(每毫秒多次写入),查询结果可能不包括最新的数据。
无模式设计
InfluxDB使用无模式设计来更好地管理不连续的数据。时间序列数据通常是短暂的,这意味着数据出现几个小时后就消失。例如,一个新的主机启动并报告一段时间,然后被关闭。
个体点的数据集
因为数据集比单个数据点更重要,InfluxDB 实现了强大的工具来聚合数据和处理大数据集。数据点通过时间戳和系列区分,因此在传统意义上没有 ID。
重复数据
为了简化冲突解决并提高写入性能,InfluxDB 假设多次发送的数据是重复数据。相同的数据点不会存储两次。如果为某个点提交了新的字段值,InfluxDB 将用最新的字段值更新该点。在极少数情况下,数据可能会被覆盖。了解更多关于 duplicate points的信息。