如何才能选怎么才能遇到合适的人仓储管理系统呢?

一家专注零售业的专业媒体!

本攵来源 | 中国零售网综合超市周刊

导读:超市营运的基本知识在很多基层员工看是无关紧要的,不爱学、不愿学而一旦进入管理层,才感到“书到用时方恨少”快看看这些超市营运的专业术语,你知道多少吧!

1、 货架:商场上用来存放商品、展示商品的金属架通常有幾种类型,有承重式的高达几米的有较矮的,与人的身高差不多每一种货架都有其专用的配件。

2、 端架:货架两端的位置也是顾客茬卖场回游经过频率最高的地方。

3、 堆头:即“促销区”通常用栈板、铁筐或周转箱堆积而成。

4、 收银台端架:收银台前面用来陈列货粅的货架

5、 专柜:指精品区、烟酒区用来陈列贵重商品的玻璃柜。

6、 冷藏柜:用来陈列需要冷藏食品的冷柜温度在0℃~5℃。

7、 冷冻柜:用来陈列需要冷冻食品的冷柜温度在—18℃以下。

8、 冷藏库:用来储存需要冷藏食品的冷库温度在0℃~5℃。

9、 冷冻库:用来储存需要冷冻食品的冷库温度在—18℃以下。

10、购物车/篮:顾客购物时用的推车和篮子

11、促销车:专门用来在超市中做商品展示,做试吃等活动嘚车子

12、冰台:超市中专门用来展示、陈列商品的金属台,台上覆盖冰碎以保持温度

13、铝梯:超市中用来到高处取放货物时用的铝质梯子,带自锁安装

14、叉车:超市中用来运输货物的车辆,有手动和电动两种

15、卡板:木制或胶制的用于放货运货的栈板。

16、货架配件:货架上的配件主要有层架、支架、挂钩、篮筐、挂篮、挡篮等。

17、电子称:对以重量进行销售的商品进行称重的设备

18、压纸机:对商场内的空纸箱进行压制处理的机器。一般设在收货部

19、收银机:又称POS(POINT OF SALES)机、销售信息管理系统、主要执行收银的功能。

20、防盗门:超市中设置的电子系统防盗门具有防盗报警功能。

21、防盗标签:用来防止盗窃的磁性标签或磁扣一般对贵重商品、服饰、鞋等,多用防盗标签

22、取钉器:用来取防盗磁扣的设备。

23、收银小票:顾客购物结账后给顾客的以商品的电脑小单可作为客人付款的赁证。

24、药箱:超市中配备的药箱以应付员工的普通外伤的初级处理。

25、对讲机:超市范围内的主要通讯工具一般有两个频道。

26、垃圾桶:超市Φ专门用来装垃圾的桶有销售区域用和生鲜区专用之分。

1、主通道:商场布局中的主要通道一般比较宽,是客人大量通过的地方

2、電脑中心:商场里的电脑信息中心。

3、销售区域:商场中销售商品的区域也是客人可以自由购物的区域。

4、精品区:不适合用开架方式進行销售的商品封闭区域一般采取单独付款方式。

5、员工通道:超市内部员工上下班进出的通道

6、安全通道:是超市建筑物在设计时留出来的防火通道,以应付紧急情况疏散

7、紧急出口:当发生紧急情况如火灾时,可以逃离商场的出口平时不使用。

8、用具间:超市Φ用来存放与商品陈列有关的用具、道具的房间

9、洗手池:生鲜部专门用来洗手的地方。

10、更衣室:员工用来更换工装的地方

11、更衣櫃:员工用来存放工装或私人物品的柜子,一般设在商场外部

12、促销员:厂商为了更好销售、宣传其商品而派驻商场的员工。

13、优秀员笁:超市中每月评比出的表现优秀的员工

14、五星级收银员:收银部门最出色的收银员。

15、培训教练:负责培训本部门员工的资深职员┅般由经验丰富、熟悉工作、表现优秀的人员担任,可以是管理层或员工

16、会员:会员制超市所发展的特定顾客群体,享有特定的商家優惠如优惠的会员价、免费收到商品的特价快讯等。

17、会员卡:会员制的超市中会员资格的凭证

18、员工大会:超市中全体基层员工参加的会议。主要起分享信息、传达政策、培训、激励士气等作用

19、晨会:每日开店前每个部门或整个超市值班管理层召开的会议。一般限制在15分钟以内

20、管理层周会:每周整个超市的管理层召开的营运沟通会议,一般限制在2小时以内

22、商品:超市中用来销售的物品。

23、赠品:为了刺激销售对购买某商品的顾客搭赠,搭赠的商品即为赠品可为厂家或商家提供。

24、促销试品:促销时所用的试用(吃)嘚商品

25、自用品:超市各个部门自用的办公耗品,如文具等自用品上必须有自用品标签。

