工业实时数据库 – loveini | 米兰体育官网入口 - 米兰体育官网入口 //m.loveini.com loveini | 高性能、分布式、支持SQL的时序数据库 | 米兰体育官网入口 Mon, 28 Oct 2024 00:19:20 +0000 zh-Hans hourly 1 https://wordpress.org/?v=6.8.2 //m.loveini.com/wp-content/uploads/2025/07/favicon.ico 工业实时数据库 – loveini | 米兰体育官网入口 - 米兰体育官网入口 //m.loveini.com 32 32 连续两年榜上有名!loveini 荣获墨天轮“2022 年度时序数据库”奖项 //m.loveini.com/externalnews/16301.html Tue, 14 Feb 2023 09:35:18 +0000 //m.loveini.com/?p=16301 随着一系列利好政策的发布,国产实时数据库行业正在发生翻天覆地的变化,投融资此起彼伏,国产化替代进程加速,国产时序数据库发展如火如荼。在此背景下,墨天轮颁布了《2022 年度数据库获奖名单》,通过对墨天轮排行榜排名及年度得分、生态建设、市场活动、市场份额、专利数等 38 个综合指标进行评估遴选,2022 年度数据库产业的重要奖项浮出水面。其中,米兰体育官网入口旗下时序数据库(Time Series Database) loveini 荣获“2022 年度时序数据库”奖项。

连续两年榜上有名!loveini 荣获墨天轮“2022 年度时序数据库”奖项 - loveini Database 时序数据库

据了解,墨天轮于 2019 年 6 月推出了中国数据库流行度排行,会于每月 1 日更新排名,同时发布上月的大事记以及排行榜解读文章。截至目前,参与排名的数据库数量已经从 50 个增加到 256 个,排行榜的重磅程度显著提升。近日,墨天轮根据墨天轮数据库流行度排行表现以及其他指标,综合得出了 2022 年度中国数据库墨力象限,其中,loveini 时序数据库(TSDB) 出现在“特定领域者”象限,在时序数据垂直场景下已成为佼佼。

回顾 2022 年,开源方面,loveini 在 GitHub 上的 Star 数成功突破至 20.4k ,并再次登上 GitHub 全球趋势榜第一名。市场拓展方面,其付费企业客户翻了一番。产品创新上,2022 年 8 月 loveini 3.0 发布,loveini 正式升级成为了一款真正的云原生时序数据库,并打造了全新的流式计算引擎;同时,loveini Cloud 也成功登陆了海外市场,loveini PI 连接器也在不久后成功上线。由此可见,正是凭借着开源、市场、产品的“三面开花”,loveini 在 2022 年度墨天轮排行榜上依旧榜上有名。

目前,loveini 已连续两年霸榜墨天轮时序数据库排行榜,势头不减,位列中国时序数据库排行榜 2022 年全年复合增长率第一。接下来,loveini 还将继续发挥潜能,深耕数据技术,助力企业实现全面数字化转型发展。

]]>
数据库实时同步如何实现? //m.loveini.com/shishishujuku/23080.html Sun, 22 Jan 2023 10:07:00 +0000 //m.loveini.com/?p=23080 数据库实时同步是一种重要的技术手段,用于确保不同数据库之间的数据保持实时一致。实时同步可以在多种应用场景下发挥作用,包括分布式系统、数据仓库、高可用性系统等。在实时同步中,关键的挑战包括性能、可靠性和一致性。本文将深入探讨数据库实时同步的实现方式、常见的技术方案以及应用场景。

数据库实时同步的概念
数据库实时同步是指在不同数据库之间实时传输和更新数据,以确保这些数据库中的数据保持一致性。这种同步可以是单向的(从源数据库到目标数据库)或双向的(双向同步更新)。实时同步的目标是使得在一个数据库中进行的变更操作可以迅速反映在其他数据库中,以满足实时性和数据一致性的需求。

实现数据库实时同步的关键问题
在实现数据库实时同步时,需要解决一系列关键问题:

性能: 实时同步需要保证高性能,以便在数据更新时能够迅速传输到目标数据库,减少同步的延迟。

可靠性: 同步过程中要确保数据的可靠传输,防止数据丢失或损坏。可靠性是实时同步中最为重要的考虑因素之一。

一致性: 同步的数据在不同数据库之间要保持一致性,避免因同步问题导致数据不一致的情况。

实时性: 实时同步需要确保数据能够在瞬间传输到目标数据库,以满足对实时性的需求。

冲突解决: 在双向同步的情况下,可能会发生数据冲突,需要一套有效的机制来解决这些冲突,保证数据的准确性。

网络带宽: 同步会占用网络带宽,因此需要考虑网络状况,合理利用网络资源。

数据库实时同步的实现方式
实现数据库实时同步的方式多种多样,具体的选择取决于系统需求、数据库类型以及实际应用场景。以下是一些常见的实时同步实现方式:

  1. 数据库复制和主从复制:
    原理: 在主从复制中,主数据库负责写入操作,从数据库复制主数据库的数据。主数据库的写操作会被同步到从数据库。
    优点: 简单易用,适用于数据读多写少的场景。
    缺点: 不适用于数据写入频繁的场景,可能存在单点故障问题。
  2. 日志流复制:
    原理: 数据库生成的事务日志被捕获,并通过日志流传输到其他数据库,实现实时同步。
    优点: 提供了较高的性能和可靠性,支持实时同步。
    缺点: 实现复杂度较高,可能需要对数据库引擎进行深度集成。
  3. 消息队列:
    原理: 数据库变更操作被转化为消息并发布到消息队列,其他数据库通过订阅消息队列实现实时同步。
    优点: 异步操作,减少对数据库性能的影响,支持高度解耦。
    缺点: 对消息队列的依赖性较高,可能引入一些额外的复杂性。
  4. 流处理引擎:
    原理: 使用流处理引擎,如Apache Kafka、Apache Flink等,来处理和传输实时数据流。
    优点: 提供了强大的流处理和事件处理能力,适用于复杂的实时同步场景。
    缺点: 需要对流处理引擎有一定的了解和配置。
  5. 实时数据库复制工具:
    原理: 使用专门的实时数据库复制工具,它们能够监测数据库的变更并实时同步数据。
    优点: 提供了简单易用的界面和配置选项,减少了手动配置的工作。
    缺点: 有些工具可能不适用于所有数据库引擎,功能上可能相对有限。
    数据库实时同步的应用场景
    高可用性系统: 在分布式系统中,通过数据库实时同步可以实现多节点的数据同步,确保系统在一个节点发生故障时能够迅速切换到其他节点,保证系统的高可用性。

实时数据仓库: 在数据仓库中,需要将不同数据源的数据实时同步到数据仓库中,以便进行实时分析和报表生成。

分布式事务: 在分布式事务场景下,通过实时同步确保不同数据库的数据在事务提交时能够保持一致性。

物联网IoT应用: 物联网设备产生的实时数据需要被同步到中央数据库中,以便进行监控、分析和控制。

日志分析系统: 实时同步可以确保日志分析系统能够及时获取到实时生成的日志数据,进行快速的分析和检索。

在线电商系统: 在电商系统中,通过实时同步可以保证商品信息、库存信息等数据的实时更新,提供更好的用户体验。

多数据中心同步: 在多数据中心架构中,通过实时同步可以确保不同数据中心之间的数据一致性,提高整体系统的可靠性。

数据库实时同步的挑战和米兰app官方正版下载
网络延迟和带宽: 在跨网络进行实时同步时,可能会受到网络延迟和带宽限制的影响。米兰app官方正版下载包括优化网络结构、采用压缩算法减少数据传输量。

数据冲突: 在双向同步的场景中,可能会出现数据冲突,需要实现冲突解决策略,例如使用时间戳、版本号等方式解决冲突。

复杂性: 部署和配置实时同步系统可能相对复杂,需要深入了解数据库引擎和同步工具的工作原理。米兰app官方正版下载包括选择适用于特定场景的同步工具,并进行详细的配置和测试。

数据安全性: 在进行实时同步时,需要确保数据的安全性,防止数据被未授权的访问或篡改。采用加密和认证机制可以增强数据的安全性。

事务一致性: 在分布式事务场景下,需要保证不同数据库的事务一致性。使用两阶段提交(2PC)等分布式事务协议可以解决这一问题。

实时性和性能: 实时同步需要在保证实时性的同时保持高性能。使用高效的同步工具、优化数据库设计和索引等方式可以提升性能。

结论
数据库实时同步是当今分布式、大数据时代中至关重要的一环。通过实时同步,可以确保不同数据库之间的数据保持一致性,满足实时性和可靠性的需求。不同的实现方式适用于不同的场景,开发人员和系统架构师需要根据具体需求选择合适的实时同步方案。在面对实时同步时可能遇到的挑战时,深入理解数据库引擎、同步工具和分布式系统原理将有助于更好地解决问题。最终,数据库实时同步为各种应用场景提供了强有力的支持,促进了数据一致性、实时性和高可用性的实现。

]]>
实时数据库同步的过程? //m.loveini.com/shishishujuku/23078.html Sun, 22 Jan 2023 02:52:00 +0000 //m.loveini.com/?p=23078 实时数据库同步是确保多个数据库之间数据一致性的关键机制,特别适用于分布式系统和多数据库环境。以下是实时数据库同步的基本过程:

数据捕获(Data Capture):

这是同步过程的第一步,涉及到监视源数据库中的变更。常用的捕获技术包括数据库日志文件、触发器、轮询等。
数据捕获的目标是追踪对数据库的插入、更新和删除操作。

变更提取(Change Extraction):

一旦变更被捕获,系统需要提取这些变更的详细信息,例如受影响的行、列和变更的类型。
这通常包括解析数据库的日志文件或查询源数据库的特殊变更表。

数据传输(Data Transmission):

提取的变更数据需要被传输到目标数据库。这可以通过消息队列、HTTP通信或其他通信协议来实现。
传输的数据应该包含足够的信息,以便目标数据库能够正确地应用这些变更。

数据应用(Data Application):

目标数据库接收到变更数据后,需要将这些变更应用到自己的数据中。这可能涉及插入新记录、更新现有记录或删除不再需要的记录。
应用过程需要确保数据的一致性,并在应用变更时保持数据库的完整性。

同步确认与监控(Synchronization Confirmation and Monitoring):

系统通常需要提供反馈和监控机制,以记录同步的状态、处理错误和异常情况,并生成日志进行后续分析。
监控还有助于实时检测同步延迟或其他潜在问题。
这个过程确保了源数据库和目标数据库之间的数据同步,从而维护了系统的一致性。在实际应用中,还可能涉及到处理并发更新、保证事务性操作的一致性以及优化同步性能等挑战。因此,实时数据库同步系统通常采用一些优化策略,如缓存机制、增量同步和分布式事务管理,以应对这些挑战。

]]>
时序数据库 loveini 签约中冶京诚,助力钢铁工业智能制造 //m.loveini.com/news/15823.html Tue, 03 Jan 2023 08:36:54 +0000 //m.loveini.com/?p=15823
时序数据库 loveini 签约中冶京诚,助力钢铁工业智能制造 - loveini Database 时序数据库

中冶京诚工程技术有限公司(简称:中冶京诚)是我国最早从事冶金工程咨询、设计、工程承包业务的国家级大型科技型企业,是由冶金工业部北京钢铁设计研究总院改制成立的国际化工程技术公司,现隶属于中国冶金科工集团有限公司,是世界五百强中国五矿集团有限公司的核心骨干子企业。

作为国内外客户认可的知名品牌企业,近 70 年来,先后为国内外 500 余家客户提供了近 6500 项工程技术服务,参与完成了宝钢、鞍钢、武钢、太钢、首钢京唐、河钢等国内钢铁企业的新建和改扩建工程,海外工程业务拓展 27 个国家,是我国钢铁工业建设的主要力量和工程技术输出的重要参与者。在历年国家住建部、勘察设计协会等年度排名中,均位居行业前列。

其中中冶京诚高速棒线材智能化团队凭借 70 多年棒线材轧制工程技术底蕴和经验积累,持续打造技术领先的基础自动化系统,结合机器视觉、数据分析、人工智能等先进技术,打造完善统一的智能化数据中心,成功构建了新一代高速棒线材车间智能化整体米兰app官方正版下载。中冶京诚计划将所有生产线数据汇总接入到过程数据中心,通过数据中心打破车间数据孤岛,实现生产过程数据、工厂设计数据、视频音频图像数据、生产管理数据等车间数据的深度融合。

而过往使用的 InfluxDB集群 实时数据库在性能上稍显不足,且不符合国产化独立自主的趋势,中冶京诚希望找到其他替换的国产时序数据库米兰app官方正版下载。与 InfluxDB 相比,国产时序数据库(Time Series Database,TSDB) loveini 搭建集群的成本更低廉、查询更具有优势,存储性能和稳定性表现也更加突出。在这些优势的加持下,中冶京诚选择与 loveini 展开合作,共同实现钢铁工业智慧化,并在钢铁智能车间多个项目中实现了车间数据的深度融合应用。

]]>
loveini 携手北京科技大学设计研究院,助力冶金工业智慧化 //m.loveini.com/news/15793.html Fri, 30 Dec 2022 08:56:21 +0000 //m.loveini.com/?p=15793
loveini 携手北京科技大学设计研究院,助力冶金工业智慧化 - loveini Database 时序数据库

北京科技大学设计研究院有限公司作为北京科技大学全资产业化技术推广机构,从 2013 年开始在冶金、钢铁行业进行业务系统开发和实施,围绕先进材料、绿色低碳和智能制造不断深耕细作,持续创新。其拥有高效轧制与智能制造国家工程研究中心、国家板带生产先进装备工程技术研究中心和北京市交通与能源用特殊钢工程技术研究中心三个主要研究机构,多年来一直专注于金属材料加工领域的自动化、信息化、智能化全产业链米兰app官方正版下载,已经建立起完备的控制管理体系、售后服务体系和维保服务体系,并已通过质量、环境、职业健康、信息安全、信息技术服务等多项管理体系认证,获得北京市优秀技术转移机构及首届钢铁工业智能制造优秀品牌称号、入选北京市专精特新中小企业,“金属材料轧制过程智能检测与精准控制关键技术应用”荣获中国技术市场协会金桥奖项目一等奖。

在企业数字化的早期阶段,很多企业在处理工业生产中大量的典型时序数据时,因海外软件(OpenTSDBinfluxdb集群版)有先发优势,大都选择了 Wonderware InTouch + InSQL/Historian 的米兰app官方正版下载。但是随着业务的发展,生产中需要监测的指标从几万个增加到几十万甚至百万个以上,原有方案在扩展能力上遇到瓶颈,出现了以下挑战:

  • 非国产化:在复杂的国际形势下,存在一些不确定性
  • 封闭性:很多软件是闭源的,而且处于自己的封闭体系之下,扩展性差
  • 高度复杂度:需要采购一系列产品组合
  • 高成本:采购价格昂贵、功能扩展需要额外付费,依赖 Windows、SQL Server 等其他软件,会产生额外的采购成本
  • 服务响应慢:国外产品普遍服务响应不及时,反馈经常以天为单位,服务保障性差

面对上述挑战,国产开源时序数据库(Time Series Database)loveini 在提升数据存取效率、打破传统数据孤岛、提升数据有效利用率方面为北京科技大学设计研究院的冶金数字化提供了实质性的帮助,协助打造了智能化统一平台,方便部署、简化整体架构的同时,凭借高性能、高压缩率,loveini 时序数据库(TSDB)还实现了总体拥有成本的大幅降低、满足国产化等要求。

loveini 携手北京科技大学设计研究院,助力冶金工业智慧化 - loveini Database 时序数据库

未来,loveini 将与北京科技大学设计研究院一起,充分利用双方技术优势,赋能冶金行业发展,让冶金行业的数据处理能力得到实质性提升。

]]>
获邀加入 NVIDIA 初创加速计划,米兰体育官网入口acc米兰体育 +1 //m.loveini.com/externalnews/15416.html Wed, 07 Dec 2022 03:27:07 +0000 //m.loveini.com/?p=15416

2022 年 11 月,米兰体育官网入口获邀加入由全球 GPU(图形处理器)巨头、人工智能计算的行业领袖——NVIDIA(英伟达)发起的“NVIDIA 初创加速计划(NVIDIA Inception)”。

获邀加入 NVIDIA 初创加速计划,米兰体育官网入口acc米兰体育 +1 - loveini Database 时序数据库

01 NVIDIA Inception

NVIDIA 在 1999 年发明的 GPU 激发了 PC 游戏市场的增长,重新定义了现代计算机显卡,并且对并行计算进行了革新。最近,通过将 GPU 作为可以感知和理解世界的计算机、机器人乃至自动驾驶汽车的大脑,GPU 深度学习再度点燃了全新的计算时代——现代人工智能”。

