当前位置: 首页 > news >正文

昆明网站建设专家开发一个网站需要多少时间

昆明网站建设专家,开发一个网站需要多少时间,台州快速建站公司,安徽省建设工程网上服务平台注#xff1a;本文翻译自https://legacy-docs.timescale.com/v1.7/introduction TimescaleDB是一个开源时间序列数据库#xff0c;针对快速摄取和复杂查询进行了优化。它说的是“完整的SQL”#xff0c;因此像传统的关系数据库一样易于使用#xff0c;并且以以前为NoSQL数…注本文翻译自https://legacy-docs.timescale.com/v1.7/introduction TimescaleDB是一个开源时间序列数据库针对快速摄取和复杂查询进行了优化。它说的是“完整的SQL”因此像传统的关系数据库一样易于使用并且以以前为NoSQL数据库保留的方式进行扩展。 与这两种选择(关系型与NoSQL)所需要的权衡相比TimescaleDB为时间序列数据提供了两种方法的最佳选择: 易于使用 完整的SQL接口支持PostgreSQL本地支持的所有SQL(包括二级索引非基于时间的聚合子查询join窗口函数)。连接到任何使用PostgreSQL的客户端或工具无需更改。面向时间的特性、API函数和优化。对数据保留策略的强大支持。 可伸缩性 透明的时间/空间分区支持向上扩展(单节点)和向外扩展(即将推出)。高数据写速率(包括批处理提交、内存索引、事务支持、数据回填支持)。在单个节点上适当大小的块(二维数据分区)以确保即使在大数据大小时也能快速摄取。跨块和服务器的并行操作。 可靠性 从PostgreSQL设计而来打包为extension。经过20多年PostgreSQL研究的可靠基础(包括流复制备份)。灵活的管理选项(与现有PostgreSQL生态系统和工具兼容)。 什么是时间序列数据 时间序列数据是总体上表示系统、流程或行为如何随时间变化的数据。 以时间为中心:数据记录总是有一个时间戳。 仅追加:数据几乎完全是仅追加的(insert)。 最近的:新数据通常是关于最近的时间间隔我们很少更新或回填关于旧时间间隔的缺失数据。 然而数据的频率或规律性并不那么重要;它可以每毫秒或每小时收集一次。它也可以定期或不定期收集(例如当某些事件发生时而不是在预定义的时间)。 与其他数据(如标准关系“业务”数据)相比时间序列数据(以及支持它们的数据库)之间的一个关键区别是对数据的更改是插入而不是覆盖。 时序数据应用场景 监控计算机系统:虚拟机、服务器、容器指标(CPU、空闲内存、网络/磁盘IOPs)、服务和应用程序指标(请求速率、请求延迟)。 金融交易系统:经典证券、新型加密货币、支付、交易事件。 物联网:来自工业机器和设备、可穿戴设备、车辆、物理容器、托盘、智能家居消费设备等传感器的数据。 事件应用:用户/客户交互数据如点击流、页面浏览量、登录、注册等。 商业智能:跟踪关键指标和业务的整体健康状况。 环境监测:温度、湿度、压力、pH值、花粉计数、空气流量、一氧化碳(CO)、二氧化氮(NO2)、颗粒物(PM10)。 数据模型 作为一个支持完整SQL的关系数据库TimescaleDB支持灵活的数据模型可以针对不同的用例进行优化。这使得TimescaleDB与大多数其他时间序列数据库有些不同后者通常使用“窄表”模型。 具体来说TimescaleDB既支持宽表模型也支持窄表模型。在这里我们将使用一个物联网(IoT)示例讨论这两种模型的不同性能权衡和影响。 想象一下一个由1000个物联网设备组成的分布式组旨在以不同的间隔收集环境数据。这些数据可以包括: Identifiers: device_id, timestamp Metadata: location_id, dev_type, firmware_version, customer_id Device metrics: cpu_1m_avg, free_mem, used_mem, net_rssi, net_loss, battery Sensor metrics: temperature, humidity, pressure, CO, NO2, PM10 例如您的传入数据可能看起来像这样: timestampdevice_idcpu_1m_avgfree_memtemperaturelocation_iddev_type2017-01-01 01:02:00abc12380500MB72335field2017-01-01 01:02:23def45690400MB64335roof2017-01-01 01:02:30ghi7891200MB5677roof2017-01-01 01:03:12abc12380500MB72335field2017-01-01 01:03:35def45695350MB64335roof2017-01-01 01:03:42ghi789100100MB5677roof 现在让我们看看对这些数据建模的各种方法。 窄表模型 大多数时间序列数据库将以下列方式表示这些数据: 将每个指标表示为一个单独的实体(例如将cpu_1m_avg和free_mem表示为两个不同的东西) 为该指标存储一系列“时间”、“值”对 将元数据值表示为与该度量/标记集组合相关联的“标记集” 在此模型中每个度量/标记集组合被认为是包含时间/值对序列的单个“时间序列”。 使用我们上面的例子这种方法会产生9个不同的“时间序列”每一个都由一组唯一的标签定义。 1. {name: cpu_1m_avg, device_id: abc123, location_id: 335, dev_type: field} 2. {name: cpu_1m_avg, device_id: def456, location_id: 335, dev_type: roof} 3. {name: cpu_1m_avg, device_id: ghi789, location_id: 77, dev_type: roof} 4. {name: free_mem, device_id: abc123, location_id: 335, dev_type: field} 5. {name: free_mem, device_id: def456, location_id: 335, dev_type: roof} 6. {name: free_mem, device_id: ghi789, location_id: 77, dev_type: roof} 7. {name: temperature, device_id: abc123, location_id: 335, dev_type: field} 8. {name: temperature, device_id: def456, location_id: 335, dev_type: roof} 9. {name: temperature, device_id: ghi789, location_id: 77, dev_type: roof}这样的时间序列的数量以每个标签的基数的交叉积为尺度即(# names) × (# device id) × (# location id) ×(设备类型)。一些时间序列数据库随着基数的增加而挣扎最终限制了可以存储在单个数据库中的设备类型和设备的数量。 TimescaleDB支持窄模型并且不像其他时间序列数据库那样受到基数限制。如果您独立地收集每个指标则狭窄的模型是有意义的。它允许您在添加新标记时添加新指标而不需要正式的模式更改。 但是如果使用相同的时间戳收集许多指标那么窄模型的性能就不那么好了因为它需要为每个指标编写时间戳。这最终导致更高的存储和摄取需求。此外关联不同指标的查询也更复杂因为要关联的每个额外指标都需要另一个JOIN。如果您通常同时查询多个指标那么将它们存储在一个宽表格式中既快又容易我们将在下一节中介绍这一点。 宽表模型 TimescaleDB很容易支持宽表模型。在这个模型中跨多个指标的查询更容易因为它们不需要join。此外摄取速度更快因为只需要为多个指标编写一个时间戳。 一个典型的宽表模型将匹配一个典型的数据流其中在给定的时间戳中收集多个指标: timestampdevice_idcpu_1m_avgfree_memtemperaturelocation_iddev_type2017-01-01 01:02:00abc12380500MB72335field2017-01-01 01:02:23def45690400MB64335roof2017-01-01 01:02:30ghi7891200MB5677roof2017-01-01 01:03:12abc12380500MB72335field2017-01-01 01:03:35def45695350MB64335roof2017-01-01 01:03:42ghi789100100MB5677roof 在这里每一行都是一个新的读数具有给定时间的一组测量值和元数据。这使我们能够保留数据中的关系并提出比以前更有趣或探索性的问题。 当然这不是一种新格式:这是在关系数据库中常见的格式。 关系数据的JOIN操作 TimescaleDB的数据模型与关系数据库还有另一个相似之处:它支持join。具体来说可以在辅助表中存储额外的元数据然后在查询时使用该数据。 在我们的示例中可以有一个单独的位置表将location_id映射到该位置的其他元数据。例如: location_idnamelatitudelongitudezip_coderegion42Grand Central Terminal40.7527° N73.9772° W10017NYC77Lobby 742.3593° N71.0935° W02139Massachusetts 然后在查询时通过连接我们的两个表可以问这样的问题:zip_code 10017中设备的平均free_mem是多少? 如果没有连接就需要对数据进行非规范化并将所有元数据存储在每个测量行中。这会导致数据膨胀并使数据管理变得更加困难。 通过连接可以独立存储元数据并且更容易更新映射。 例如如果我们想要更新location_id 77的“区域”(例如从“Massachusetts”到“Boston”)我们可以进行此更改而无需返回并覆盖历史数据。 架构及概念 TimescaleDB是作为PostgreSQL上的扩展实现的这意味着它在整个PostgreSQL实例中运行。扩展模型允许数据库利用PostgreSQL的许多属性如可靠性、安全性以及与广泛的第三方工具的连接性。同时TimescaleDB通过在PostgreSQL的查询规划器、数据模型和执行引擎中添加钩子充分利用了扩展的高度定制性。 从用户的角度来看TimescaleDB公开了看似单一的表(称为hypertables)它实际上是保存数据的许多单独表(称为chunks)的抽象或虚拟视图。 chunks是通过将hypertables的数据划分为一个或多个维度来创建的:所有hypertables都按时间间隔进行分区还可以按设备ID、位置、用户ID等键进行分区。我们有时把这称为“时间和空间”的划分。 Hypertables 与数据交互的主要点是一个超表它是跨所有空间和时间间隔的单个连续表的抽象因此可以通过标准SQL查询它。 实际上与TimescaleDB的所有用户交互都是使用超级表。创建表和索引、修改表、插入数据、选择数据等都可以(也应该)在超级表上执行。[跳转到基本的SQL操作] 超级表由具有列名和类型的标准模式定义其中至少有一个列指定时间值一个(可选)列指定额外的分区键。 单个TimescaleDB部署可以存储多个超级表每个超级表具有不同的模式。 在TimescaleDB中创建超级表需要两个简单的SQL命令: CREATE TABLE(使用标准SQL语法)然后是SELECT create_hypertable()。 在超级表上自动创建关于时间和分区键的索引但是也可以创建额外的索引(TimescaleDB支持所有的PostgreSQL索引类型)。 Chunks 在内部TimescaleDB自动将每个超表分割成块每个块对应于特定的时间间隔和分区键空间的一个区域(使用散列)。这些分区是不相交的(不重叠的)这有助于查询规划器最小化它在解析查询时必须接触的块集。 每个块都是使用标准数据库表实现的。(在PostgreSQL内部块实际上是“父”超表的“子表”。) 块的大小合适确保表索引的所有b树都可以在插入期间驻留在内存中。这避免了在修改这些树中的任意位置时产生震荡。 此外通过避免过大的块我们可以在根据自动保留策略删除已删除的数据时避免昂贵的“真空”操作。运行时可以通过简单地删除块(内部表)来执行此类操作而不是删除单个行。 本地压缩 压缩由TimescaleDB的内置作业调度器框架提供支持。我们利用它来跨超表异步地将单个块从未压缩的基于行的形式转换为压缩的列形式:一旦块足够老该块将以事务方式从行形式转换为列形式。 使用本机压缩即使TimescaleDB中的单个超表将以行和列两种形式存储数据用户也不需要担心这一点:在查询数据时他们将继续看到标准的基于行的模式。这类似于在解压的列数据上构建视图。 TimescaleDB通过(1)透明地将以标准行格式存储的数据附加到从列格式解压缩的数据中以及(2)在查询时透明地从选定的行解压缩各个列来实现此功能。 在查询期间未压缩的块将被正常处理而来自压缩块的数据将首先被解压缩并在查询时转换为标准行格式然后再添加或合并到其他数据中。这种方法与您期望从TimescaleDB获得的一切兼容例如关系连接和分析查询以及避免处理块的主动约束排除。 单节点vs集群 TimescaleDB在单节点部署和集群部署(开发中)上执行广泛的分区。虽然分区传统上只用于跨多台机器的扩展但它也允许我们在单台机器上扩展到高写速率(和改进的并行查询)。 TimescaleDB的当前开源版本仅支持单节点部署。值得注意的是TimescaleDB的单节点版本已经在普通机器上对超过100亿行超级表进行了基准测试而插入性能没有任何损失。 单节点分区的优势 在单台机器上扩展数据库性能的一个常见问题是内存和磁盘之间的成本/性能权衡。最终我们的整个数据集将无法装入内存我们需要将数据和索引写入磁盘。 一旦数据足够大我们无法在内存中容纳索引的所有页面(例如b树)那么更新树的随机部分可能涉及从磁盘交换数据。像PostgreSQL这样的数据库为每个表索引保留一个b树(或其他数据结构)以便有效地找到该索引中的值。因此当您索引更多的列时问题会变得更加复杂。 但是由于TimescaleDB创建的每个块本身都存储为一个单独的数据库表因此它的所有索引只能在这些小得多的表上构建而不是在一个表示整个数据集的表上构建。因此如果我们适当地调整这些块的大小我们可以将最新的表(及其b树)完全放入内存中并避免这种交换到磁盘的问题同时保持对多个索引的支持。
http://www.hkea.cn/news/14288575/