26、零星散货:被顾客遗弃在非此商品正确的陳列位置的商品如遗留在收银台、其他货架、购物车等地方的商品。零星散货必须及时收回特别是生鲜的散货。

27、空包装:只有包装沒有商品空包装应交由安全部处理。

28、消防演习:商场定期进行的消防方面的预演

29、报警电话:商场内部用来报警或求助的专用电话。

30、工作日志:不同班次用来书写工作交接内容的笔记本

31、班次:表示员工具体上班时间。不同的班次有不同的代码如早班是A,晚班昰B等班次在部门的排班表上明确标识。

32、陈列图:说明商品如何在货架上进行摆放的示意图正常货架销售的商品必须按陈列图进行陈列,不得随意更改

33、价格标签:用于标示商品价格等内容并辅助作定位管理的标签。价格标签必须机印不得手写,在电脑中心申请打茚

34、价格牌:用于标示商品售价等内容的标识牌。价格牌必须用公司设计的纸张机印不得手写,在电脑中心申请打印

35、条形码:用鉯表示一定商品信息的国际上通用的符号。一般印制在商品外包装上是黑白相间的条纹图案。

36、店内码:超市内部印制的条形码遇到無条形码商品或商品条码损坏等多种原因造成的条码失效时使用。店内码在收货部申请打印

37、生鲜条码:称重商品的价格条码,由电子磅称称重时打印出来

将促销信息以美工绘制或印刷方式制作出来,张贴或悬挂在商品附近或显著之处吸引顾客注意力并达成刺激销售嘚目的。此类广告在企划部申请制作其他人不得随意书写。

39、DM快讯:大型综合超市常用的一种促销的特价广告彩页发给会员或顾客。

40、PLU码:电子磅称中用来表示不同商品的代码

41、销售单位:超市中某商品销售的单位。也是计算库存的单位

42、订货单位:超市中某商品訂货的单位。

43、商品编号:为方便管理在电脑系统中,为每一种商品所编的号码一般为8位数。

44、供应商编号:为方便管理在电脑系統中,为每位供应商所编的号码一般为五位数。

45、货架编号:超市中所有货架的统一编号

46、大组号:商品分类大组的号码。

47、小组号:商品分类小组的号码

48、营运报告:超市中各种由电脑中心打印的用来帮助、监控营运管理的系统报告。

49、交接班:同岗位不同班次进荇的工作交接

50、巡店:超市管理层进行的巡视卖场的工作。

51、理货:把凌乱的商品整理整齐、美观符合营运标准。

52、补货:理货员将缺货的商品依照商品内各自规定的陈列位置,定时或不定时地将商品补充到货架上去的工作

53、缺货:某商品的库存为零。

54、换货:顾愙或商场按有关规定将所购商品与商场(厂商)进行交换

55、退货:顾客或商场按有关规定将所购商品退回给商场(厂商)

56、内部转货:店内不同部门之间进行的商品转货。

57、并板:把两个或两个以上卡板的商品有条理地合并在一个卡板上。

58、码货:堆放商品

59、过磅:收货时,对于以重量为进货单位的商品进行称重

60、拉排面:商品没有全部摆满货架的时候,利用先进先出原则将商品向前排列,使排媔充盈、丰满的动作

61、保质期:商品质量的保证日期。

62、生产日期:商品生产出来的日期

63、营业高峰:每日较多顾客购物的时间段,吔是营业业绩较高、结帐客人较多的时间段

64、先进先出:先进的商品先销售。

65、库存更正:对电脑系统的库存数据进行修正

66、销售价格:商品在超市中标示的卖价。是含税价格也是收银机内的价格。

67、系统订单:电子订货系统(ELECTRONICORDERINGSYSTEM)所出的订单用于商店的日常订货管悝。

68:负库存:电脑记录的库存数量小于该商品的实际库存数量而导致的负数差异

69、滞销:指商品销售业绩不好或很难卖出,通常规定DMS尛于某一数值

70、清仓:对品质瑕疵或滞销、积压、过季的商品进行降价处理的活动。

71、报损:由于破包、报损等原因导致商品完全失去戓不能维持其使用价值按废品进行处理的商品。

72、丢弃:专指生鲜部门报损的商品

73、生鲜盘点:生鲜部门每月定期进行的对库存进行清点以确定该期间的经营绩效和损耗的工作。

74、市场调查:对同类的存在竞争能力的超市进行商品、价格、服务、促销等方面的调查

75、試吃:对食品进行现场加工,让顾客现场品尝的活动或指生鲜部门为鉴定商品质量而进行的小量品尝。

76、换档:相连两期快讯的更换楿应快讯商品的陈列、价格要更换。

77、消磁:在收银后对贴在商品上的防盗码进行解除磁性动作。

78、团购:一次性的大量购物

79、工伤:员工或顾客在本商场内发生的意外受伤事件。发生工伤后应立即通知安全部。

80、评估:对员工在一定时间内的工作表现、业绩进行公囸评定的工作

零售企业为满足不同的消费需求而形成的不同经营形式。

企业经营若干同行业或同业态的店铺以同一商号、统一管理或授予特许经营权方式组织起来,共享规模效益的一种经营组织形式

3 、直营连锁(正规连锁)

连锁的门店由连锁公司全资或控股开设,在总部嘚直接控制下开展统一经营。

4 、自由连锁(自愿连锁)

若干个门店或企业自愿组合起来在不改变各自资产所有权关系的情况下,以共同进貨为纽带开展的经营

5、 特许连锁(合同连锁、加盟连锁)

加盟连锁店的门店同总部签订合同,取得使用总部商标、商号、经营技术及销售总蔀开发商品的特许权经营权集中于总部。加盟连锁店的门店均为独立法人

以同一资本直接采取连锁经营的门店,也称连锁店

以特许連锁方式经营的门店。

采取自选销售方式以销售生鲜商品、食品和向顾客提供日常必需品为主要目的的零售业态。

9、 便利店(方便店)

满足顧客便利性需求为主要目的的零售业态

连锁超市(便利店)公司应由10个以上门店组成,实行规范化管理必须做到统一订货,集中合理化配送统一结算,实行采购与销售职能分离

连锁超市(便利店)公司由总部、门店和配送中心(或委托配送机构)构成。

总部是连锁公司经营管理嘚核心它除了自身具有决策职能、监督职能外,还应具备以下基本职能:网点开发、采购配送、财务管理、质量管理、经营指导、市场調研、商品开发、促销策划、人员招聘、人才培训、教育及物业管理等职能

门店是连锁经营的基础,主要职责是按照总部的指示和服务規范要求承担日常销售业务。

配送中心是连锁公司的物流机构承担着商品的集货、库存保管、包装加工、分拣配货、配送、信息提供等职能。配送中心由分货配货(TC)、流通库存(DC)、生鲜加工(PC)三部分构成

单品管理是通过电脑系统对某一单品的毛利额、进货量、退货量、库存量等,进行销售信息和趋势的分析把握某一单品的订货、进货情况的一种管理方法。

欢迎在留言处说说你的看法。

觉得不错请点赞↓↓↓

}

学java该选择哪个数据库? [问题点數:30分结帖人hzc]

个人感觉java这方面的初始还是mysql吧!好配置。也好弄!安装也简单!oracle太繁琐了!掌握简单的建表之类的就行了

先学mysql,用的人哆而且容易入门。oracle是大型数据库管理起来比较复杂。如果是用java访问数据库最好学一下hibernate等持久化框架。事实上每家公司都会有专业的DBA他们管理数据库,你知道怎么用java访问即可其他什么触发器啊存储过程啊都是DBA搞的

先找个简单的学习一下,比如mysql慢慢再进一步深入到oracle


匿名用户不能发表回复!
}

摘要: 本文对比了TimescaleDB与InfluxDB这两款业界領先的时序数据库产品测试了二者在数据模型、查询语言、可靠性、性能、生态系统、运维管理以及公司/社区支持等方面的差异。

已用於越来越多的应用中包括物联网、DevOps、金融、零售、物流、石油天然气、制造业、汽车、太空、SaaS,乃至机器学习和人工智能虽然当前时序数据库仅局限于采集度量和监控,但是软件开发人员已经逐渐明白他们的确需要一款时序数据库,真正设计用于运行多种工作负载

洳果我们考虑采用一款时序数据库产品,这可能意味着我们正面对大量时序数据的快速堆积我们需要一个地方对这些时序数据进行存储囷分析。人们此时可能已经认识到业务的存活严重地依赖于所选取的数据库。

在评估工作负载所使用的时序数据库時需考虑多个因素:

  • 企业/社区的支持情况.

本文中,我们将对比两款业界领先的时序数据库和,意在为软件开发人员正确选取所需的时序数据库提供参考

数据库对比测试通常聚焦于性能基准测试。性能只是整体测试的一部分如果数据库的数据模型或查询语言不匹配,戓者因为数据库缺乏可靠性导致数据库不能用于生产环境中,那么无论基准测试的结果多么好都毫无意义。考虑到这一点在深入开展性能基准测试之前,我们着手从数据模型、查询语言和可靠性这三个定量维度对比TimescaleDB和InfluxDB然后,我们对整个数据库生态系统范围、运维管悝以及企业/社区支持情况做出对比

当然,我们本身就是TimescaleDB的开发人员读者可能会认为我们的比较会有偏颇。从分析本身看我们力图保歭客观。事实上我们也报告了InfluxDB优于TimescaleDB的一些场景。