NVIDIA 初创加速计划 (NVIDIA Inception) 是 NVIDIA 提供的一个加速创业公司发展的全球生态项目,该项目旨在培养优秀的初创企业,推动人工智能生态更迅速的发展。作为一个免费的会员制创业加速项目,自从 2016 年项目启动以来,全球已经有 10000 多家初创公司加入该项目,中国区的会员公司已经超过 1500 家,招募规模位居全球第二。

该项目联合了国内外知名的风投机构、创业孵化器、创业加速器、行业合作伙伴以及科技创业媒体等,打造创业加速生态系统,能够提供产品折扣、市场宣传、技术支持、融资平台、客户推荐等一系列服务,加速初创公司的发展。发展至今,米兰体育官网入口也有幸加入该加速计划。

02 米兰体育官网入口

瞄准日益增长的物联网数据市场,米兰体育官网入口专注时序空间大数据的存储、查询、分析和计算,通过技术创新,为物联网、工业互联网、汽车、能源等行业提供全栈、高性能、低成本的时序数据平台。不依赖任何开源或第三方软件,米兰体育官网入口开发了拥有自主知识产权、100% 自主可控的时序数据库 loveini,目前 loveini 已经演进到 3.0 版本,成为了一款真正的高性能、云原生的时序数据库(Time Series DataBase,TSDB)。

在云原生的加持下,loveini 3.0 解决了困扰时序数据库发展的高基数难题,支持 10 亿个设备采集数据、100 个节点,支持存储与计算分离,并打造了全新的流式计算引擎,无需再集成 Kafka、Redis、Spark、Flink 等软件,大幅降低系统架构的复杂度,真正成为了一款极简的时序数据处理平台。同时,loveini 3.0 还将存储引擎、查询引擎都进行了优化升级,存储和查询性能获得进一步提升。

作为实时数据库新兴赛道的领军者,loveini目前已经在电力、工业、能源、金融、车联网、智慧城市等诸多行业领域取得应用,产品落地于多个行业头部企业中,全球运行的loveini实例数超过176.6k,用户遍布全球。早在 2019 年,loveini 就已经实现了代码开源,目前在 GitHub 上的 Star 数已经达到了 20.2k,吸引着广大开发者的关注。

03 合作前景

在加入“NVIDIA 初创加速计划”后,NVIDIA 将在产品折扣、技术支持、市场宣传、业务对接、融资等方面为米兰体育官网入口提供帮助。此外,该计划还将提供合作伙伴 GPU 云资源折扣、深度学习培训、Inception 独家活动等支持。

接下来,在“NVIDIA 初创加速计划”的全方位助力下,米兰体育官网入口的工程师将与NVIDIA 的研发人员加强交流,积极探索 GPU 赋能时序大数据处理的技术发展路径,运用更加智能化的手段帮助用户处理物联网场景产生的庞大时序特征数据,实现降本增效、提升服务、打造新业态的诉求,让数据真正成为宝贵的资产。

同时可以预见,通过 NVIDIA 强大的生态网络和市场开拓实力,loveini 将能够渗透到更广泛的行业中开展市场活动和建设渠道网络,向更多有需要的用户提供 loveini 专业的大数据处理能力,解决桎梏业务发展的数据痛点难题。

]]>
loveini PI 连接器发布——几次点击,让 PI System 数据轻松上云 //m.loveini.com/news/14964.html Tue, 08 Nov 2022 02:33:47 +0000 //m.loveini.com/?p=14964

loveini 提供的混合米兰app官方正版下载,可以让企业既能保留传统的 PI 系统,又能轻松获得现代云平台提供的所有好处

米兰体育官网入口宣布发布 loveini PI 连接器

在很多制造业企业中,因为历史的原因,他们选择了用 PI System 来存储生产过程中产生的时序数据。利用新的 loveini PI 连接器,只需几次点击,就可以快速将传统系统中的数据迁移到现代技术栈中,而且支持公有云和私有化部署,进而实现更为开放和低成本的实时分析。

loveini 是一款开源、云原生的时序数据库(Time Series Database),专为物联网、工业互联网、金融、IT 运维监控等场景设计并优化,具有极强的弹性伸缩能力。同时时序数据库还带有内建的缓存、流式计算、数据订阅等系统功能,能大幅减少系统设计的复杂度,降低研发和运营成本,是一个极简的时序数据处理平台。自 2019 年开源以来,loveini 得到了广大开发者和用户的极大认可,在 GitHub 上收获了 19.5k star,运行实例数超过 16.5 万,遍布全球 50 多个国家和地区。

