我正在寻找可以让我推送数据的库或服务,并且每次都会有其他几个列。现在,我目前正在使用 IronMQ 将 json 推送到队列中,然后解析 json 并获取属性。但是,我想知道是否有一个队列库或服务可以让我将所有属性推送到单独的列中,以便稍后我可以在队列中执行 SQL 查询。
我曾考虑过使用 Python 和 Sqlite3 来执行此操作(与 Amazon SQS 或 IronMQ 相比有什么不同),这将使这变得非常容易。
我正在寻找可以让我推送数据的库或服务,并且每次都会有其他几个列。现在,我目前正在使用 IronMQ 将 json 推送到队列中,然后解析 json 并获取属性。但是,我想知道是否有一个队列库或服务可以让我将所有属性推送到单独的列中,以便稍后我可以在队列中执行 SQL 查询。
我曾考虑过使用 Python 和 Sqlite3 来执行此操作(与 Amazon SQS 或 IronMQ 相比有什么不同),这将使这变得非常容易。
消息队列技术(例如 IronMQ、RabbitMQ、Amazon SQS 等)和 RDBMS(例如 Sqlite、Sql Server、PostGres 等)之间的区别在于,如果您使用 RDBMS 表作为队列并希望允许查询,那么您必须管理自己的LIFO排队过程。队列(有一些例外)强制执行 LIFO 过程,而数据库表是随机访问的,并且不强制插入、修改或删除数据的方式或时间。这些规则在业务层中处理。(您提到使用 Python 和 Sqlite。Sqlite 将是您的队列/数据存储,Python 应用程序将执行管理 LIFO 队列以及随机查询的逻辑。)
RDBMS 通常用作中间消息存储,从您的问题来看,我猜测 LIFO 队列甚至没有那么重要,因为您似乎对随机访问感兴趣。如果不了解更多关于您正在设计的内容,很难说清楚。但是,如果您想要像队列和现成数据库这样的东西,那么请查看Oracle AQ。
从链接页面:
由于 Oracle Streams 高级队列是在数据库表中实现的,因此高可用性、可扩展性和可靠性的所有操作优势也适用于队列数据。Oracle Streams Advanced Queuing 支持标准数据库功能,例如恢复、重新启动和安全性。您可以使用 Oracle Enterprise Manager 等数据库开发和管理工具来监控队列。与其他数据库表一样,队列表可以导入和导出。
可以使用标准 SQL 查询消息。这意味着您可以使用 SQL 访问消息属性、消息历史记录和有效负载。通过 SQL 访问,您还可以进行审计和跟踪。所有可用的 SQL 技术(例如索引)都可用于优化对消息的访问。
更多资源和进一步阅读: