有多列的队列?

时间:2014-10-21 19:49:19

标签: amazon-web-services message-queue ironmq

我正在寻找一个允许我推送数据的库或服务,每次都会有其他几个列。现在,我正在使用IronMQ将json推送到队列,然后解析json并获取属性。但是,我想知道是否有一个队列库或服务允许我将所有属性推送到单独的列中,以便稍后,我可以在队列中执行SQL查询。

我已经考虑过Python和Sqlite3这样做(与Amazon SQS或IronMQ相比有什么不同),这会让这很容易。

1 个答案:

答案 0 :(得分:1)

消息队列技术(例如IronMQ,RabbitMQ,Amazon SQS等)和RDBMS(例如Sqlite,Sql Server,PostGres等)之间的区别在于,如果您使用RDBMS表作为队列并且想要允许查询,那么您将必须自己管理LIFO排队过程。队列(有一些例外)强制执行LIFO过程,而数据库表是随机访问,并且不强制插入,修改或删除数据的方式或时间。这些规则在业务层中处理。 (您提到使用Python和Sqlite.Sqlite将是您的队列/数据存储,Python应用程序将执行管理LIFO队列以及随机查询的逻辑。)

RDBMS经常被用作中间消息存储,并且从你的问题我猜测LIFO队列甚至不重要,因为你似乎对随机访问感兴趣高于其他一切。如果不了解更多关于你的设计的内容,很难说清楚。但是,如果你想要一个现成的队列和数据库,那么请查看Oracle AQ

从链接页面:

  

因为Oracle Streams Advanced Queuing是在数据库中实现的   表,高可用性,可扩展性,所有操作优势,   和可靠性也适用于队列数据。标准数据库   支持恢复,重启和安全等功能   Oracle Streams高级队列。您可以使用数据库开发和   Oracle Enterprise Manager等管理工具用于监控队列。   与其他数据库表一样,可以导入和导出队列表。

     

可以使用标准SQL查询消息。这意味着你可以   使用SQL来访问消息属性,消息历史记录和   有效载荷。通过SQL访问,您还可以执行审核和跟踪。所有   可用的SQL技术(如索引)可用于优化   访问消息。

更多资源和进一步阅读: