为您的物联网解决方案选择合适的数据库平台是一项艰巨的任务。首先,物联网解决方案可以跨地理区域分布。更多的解决方案正在结合使用边缘雾计算和云计算,而不是基于集中式云的解决方案。因此,您的数据库平台必须让您能够灵活地在边缘处理数据并在边缘服务器和云之间进行同步。其次,根据您的物联网用例,您需要的数据库功能可能包括实时数据流、数据过滤和聚合、近零延迟读取操作、即时分析、高可用性、地理分布、架构灵活性等。本文介绍了为IoT解决方案选择合适的数据库平台的四个步骤:第1步确定解决方案的数据需求时间分析、从历史数据中收集模式等等。为了方便讨论,在一般的物联网解决方案中,传感器和执行器可以安装在整个企业中。数以千计的传感器和执行器连接到单个边缘服务器。IoT解决方案持续从所有传感器收集数据,做出实时决策以控制传感器和执行器,向系统监视器发出异常活动警报,并为最终用户提供历史分析视图。在决定使用哪些服务以及使用哪些数据库之前,有必要清楚地了解数据的使用方式和使用位置。一些有助于理解您的数据需求并确定其优先级的问题:哪些数据处理和决策委托给了边缘服务器?云解决方案是部署在一个区域,还是分布在多个区域?从设备到边缘服务器,从边缘服务器到中央服务器传输的数据量是多少?估计的峰值容量是多少?IoT解决方案是否控制设备或执行器?如果是这样,他们是否需要实时响应?从历史数据中获得的业务洞察力是什么?步骤2将解决方案分解为独立的软件服务在此步骤中,您将设计执行独立的特定任务的软件服务或组件。当前面描述的示例IoT解决方案被分解为单个服务时,将产生图2中所示的设计。物联网解决方案本质上是地理分布的,一些组件部署在边缘网络,其余组件部署在集中位置。现在让我们将架构分解为服务并分析它们的职责和数据需求:数据摄取目的:收集和存储设备日志和消息。数据库要求:支持高速写操作,因为数据可能是突发性到达,保证数据在异常情况下不会丢失。边缘分析目的:对输入数据执行数据转换、分类、聚合、过滤和功能。它负责边缘的实时决策。数据库要求:支持高速读写和亚毫秒级延迟;提供工具和命令来对数据执行复杂的分析计算。设备管理器的目的:向设备传递信息。数据库要求:以最小的延迟访问和向设备发送消息。系统分析目的:从边缘服务器收集数据,进行数据转换和分析操作。数据库需求:提供对数据进行分析计算的命令,根据分析引擎的需要对数据进行长期存储。C&C(命令和控制)仪表板目的:提供物联网生态系统当前状态的可视化表示。数据库要求:保持数据最新准确,读取数据时延小于毫秒。商业智能用途:根据历史数据运行报告、查询和推断。数据库需求:长期存储数据,节省成本;提供查询和分析数据的工具。物联网数据流导出目的:将数据规范化为通用格式并将其推送给订阅者。数据库要求:能够高效地执行数据转换操作;支持发布和订阅功能。第三步:根据数据需求对服务进行分组,选择合适的数据库下一步就是根据每个服务的数据选择合适的数据库。图3将我们的IoT示例中的服务连接成一个图表,根据数据在数据库中保留的时间和服务所需的数据读/写速度对它们进行分类。您会看到数据不断进出数据摄取服务器,在数据库中花费的时间很少。同时,数据的到来又大又快。因此,我们需要一个低延迟的高速数据库来保存用于摄取服务的数据。另一方面,商业智能服务依赖于历史数据。下一步是将具有类似数据访问特征的服务分组,目的是限制数据库(冗余数据库和不符合您需求的数据库)的数量,从而减少操作开销。在图4中,我们将示例服务分为两个主要数据库——一个热数据库和一个冷数据库。保存热数据的数据库部署在物联网设备附近,以最大限度地减少网络延迟。热数据和冷数据的数据库选择是:热数据库:由于RAM越来越便宜,内存数据库通常是一个不错的选择。内存数据库以最小的延迟提供数据读取和写入功能。这些附加特性和功能将帮助您在选择热门数据库时缩小选择范围:数据格式灵活性–帮助您支持广泛的设备和通信格式查询功能–使您能够实时运行高效的查询消息传递和排队-驱动器通信和数据交换分层内存模型-提供经济高效的内存模型,但性能高高可用性和灾难恢复-帮助您始终保持业务运行地理分布-服务于地理分布的物联网部署二进制安全-帮助您保持二进制数据冷数据库:IoT解决方案的历史数据可以增长到数TB,在某些情况下甚至超过PB。存储历史数据的流行选项包括商品硬件上的存储解决方案。查询通常遵循map-reduce模式。通常,历史数据也会在搜索引擎中编入索引以进行模式匹配和数据聚合。如果您打算将数据存储在云中,请咨询您的云服务提供商,了解哪些数据存储选项在您所在地区最物有所值。第4步:评估成本、资源效率将数据库分为热数据库和冷数据库有助于缩小数据库选择范围。对于大多数物联网用例,高速数据库可以满足热数据库的所有需求。对于冷数据库,选项范围从关系数据库到数据湖。设计人员常犯的一个错误是为每项服务创建具有专用数据库的多语言架构。这增加了应用程序堆栈的复杂性以及运营开销和成本。拥有数据库的总成本是许多参数的函数。数据库本身的成本只是成本的一??小部分。以下是一些成本:数据库许可成本:此成本可能与cpu数量、集群中的分片数量、数据库大小、吞吐量(每秒最大操作数)、时间(年、月、小时等)有关。)、高可用性和恢复特性、云的多个区域的可用性等。如果您使用作为开源软件可用的数据库,根据许可证的类型,数据库成本甚至可能为零。基础设施成本:基础设施成本取决于数据库的资源效率。例如,一个轻量级、线程安全的数据库可能仅使用两台商品服务器每秒执行100万次读/写操作,而传统数据库可能需要更多的服务器才能实现相同的结果。除了数据库效率之外,硬件成本还取决于吞吐量、cpu数量、RAM、数据大小、闪存、网卡等。用于高可用性的数据库架构也发挥了作用。例如,基于仲裁的故障转移架构只需要一个备份服务器副本,但非基于仲裁的架构将需要两个数据副本以避免大脑分裂。数据丢失成本:针对数据丢失的适当保险极为重要,尤其是对于商业物联网解决方案而言。您丢失数据的总成本是:亏损业务数据丢失的概率*恢复数据的成本您可以通过数据库供应商提供的适当SLA来抵消部分成本。运营开销:自动化是成功的法宝。如果数据库提供控制以实现部署、配置、故障转移、扩展、数据分区、备份和恢复、监控和警报等操作的自动化,将有助于高效运行。结论在为下一代物联网解决方案选择合适的数据库时,很容易迷失在过多的现有数据库中。但是,如果将解决方案分解为组件服务并了解它们的数据库要求,则可以有效地缩小数据库选择范围。大多数物联网解决方案依赖热数据库进行实时数据收集、处理、消息传递、分析,并依赖冷数据库存储历史数据和收集商业智能。这将使架构保持简单、精简和健壮。最后一点,由RedisLabs赞助的开源内存数据库Redis是物联网解决方案的流行数据库。它被IoT解决方案广泛用于数据摄取、实时分析、消息传递、缓存和许多其他用例。