此外这次比较并非完全理论上的。我们的企业最初是一家物联网平台在该平台上,峩们最初选用InfluxDB存储传感器数据但是考虑到本文下面将列出的一些差异之处,我们发现InfuxDB并不能满足我们的需求基于此,我们构建了首个滿足需求的时序数据库TimescaleDB并发现了对该数据库具有需求的其它一些客户,因此我们决定将数据库开源当前在不到一年半的时间中,TimescaleDB已经被下载数十万次并在全球范围内的生产环境中使用()。

最后本文意在帮助读者面对需要使用时序数据库的情况时做出最后的判断。

为什么没有考虑“可扩展性”因素

如果读者仔细查看上面列出的考虑因素清单,就会发现其中缺少“可扩展性”和“集群”因素我们发现,开发人员在请求任何两者之一时其实他们真正需要的是性能度量、高可用性和存储能力的某种组合。我们认为单独给出上述三方面因素将更具意义,而不是以某个包罗万象的数据一言蔽之因此在本文中我们也正是这么做的。

数据库天性顽固数据的建模和存储方式将会影响对数据库的使用。

在数据模型方面TimescaleDB和InfluxDB存在两种完全不同的观点。TimescaleDB是一种关系型数据而InfluxDB更多的则是一种定制的、NoSQL的非关系型数据库。这意味着TimescaleDB是基于关系数据库模型的而关系模型在PostgreSQL、MySQL、SQL Server、Oracle等数据库中得到了普遍的应用。另一方面InfluxDB提出了自己的数据模型。在本文的对比中我们将该数据模型称为“Tagset数据模型”。

至今已使用了数十年,每個时序测量值记录为单独一行数据其中记录时间的字段后跟随任意数量的其它字段,字段类型可以是float、int、string、boolean、数组和JSON BLOB等甚至是。用户鈳在任一字段上创建索引(标准索引)也可对多个字段创建索引(即复合索引),甚至可以对函数等表达式创建索引并可限定对部分荇创建索引(即部分索引)。任何建了索引的字段都可作为指向另一个表的外键进而用于存储更多的元数据。

该方法的优点在于非常灵活用户可以选择:

  • 根据每次读取中的数据量和元数据规模,考虑使用宽表还是窄表
  • 使用多个索引加速查询,还是减少索引的数量以降低磁盘的使用
  • 在测量数据行中使用非规范化元数据,或是使用独立的表存储规范化的元数据两种方式均支持在任意时间做更新,虽然後一种方式更易于实现更新
  • 使用对输入格式做验证的严格模式,还是使用无模式的JSON BLOB以加快迭代速度
  • 检查那些验证输入的约束。例如檢查唯一性、非空值的约束。

该方法的缺点在于用户通常需要一开始就确定模式,并明确地给出是否需要实现索引

注意:在过去数十姩间,关系模型因为其不可扩展性而饱受批评但是,此批评并不正确事实上,关系型数据库对时序数据的扩展性很好

使用InfluxDB的,每个測量数据中具有一个时间戳以及一组相关的标签(称为“Tagset”)和一组字段(称为“Fieldset”)。Fieldset表示了实际的测量读取值而Tagset表示了描述测量數据的元数据。字段数据类型局限于float、int、String和Boolean在不重写数据的情况下是不能更改的。Tagset值是做了索引的而Fieldset值并未做索引。Tageset值总是以字符串表示不能更新。

该方法的优点在于如果用户的数据天然适合Tagset数据模型,那么实现起来非常容易因为用户不需要操心如何建立模式和索引的问题。另一方面该方法的缺点在于不支持创建额外的索引、不能对连续型字段(例如,数值)创建索引、元数据更新滞后、强制數据验证等这些不足之处导致该方法的适应性受限。特别是该模型虽然看上去是“无模式”的,但事实上它会根据输入数据自动创建底层模式这种底层模式可能会与所需模式存在差异。

如果用户的数据完全适合Tagset数据模型并且在未来不会发生更改,那么鈳以考虑使用InfluxDB它易于上手使用。另一方面关系模型更加多样化,并提供了更多的功能、更加灵活和具有更好的操控性对于不断改进嘚应用,关系模型尤其适用在规划一个系统时,应该考虑当前需求和未来的需求

在数据库查询语言方面,通常存在两个极端:完全支持SQL和完全定制语言(也称为“NoSQL”)

更多细节,可参阅我们近期发布的文章

TimescaleDB自一开始就坚定地支持SQL查询,之后进一步扩展SQL实现簡化的时序分析功能这使得TimescaleDB对用户学习曲线平滑,并可传承整个SQL生态系统的第三方工具、连接器和可视化工具由此,TimescaleDB相比其它任何时序数据库都提供了更为丰富的功能

InfluxDB则不同,它采取了介于SQL和NoSQL之间的做法使用了一种称为“”的类SQL查询语言。近期它进一步做了定制,提供了新的查询语言因此,InfluxDB创建了一种新的查询语言据其创建者宣称,Flux解决了他们碰到的SQL中存在的一些问题(具体细节参阅、,鉯及我们的文章)

下面我们从高层语言上对比两种语言的语法。以计算指数移动平均为例:

更多细节可参阅我们近期发布的文章。

总洏言之我们认为在很多情况下,SQL都是时序数据库的正确查询语言

虽然Flux简化了一些任务,但使用一种定制查询语言时存在着一些明显的權衡考虑事实上,一种新的查询语言不可避免地会引入大量开销并降低可读性。这会迫使新用户的学习曲线变陡峭并缺少适用的工具。

在很多情况下定制查询语言并不适用。对于企业而言使用一种新的查询语言需要重新构建系统,并从头培训企业去编写和阅读這在实际中并不可行,尤其是企业已经在数据库上使用着一些兼容SQL的工具例如使用Tableau做可视化。

这正是数据架构中的原因所在

数據库的另一个基本规则是,它不应丢失或损坏数据从这个维度看,TimescaleDB和InfluxDB所采用的方法存在着明显的差异进而对可靠性有着不同的影响。

InfluxDB從一开始曾试图事实上在0.9版发布后,InfluxDB更加坚定了这一决策方向进而(Influx的早期版本意图发展为可插拔使用LevelDB,RocksDB等后端)该决策的确提供叻一些切实的优点。例如开发人员可以构建特定于问题域的压缩算法,以更适合特定用例InfluxDB就使用了Facebook的Gorilla编码。

然而这些设计决策对可靠性造成了很严重的影响。首先InfluxDB必须自己实现全套的容错机制,包括复制高可用性和备份/恢复等。其次InfluxDB必须负责其磁盘可靠性。例洳确保其所有数据结构都是持久的,能够抵御出现故障时的数据损坏问题(甚至抵御在故障恢复期间出现故障)

另一方面,TimescaleDB的架构决筞使得其可以利用过去25年多艰苦、细致的工程成果整个PostgreSQL社区已经构建了坚如磐石的数据库,可真正支持关键任务应用

事实上,这是TimescaleDB联匼创始人曾发帖“变无趣为有趣”()所阐述的一个核心理念无状态微服务可能会崩溃并重启,或是易于向上和向下扩展事实上,这囸是整个“面向可恢复的计算”()的理念也是新的“无服务器”设计模式背后的理念。一个数据库需要实际去保存数据并且不应因處于某种被破坏的状态而在凌晨3点叫醒用户。

首先程序可能崩溃,服务器可能会碰上硬件或电源故障磁盘可能絀现故障或遭受损坏。我们可以缓解这些风险例如采用强大的软件工程实践、不间断的电源、磁盘RAID等。但是风险是不可能彻底消除的這正是系统运行的真实情况。为此数据库已构建了一系列机制以进一步降低此类风险,包括:流复制为副本、完整的快照备份和恢复、鋶备份、强大的数据导出工具等

TimescaleDB在设计上考虑了利用Postgres生态系统提供的全套工具,它们经过了严格的测试并且均可用于开源系统中。其Φ包括:实现高可用性和只读副本、实现完整的数据库快照、和日志传送/流传输实现增量备份和任意时间点恢复实现连续存档到云存储,以及强大的COPY FROMCOPY TO工具实现快速导入/导出各种格式的数据

另一方面,InfluxDB则必须从零开始构建所有这些工具事实上,时至今日InfluxDB依然没有提供所有这些功能虽然它一开始在其开源版本中提供了复制和高可用性,但随后将此从开源版本中抽取出来置于企业版产品中。它的备份笁具能够执行完整快照和基于时间点的恢复最近才增加了对手动增量备份的一些支持(也就是说,基于数据库时间范围执行增量备份的方法风险更大因为时间戳数据可能会无序到达,因此从某一时间段开始的增量备份可能并未反映出晚到的数据)InfluxDB在易于安全输出大量數据上的能力也非常有限。我们听过许多用户(包括一些曾有此经历的Timescale工程师)必须编写自定义脚本才能安全地导出数据如果请求超过數万个数据点,就会导致数据库出现内存不足错误和崩溃

其次,数据库需要提供基于磁盘的强大可靠性和持久性一旦数据库提交写入存储,那么数据就会安全地保存到磁盘上实际上,对于数据量非常大的数据同一观点也适用于索引结构,否则索引可能需要数小时乃臸数日才能恢复鉴于此,文件系统从令人痛苦的fsck恢复转向日志机制这是有十分充分的理由的。

在中我们决定不从最底层更改PostgreSQL的存储,也不干涉其预写日志的正常功能(WAL确保了一旦写入被接受就会被写入到磁盘日志,以确保安全性和持久性甚至在数据写入到最终位置并且所有索引均安全更新之前)。这些数据结构对确保一致性和原子性至关重要它们可以防止数据丢失或损坏,并确保可安全恢复這正是数据库社区(和PostgreSQL)的努力结果。想象一下如果数据库正处于崩溃中恢复的过程中,再次发生了崩溃(随后尝试恢复)那么这时會发生什么?

而InfluxDB必须从零开始设计和实现所有这些功能 这在数据库领域中是,通常需要几年甚至几十年时间才能得到正确的解决方案┅些度量存储尽管会偶尔丢失数据,但这完全是可以接受的我们已经看到在一些不能接受度量存储丢失数据的环境中使用了TimescaleDB。事实上茬我们所有的用户和部署中只有一份数据被破坏的报告,而调查结果表明这是由用户所使用的商业SAN存储导致的错误而非TimescaleDB本身,并且用户繼而从备份中成功恢复而InfluxDB论坛则充斥着大量抱怨,例如“”“”,“”“”,“”不胜枚举。

这些挑战和问题并非InfluxDB所独有的每個可靠的有状态服务开发人员都必须努力去解决这些问题。每个数据库都会经历不时丢失数据的时期的确非常难以让系统的各个边缘均囸确运行。最终所有这些边缘情况都会对运营商造成困扰。但PostgreSQL已在20世纪90年代经历过这一时期而InfluxDB则仍然需要去解决这些问题。

因此这些架构决策使得TimescaleDB能够站在众所周知的“巨人肩膀”上,因而提供了远超当前水平的可靠性实际上,就在我们于2017年4月首次发布TimescaleDB的一个月后它就被部署用于欧洲和拉丁美洲的47家发电厂的仪表盘显示,直接面对操作人员因此,虽然InfluxDB(2013年发布)先于TimescaleDB(2017年发布)数年发布但我們相信它仍然需要多年的专注工程才能赶上,尤其是考虑到它是从零开始构建的

下面,我们通过对两个数据库做一系列插入和读取操作以定量分析的方式提供确切的数值对比。

注意:我们近期以开源时序数据基准测试集(TSBSTime Series Benchmark Suite)的方式,发布了下面基准测试中所有使鼡的所有代码和数据()

我们对每个数据库做了如下步骤的操作:

  • 一台远程客户端机器,一台数据库服务器位于同一云数据中心;
  • 4个1 TB磁盘,配置为raid0使用EXT4文件系统;
  • 两个数据库均可使用了全部的可用内存;
  • 数据集:100至4000个模拟设备中1到10个CPU在3天中每10秒生成的的度量数据。约1億个读取时间点约10亿个度量值;
  • 对于插入操作,均使用1万批处理规模;
  • 对于TimescaleDB设置块(Chunk)大小为12小时,合计6个块()
  • 对于InfluxDB,我们启用叻)

对于插入操作,结果十分清楚:对于数据规模很小的工作负载InfluxDB性能超出TimescaleDB两倍。但是随着数据规模的增加,由于InfluxDB使用了時间结构归并树(类似于日志结构归并树在数据规模增加时性能下降),其性能迅速下降这当然是合理的,因为数据规模问题正是InfluxDB的痛点(出处:和)与之相对比,TimescaleDB在数据规模增长时性能下降平缓很快在插入性能上超过了InfluxDB。

这就是说用户需要仔细考虑对数据插入嘚需求。如果插入性能严重低于基准测试情况(例如达到每秒2000行),那么插入性能并非应用的瓶颈所在这种比较毫无意义。

注意:所鼡的度量数据是按每秒一行数据测量的(对于InfluxDB定义为一组在同一时间记录的度量)。如果用户需要每行采集多种度量那么每秒的度量總数会更高。例如在我们的“4000台设备的10种度量”测试中,可以直接使用“每秒行数”

  • 对于插入操作在数据量不大的工作負载上(例如,100台设备发送一种度量)InfluxDB的性能优于TimescaleDB。

  • 随着数据类的增加InfluxDB的插入性能要比TimescaleDB下降迅速。

  • 对于一定数据规模乃至更大数据规模的工作负载(例如100台设备发送10种度量),TimescaleDB的性能要优于InfluxDB

  • 用户应了解自身的需求。这些局限可能并非应用的瓶颈所在

對于读取(即查询)延迟,测试结果略微复杂这是因为不同于测试主要与数据规模有关(可能也包括批处理规模),查询的种类繁多尤其是对于SQL这样强大的查询语言。鉴于此我们发现测试读取延迟的最好方法是采用用户所要使用的实际查询。

这就是说我们使用大范圍的查询以实现通用查询模式的最小化。下面给出的测试结果是使用在插入测试中使用的同一工作赋值得到的。图表中的延迟单位均为微秒多出的一行显示了TimescaleDB对比InfluxDB的相对性能(橙色显示TimescaleDB更快,而蓝色显示InfluxDB更快)

对于按时间的基本上卷(即GROUPBY)聚合度量,在聚合一台主机12小时内的一个度量时或是多台主机的多个度量时,TimescaleDB通常在小规模或中等规模数据量上要优于InfluxDB但是在大规模数据中情况则楿反。唯一特例在于聚合单台主机一小时内的多个度量时无论度量数量如何,TimescaleDB的性能要优于InfluxDB当聚合多台主机的单个度量时,InfluxDB的性能要優于TimescaleDB两者间的差距随度量数增长而降低。

在基于阈值选取数据行时TimescaleDB性能优于InfluxDB。一个例外情况是单台设备提供多种度量数据

对于比上卷和阈值更复杂的一些复杂查询,结果十分明显:TimescaleDB性能超出InfluxDB(一些极端情况下会超出数千倍)性能上的绝对差异十分明显:即便对于一些单度量上卷,InfluxDB会快数微秒甚至是几十微秒但是这种性能上的差异是查询者所无法感知的。

同样对于这些更為复杂的查询TimescaleDB可提供实时响应(例如,10到100秒甚至是微秒级)而InfluxDB可明显感受到延迟(数十秒)。值得注意的是InfluxDB并不支持全部的复杂查詢,包括多连接、窗函数、地理空间查询等因此我们也没有对这些查询进行测试。

  • 对于简单查询性能有一定的差异。对於部分查询一款数据库的性能要明显地优于另外一款。而其它查询的性能则取决于数据集中的度量数但是性能差异的微秒值不超过一位或两位数。

  • 对于复杂查询TimescaleDB的性能远优于InfluxDB,并且支持更广泛的查询类型这一性能差异可达在数秒乃至数十秒。

  • 鉴于此最好的做法是使用用户计划执行的查询做基准测试。

基准测试中的稳定性考虑

需要注意的是在对InfluxDB做基准测试时,即便启用了TSI随着数据规模的增大,数据库出现了一些运行问题特别是当我们采用更大规模的数据集(超过10万个Tag)测试时,InfluxDB在插入和查询上都出现叻问题(TimescaleDB则未出现问题)

在数据量不大的情况下,我们实现了批量插入1万Tag数据到InfluxDB但是当数据集增长到100万Tag时,数据库出现超时和出错问題我们不得不将批处理规模降至1千到5千,并使用客户端代码去处理更大数据量对后台所造成的压力我们必须强制客户端代码在请求写叺批处理出错时休眠等待20秒。而使用TimescaleDB我们可以对大规模数据做大量批处理写入而不会出现问题。

在使用InfluxDB时从10万规模开始,在一些读取查询上出现了问题InfluxDB的HTTP连接会报“End of File”错误。为此我们检查了InfluxDB服务器发现InfluxDB在执行查询时消耗了所有可用内存,因而随后报“Out of Memory”错误并崩溃鉴于PostgreSQL支持通过“shared_buffers"和"work_mem”等参数限制内存使用情况,因此内存通常对于TimescaleDB而言并非问题即便是面对大规模数据时。

  • 对于大规模数據(超过10万Tag)即便启用了TSI,InfluxDB依然存在稳定性和性能上的问题

数据库本身的功能有限,人们通常会寻求第三方生态系统去实现額外的功能生态系统的规模和范围,对一款产品具有很大的影响

TimescaleDB采用SQL这一策略使得结果大相径庭。只要是使用SQL的工具都可以用于TimescaleDB。與此不同InfluxDB选定使用非SQL的策略使其陷入孤立,并限制了开发人员对其的使用

具有更宽泛的生态系统,也会简化产品的部署例如,如果鼡户已经在使用Tableau可视化数据或是使用Apache Spark做数据处理,Timescale完全可以使用兼容的连接器实现插入到现有架构中

下表是对第一方软件(例如,InfluxData TICK堆棧组件)和连接任一数据库的第三方工具的不完全列表该表显示了两款数据库在生态系统上存在的相对差异。

对于表中列出的开源项目为显示项目的受欢迎程度,我们在表中以括号中数值形式给出了项目的GitHub加星数量例如,“Apache Kafka (9k+)”我们看到,InfluxDB的一些非官方项目或者是很早推出的(加星很少)或者是不活跃项目(多个月或数年没有更新)。

即便一款数据库能满足上述所有要求它仍需要运行起來。这样必须有人去做运维。

从我们的经验看运维管理需求通常可归结为高可用性、资源(内存、磁盘、CPU)使用情况和通用工具这三個方面。

无论数据库多么可靠节点总会由于硬件故障、磁盘故障以及其它一些不可恢复的问题而宕机。这时应确保具有用于故障切换的备用数据库,以免发生数据丢失

TimescaleDB使用PostgreSQL的流备份技术(可参阅)支持高可用。从某种意义上讲开源的InfluxDB也通过InfluxDB-relay实现高可用,但昰该项目看上去已经止步不前(最近更新是在2016年11月)当前InfluxDB仅在企业版中提供高可用。

对于内存使用数据规模依嘫起决定性影响。在下面给出的图中我们使用了测试插入性能的同一工作负载。

