时序数据库推荐taos
时序数据库(Time Series Database,TSDB) 全称为时间序列数据库。时间序列数据库指主要用于处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。
大家在开发的时候都想把日志详详细细的记录,不管以后遇到问题查询,还是对客户数据进行分析都是很有价值的。但是,我们很快会发现,这些日志实在是太大量了,存储成文本动不动就n个G,分析起来也麻烦。普通数据库根本承载不了这么大的数据。于是我们必须寻找一种新型的数据库。
时序数据库,这种数据库大量应用在物联网上。能够进行超大数据量的记录,关键由于其时序的特性,能够很快的读取。最NB的是,数据库的占用空间远比文本日志小,而且支持很多数据库语法的操作,可以做一些分析。我只能说,这种数据库真的是太棒了,太值得大家学习研究了。
当然优点之外就是缺点了,这种数据库跟其他主流数据库比就太小众了。遇到的坑后很难找到解决办法,很多时候要购买官方的售后服务。这里我就说一点自己遇到的实际问题,时序数据库插入的时候一定要按时间顺序插,如果乱序很高概率把数据库弄崩了,这个重启也恢复不了,多半要找官方协助处理了。所以写入数据的时候一定要注意。如果是乱序插,有专门的数据库语法。
但是总的来说,如果不重要的数据。像日志类用于分析,完全可以弄个这类数据库玩玩,速度高效,太高效了。
【db_taos.py】
# -*- coding: UTF-8 -*- import taos class db_taos(object): conn = None def __init__(self, host, username, password, db, config='/etc/taos'): self.host = host self.username = username self.password = password self.db = db self.config = config #self.conn = pymysql.connect(host=self.host, port=self.port, user=self.username, password=self.password, db=self.db,charset=self.charset) #self.cursor = self.conn.cursor(cursor=pymysql.cursors.DictCursor) self.conn = taos.connect(host=self.host, user=self.username, password=self.password,database=self.db) self.cursor = self.conn.cursor() #use_db_str='use '+self.db #print(use_db_str) #self.cursor.execute(use_db_str) def close(self): self.cursor.close() self.conn.close() def select_all(self, sql): list_data = () try: self.cursor.execute(sql) list_data = self.cursor.fetchall() except Exception as e: print(e) return list_data def dosql(self, sql): #print(sql) count = 0 try: count = self.cursor.execute(sql) except Exception as e: print(e) return count