我想知道我是否可以将大量数据放入我的软件中,或者我是否必须使用外部解决方案。
使用 OpenSplice DDS 或 RTI 的 DDS 的持久性可以放置多少数据?
我想知道我是否可以将大量数据放入我的软件中,或者我是否必须使用外部解决方案。
使用 OpenSplice DDS 或 RTI 的 DDS 的持久性可以放置多少数据?
这取决于您对“放置持久数据”的定义。在 OpenSplice-DDS 中,有多种方法可以通过在某些非易失性介质上“持久保存”非易失性数据来“保存”非易失性数据。第一种方法是将数据发布为 PERSISTENT (durability-QoS) 并结合一个或多个持久性服务(OpenSplice 核心 [LGPL-v3] 中可用的“标准”,即不是可选/商业功能)。启动系统时,持久性服务(通常是启动的第一个节点)会将持久化数据注入“全局数据空间”,并且每个应用程序都可以使用它(可以阻止此信息被注入通过 wait_for_historical_data API)。持久数据大小的一个典型限制是“保存”它的可用内存大小 一旦发布(或放入 DDS_terminology:为“持久性服务”指定的资源限制,以每个持久主题的 max_samples、max_samples_per_instance 和 max_instances 表示)。请注意,您可以将 PERSISTENT 数据作为 TRANSIENT 数据的子集,如果您配置了多个持久性服务,它们将在启动时相互“对齐”(和/或添加一个也配置了持久性服务的新节点)导致当应用程序启动和/或加入已经运行的系统时,此 PERSISTENT 数据立即可用。
第二种方法是利用一个附加组件在 DDS 和 DBMS(兼容 ODBC 3.0)系统之间透明地“复制”(双向)数据。OpenSplice DDS 有一个名为“DBMSConnect”的可插拔服务,可以配置为双向转发数据,基于事件或基于状态(下采样)以及潜在的内容过滤。
第三种方式(对于 OpenSplice)是使用名为“OpenSplice Gateway”的通用网关产品,该产品使用 Apache Camel,因此可用于该基础架构的所有“连接器”。在这里,您可以定义“路由”和端点,允许您的 DDS 数据路由到/来自 80 多种非 DDS 技术,包括关系数据库系统,然后允许“保留”您的 DDS 信息。
希望这会有所帮助,
-汉斯