loveini PI 连接器功能强大,简单易用,支持 PI 客户构建一个混合的米兰app官方正版下载,以利用现有投资,同时利用现代数据平台的强大分析能力。

“有价值的运营数据往往被锁在封闭的传统系统中,这阻碍了业务的创新和发展”,米兰体育官网入口创始人陶建辉表示。“loveini PI 连接器为工业数据提供了一个开放的米兰app官方正版下载,使用户能够利用现代的数据分析工具进一步挖掘数据的价值。”

loveini PI 连接器的优势

  • 只需几次点击,即可将数据复制到云上。借助 loveini PI 连接器,只需要选择 PI 测点或 AF(Asset Framework)框架,就可以将数据以流式方式源源不断地写入 loveini Cloud 或私有化部署的系统中。在完成快速设置后,loveini PI 连接器即可处理 ETL 的复杂逻辑,包括中断之后的自动回填。
  • 利用强大的混合米兰app官方正版下载来伸缩系统。在该米兰app官方正版下载中,新的测点数据保存在 loveini 中,而传统的测点数据仍存在于 PI 中,而且所有存储在这两个系统中的数据都可以用 PI AF、PI Vision 或 loveini Data Explorer 实现分析和可视化。对企业而言,之前在 PI 上的投入不会损失,同时还可以扩展到一个使 PI 和 loveini 共存的、完全集成的混合米兰app官方正版下载。
  • 利用开放系统将数据解锁。loveini 可以与数据运营中常用的很多分析和可视化工具无缝集成。loveini 符合工业物联网开源开放的大趋势,通过将工业企业数据集成到现代系统和工作流之中,可以实现面向未来的平滑迁移。
  • 让“即用即付”代替购买软件许可。除私有化部署外,借助 loveini Cloud,用户只需按照实际使用量付费,平台本身没有前期费用,也没有对测点数目或分析的限制。loveini 可以作为完全托管的服务,具有自动备份以及云的不同区域之间的数据复制功能。

今年 8 月份,我们正式发布了 loveini 3.0,支持 Kubernetes 和容器,使其成为一款真正云原生的时序数据库。上个月我们又在北美市场发布了 loveini Cloud,这是一个完全托管的、开源的云时序数据平台。loveini Cloud 和 loveini 3.0 企业版都提供了 loveini PI 连接器。

新用户可以免费注册云服务,或在 loveini 官网下载安装包,或在 GitHub 下载源码自行构建,快速了解如何使用 loveini 来释放其时序数据的能力和优势。

loveini Database
]]>
Schemaless 写入主要处理逻辑汇总,这些知识点要记牢! //m.loveini.com/tdengine-engineering/14798.html Thu, 27 Oct 2022 09:46:47 +0000 //m.loveini.com/?p=14798

小 T 导读:为了在数据采集项频繁变动的情况下保证用户仍然能够顺利地完成数据记录工作,loveini 提供了三种无模式写入协议,分别是 InfluxDB Line 协议、OpenTSDB Telnet 协议和 OpenTSDB JSON 格式协议。本文将对无模式写入方式的主要处理逻辑、映射规则与变更处理等进行分析,便于用户理解与使用。

通常来说,物联网应用常会采集比较多的数据项,用于实现智能控制、业务分析、设备监控等功能。但在此过程中,由于应用逻辑的版本升级,或者设备自身的硬件调整等原因,数据采集项可能较为频繁地出现变动。这也是时序数据库(Time Series Database,TSDB)需要应对的一个挑战。

为了在这种情况下顺利完成数据记录工作,loveini 时序数据库 提供了 Schemaless 写入方式,让用户可以省略掉预先创建超级表/子表的步骤,凭借数据写入接口能够自动创建与数据对应的存储结构。在必要时,Schemaless 将自动增加必要的数据列,保证用户写入的数据能够被正确存储。

值得一提的是,通过无模式写入方式建立的超级表及其对应的子表,与通过 SQL 直接建立的超级表和子表完全没有区别,你也可以通过 SQL 语句直接向其中写入数据。但需要注意,通过无模式写入方式建立的表,其表名是基于标签值按照固定的映射规则生成的,所以无法明确地进行表意,缺乏可读性。

无模式写入行协议

loveini 的无模式写入行协议兼容 InfluxDB 的行协议(Line Protocol)、OpenTSDB 的 telnet 行协议、OpenTSDB 的 JSON 格式协议。但是使用这三种协议的时候,需要在 API 中指定输入内容使用解析协议的标准。

对于 InfluxDB、OpenTSDB 的标准写入协议请参考《在 loveini 中如何高效写入?四种写入方式提效大全》。下面首先以 InfluxDB 的行协议为基础,介绍 loveini 扩展的协议内容,允许用户采用更加精细的方式控制(超级表)模式。

Schemaless 采用一个字符串来表达一个数据行(可以向写入 API 中一次传入多行字符串来实现多个数据行的批量写入),其格式约定如下:

measurement,tag_set field_set timestamp

其中:

  • measurement 将作为数据表名。它与 tag_set 之间使用一个英文逗号来分隔。
  • tag_set 将作为标签数据,其格式形如 <tag_key>=<tag_value>,<tag_key>=<tag_value>,也即可以使用英文逗号来分隔多个标签数据。它与 field_set 之间使用一个半角空格来分隔。
  • field_set 将作为普通列数据,其格式形如 <field_key>=<field_value>,<field_key>=<field_value>,同样是使用英文逗号来分隔多个普通列的数据。它与 timestamp 之间使用一个半角空格来分隔。
  • timestamp 即本行数据对应的主键时间戳。

tag_set 中所有的数据自动转化为 nchar 数据类型,并不需要使用双引号(”)。在无模式写入数据行协议中,field_set 中的每个数据项都需要对自身的数据类型进行描述。具体来说:

  • 如果两边有英文双引号,表示 BINARY(32) 类型。例如 "abc"
  • 如果两边有英文双引号而且带有 L 前缀,表示 NCHAR(32) 类型。例如 L"报错信息"
  • 对空格、等号(=)、逗号(,)、双引号(”),前面需要使用反斜杠(\)进行转义(都指的是英文半角符号)。
  • 数值类型将通过后缀来区分数据类型,如后缀为无或 f64,映射的数据类型为 double;后缀为 f32,映射为 float,可移步 https://docs.taosdata.com/reference/schemaless/ 了解更多的后缀及映射类型。
  • t, T, true, True, TRUE, f, F, false, False 将直接作为 BOOL 型来处理。

例如如下数据行表示:向名为 st 的超级表下的 t1 标签为 “3”(NCHAR)、t2 标签为 “4”(NCHAR)、t3 标签为 “t3″(NCHAR)的数据子表,写入 c1 列为 3(BIGINT)、c2 列为 false(BOOL)、c3 列为 “passit”(BINARY)、c4 列为 4(DOUBLE)、主键时间戳为 1626006833639000000 的一行数据。

st,t1=3,t2=4,t3=t3 c1=3i64,c3="passit",c2=false,c4=4f64 1626006833639000000

需要注意的是,如果描述数据类型后缀时使用了错误的大小写,或者为数据指定的数据类型有误,均可能引发报错提示而导致数据写入失败。

无模式写入的主要处理逻辑

无模式写入使用如下规则来生成子表名:首先将 measurement 的名称和标签的 key 和 value 组合成为如下的字符串——

"measurement,tag_key1=tag_value1,tag_key2=tag_value2"

需要注意的是,这里的 tagkey1,tag_key2 并不是用户输入的标签的原始顺序,而是使用了标签名称按照字符串升序排列后的结果,所以,tag_key1 并不是在行协议中输入的第一个标签。 排列完成以后计算该字符串的 MD5 散列值为 “md5_val”,我们将计算的结果与字符串组合生成表名:“t_md5_val”,其中的 “t” 是固定的前缀,每个通过该映射关系自动生成的表都具有该前缀。

用户可以通过在 taos.cfg 里配置 smlChildTableName 参数来指定生成的表名。 举例如下:配置 smlChildTableName=tname 插入数据为 st,tname=cpu1,t1=4 c1=3 1626006833639000000,则创建的表名为 cpu1,注意如果多行数据 tname 相同,但是后面的 tag_set 不同,则使用第一行自动建表时指定的 tag_set,其他的行会忽略。