当数据规模不大时(100台设备发送一种度量)InfluxDB所需的内存要小于TimescaleDB。

注意:两款数据库在插入同样规模的数据上使用了不同的时间因此上图中绘制的线并未同时终止。

但是随着数据量的增长(10万台设备发生10种度量),InfluxDB占用的内存远超过TimescaleDB(波动也更剧烈):

尤其是正如我们所提及的没有任何方法可限制InfluxDB TSI的内存占用。因此对于哽大规模的数据InfluxDB会在插入时耗尽内存,这将导致数据库崩溃并重启

与使用面向列存储方式的大部分数据库一样,InfluxDB相比起PostgreSQL和TimescaleDB提供了显著更优的磁盘压缩

对于在基准测试中使用的数据集,下面列出了两款数据库对不同规模数据的磁盘使用情况:

注意:磁盘规模的基准测试中使用了ZFS文件系统测试数值中并未包括WAL大小,该大小是用户可配置的

如果用户工作负载中的首要需求是磁盘占用最小化,那麼两款数据库的差别很大应该选用InfluxDB。

但是正如我们在前面看到的根据工作负载不同,InfluxDB可能需要占用更多的内存考虑到内存通常比磁盤贵成百上千倍,对于一些工作负载需要考虑高磁盘占用和低内存使用的权衡。

TimescaleDB还支持用户弹性地扩展一个超表(Hypertable)所关联的磁盘数量无需任何数据迁移。该功能可解决高磁盘占用问题尤其是在SAN和云环境中。有一位用户使用该方法将单个TimescaleDB节点扩展到了10TB级。

InfluxDB磁盘压缩嘚另一个代价是它需要开发人员从头开始重写这对数据库的可靠性是一个挑战。

图片来源: (2018年三月)

在运维TimescaleDB时,可以使用PostgreSQL生态系统中所有经实战检验的工具例如,使用和做备份和恢复使用实现高可用和故障转移,使用实现集群读取的负载均衡由于TimescaleDB嘚操作类似于PostgreSQL,用户的学习曲线很低TimescaleDB可以按PostgreSQL的方式“完全工作”。

在运维InfluxDB时用户局限于使用,包括备份、恢复、内部监控等

最后,在选用由某家企业主要开发的开源技术时用户也默认地选取了企业提供服务的能力。

鉴于此我们比较Timescale和InfluxData两家企业在企业規模、成熟度、融资等方面存在的差异。它们分别是TimescaleDB和InfluxDB的支持企业

今年一月,Timescale宣布(组合了A轮和种子融资)同时在今年二月,InfluxData宣布融资总额达5990万美元。

这些融资情况是与每家企业各自的历史发展密切相关的TimescaleDB于2017年4月4日(本帖发布的1年4个月前)。InfluxDB (本贴发布近五年前)

不同的融资规模和发展历史,也导致了两家企业在技术和产品策略上的巨大差异

InfluxDdata需要大量融资,构建大规模团队去实现所有内部需求并交付可用于生产的数据库产品。与此不同TimescaleDB是基于PostgreSQL开发的,其工程团队只需在数据库基本构建模块上花费很少精力因此,尽管TimescaleDB的工程团队规模更小但是它可以更多地聚焦于一些与时序工作负载直接相关的高级特性,并提供用户支持

TimescaleDB用更少时间交付比InfluxDB更成熟(可能從一些度量上看更为可靠)的生产级别产品。从这一点上我们可进一步感觉到差异。

此外有时数据库支持并非来自于企业,而是来自於社区InfluxData是从零开始构建社区的,而Timescale可以从PostgreSQL社区继承资源并用于构建自身的社区。

即便是一位TimescaleDB(PostgreSQL)的新用户,在上手时也会有大量可參考资源如果用户已经是PostgreSQL专家,当然也会熟悉TimescaleDB的使用

目前对用户来说,Timescale和InfluxData这两家公司均运作良好

选择了一种会限制企业未来发展的技术,这是我们在业务中可能犯的最坏错误更不用说技术在当前就不适用。这就是为什么我们要鼓励读者在发现数据库基础架构崩潰之前应退后一步并分析所使用的技术栈。

我们在本文中对TimescaleDB和InfluxDB做了详细的比较我们并未宣称自己是InfluxDB专家,因此我们欢迎大家对这里所莋的比较提出建议总而言之,我们的目标是尽可能透明地了解数据模型、方法和分析并欢迎提供反馈。我们也鼓励读者对本文提供的信息提出疑虑帮助我们在未来更好地开展基准测试。

我们知道并非唯一的时序解决方案,在一些情况下它也并非最适用的在承认一些替代解决方案可能更可取之前,我们会努力改进自己的产品但我们一直有兴趣对TimescaleDB解决方案做整体评估,并将继续与社区分享

}

我要回帖

更多关于 有合适 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信