相关文章:

  • 怎么去推广一个产品上海网站优化上
  • 电商网站设计特点网站icp备案 年检
  • 四川住房和城乡建设厅网站主页dw软件免费下载
  • 舟山市建设信息港网站打不开教育学校网站建设
  • 网站建设总计可以做卷子的网站
  • 数据库与网站营销型网站建设细节
  • 建设部网站安全考核证书查询ktv支付订房网站模板
  • 长沙网站建设营销5网站开发之美
  • 湖寮做网站设计图片logo免费
  • 烟台电子商务产业园网站建设开封旅游网站建设项目方案
  • 最新的域名网站投资公司注册需要多少注册资金
  • 网站开发新动力哈尔滨建设工程网
  • 企业网站访问对象有哪些创业计划书(大学生版)
  • 哈尔滨网站建设培训学校深圳市住房和建设局局长级别
  • 带数据库的网站模板网站建设还好做吗
  • 做推送用什么网站wordpress ftp 密码忘记
  • 我爱做衣服网站建站购物网站
  • 苏州网站建设熊掌号二级域名租用
  • 泉州专业建站淘宝网站做推广收费吗
  • 做简单网站代码seo视频教程
  • html网页制作流程dz论坛seo设置
  • 做网站项目团队口号陕西网站建设企业
  • 如何建设一个自己 的网站首页wordpress 编辑自己代码
  • 炎陵做网站西安网站建设那家好
  • 云浮市住房和城乡建设局网站网站帮企业做推广价格怎么算
  • 什么软件可以做动漫视频网站WordPress动漫源码
  • 小网站推荐自己做的网站网页错位
  • 阜阳市网站建设深度网网站建设
  • wordpress网站如何引流江苏有什么网站找工程建设人员
  • 西安哪家做网站公司好网站建设广告有哪些平台