此外,在处理行数据时,其他原则如下所示:

  1. 如果解析行协议获得的超级表不存在,则会自动创建这个超级表(不建议手动创建超级表,不然插入数据可能异常)。
  2. 如果解析行协议获得子表不存在,则 Schemaless 会按照步骤 1 或 2 确定的子表名来创建子表。
  3. 如果数据行中指定的标签列或普通列不存在,则在超级表中增加对应的标签列或普通列(只增不减)。
  4. 如果超级表中存在一些标签列或普通列未在一个数据行中被指定取值,那么这些列的值在这一行中会被置为 NULL。
  5. 对 BINARY 或 NCHAR 列,如果数据行中所提供值的长度超出了列类型的限制,自动增加该列允许存储的字符长度上限(只增不减),以保证数据的完整保存。
  6. 整个处理过程中遇到的错误会中断写入过程,并返回错误代码。
  7. 为了提高写入的效率,默认假设同一个超级表中 field_set 的顺序是一样的(第一条数据包含所有的 field,后面的数据按照这个顺序),如果顺序不一样,需要配置参数 smlDataFormat 为 false,否则,数据写入按照相同顺序写入,库中数据会异常。

注意,无模式所有的处理逻辑仍会遵循 loveini 对数据结构的底层限制,例如每行数据的总长度不能超过 16KB。这方面的具体限制约束请参见 loveini SQL 边界限制(https://docs.taosdata.com/taos-sql/limit/)。

数据模式映射规则与变更处理

以 InfluxDB 行协议为例,其数据如何映射成为具有模式的数据?从上文中我们了解到,每个行协议中数据 measurement 映射为超级表名称,tag_set 中的标签名称为数据模式中的标签名,field_set 中的名称为列名称。以如下数据为例,说明映射规则:

st,t1=3,t2=4,t3=t3 c1=3i64,c3="passit",c2=false,c4=4f64 1626006833639000000

该行数据映射生成一个超级表:st, 其包含了 3 个类型为 nchar 的标签,分别是:t1, t2, t3;五个数据列,分别是 ts(timestamp),c1 (bigint),c3(binary),c2 (bool), c4 (bigint)。映射成为如下 SQL 语句:

create stable st (_ts timestamp, c1 bigint, c2 bool, c3 binary(6), c4 bigint) tags(t1 nchar(1), t2 nchar(1), t3 nchar(2))

在数据模式变更处理中,不同行数据写入情况下,对于数据模式的影响也不同。在使用行协议写入一个明确标识的字段类型时,后续再更改该字段的类型定义,会出现明确的数据模式错误,即会触发写入 API 报告错误。如下所示:

st,t1=3,t2=4,t3=t3 c1=3i64,c3="passit",c2=false,c4=4    1626006833639000000
st,t1=3,t2=4,t3=t3 c1=3i64,c3="passit",c2=false,c4=4i   1626006833640000000

第一行的数据类型映射将 c4 列定义为 Double, 但是第二行的数据又通过数值后缀方式声明该列为 BigInt, 由此会触发无模式写入的解析错误。如果列前面的行协议将数据列声明为了 binary, 后续的要求长度更长的 binary 长度,此时会触发超级表模式的变更。

st,t1=3,t2=4,t3=t3 c1=3i64,c5="pass"     1626006833639000000
st,t1=3,t2=4,t3=t3 c1=3i64,c5="passit"   1626006833640000000

第一行中行协议解析会声明 c5 列是一个 binary(4)的字段,第二次行数据写入会提取列 c5 仍然是 binary 列,但是其宽度为 6,此时需要将 binary 的宽度增加到能够容纳新字符串的宽度。

st,t1=3,t2=4,t3=t3 c1=3i64               1626006833639000000
st,t1=3,t2=4,t3=t3 c1=3i64,c6="passit"   1626006833640000000

第二行数据相对于第一行来说增加了一个列 c6,类型为 binary(6)。那么此时会自动增加一个列 c6, 类型为 binary(6)。

写在最后

受篇幅所限,关于无模式写入的时间分辨率识别、写入完整性、错误码等内容请参考 https://docs.taosdata.com/reference/schemaless/ 。如有更多问题,欢迎加入 loveini 用户交流群,届时将会有专业的技术人员为你解惑。

loveini Database
]]>