我目前对使用哪个数据库进行地理定位跟踪有点困惑。我想做的是每 30 秒更新一组人的位置。使用网络套接字将数据发送到服务器。每个用户在数据库中都有一个 Id,我想每 30 秒更新一次该用户的位置。这样做之后,我想查询这些位置并将其实时显示给另一组用户。我的问题是 DynamoDb 和 Redis 的优点和缺点是什么。哪个更快并且可以更轻松地扩展。我预计将近 200 万 QPS
最佳答案
两者都可以很好地扩展,但这在很大程度上取决于您的用例和架构。
DynamoDB 是一个基于云的 NoSQL 存储系统,而 Redis 是一个内存数据结构存储。这意味着对 DynamoDB 的查询将涉及到 Amazon 服务器的往返,而对 Redis 的查询将通过 RAM(因此,延迟要低得多)。
由于上述原因,您可以在 Redis 中存储的数据量将受到硬件上可用 RAM 的限制。也就是说,如果 Redis 或您的硬件由于某种原因崩溃,您将不得不满足于某种程度的数据丢失。您可以通过配置 Redis 持久性来稍微缓解这种情况,以便 Redis 定期写入磁盘(每 N 秒或通过手动触发代码中的写入),然后通过将这些写入复制到 S3 或其他地方来进一步缓解。由于 I/O 延迟,这会以性能(取决于您的规模)换取数据安全。参见 the documentation for Redis persistence和 this blog post GitHub 工程团队提到他们出于性能原因决定删除 Redis 持久性。
与此同时,自 AWS handles availability 以来,DynamoDB 已为您抽象出上述所有问题。为你在幕后。你真的只受限于how much you can afford和使用(每秒读/写)limits .
DynamoDB 没有原生支持查询和插入地理空间数据(虽然是there is a library for it,但好像没人维护),Redis does .您可以为此编写自己的代码。
DynamoDB does not have support for namespacing ,或者更确切地说,DynamoDB 由您的 AWS 帐户命名空间,这意味着您将无法在同一 AWS 帐户上维护具有相同表名(比如生产数据与开发数据)的单独 DynamoDB 实例。 Redis 也没有,但您可以为此简单地启动一个单独的 Redis 实例。
关于websocket - Redis 与 dynamoDb 地理定位跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51050743/
本文主要介绍在使用Selenium进行自动化测试或者任务时,对于使用了iframe的页面,如何定位iframe中的元素文章目录场景描述解决方案具体代码场景描述当我们在使用Selenium进行自动化测试的时候,可能会遇到一些界面或者窗体是使用HTML的iframe标签进行承载的。对于iframe中的标签,如果直接查找是无法找到的,会抛出没有找到元素的异常。比如近在咫尺的例子就是,CSDN的登录窗体就是使用的iframe,大家可以尝试通过F12开发者模式查看到的tag_name,class_name,id或者xpath来定位中的页面元素,会抛出NoSuchElementException异常。解决
我有一个super简单的脚本,它几乎包含了FayeWebSocketGitHub页面上用于处理关闭连接的内容:ws=Faye::WebSocket::Client.new(url,nil,:headers=>headers)ws.on:opendo|event|p[:open]#sendpingcommand#sendtestcommand#ws.send({command:'test'}.to_json)endws.on:messagedo|event|#hereistheentrypointfordatacomingfromtheserver.pJSON.parse(event.d
IntrductionLibwebsocketsisasimple-to-use,MIT-license,pureClibraryprovidingclientandserverforhttp/1,http/2,websockets,MQTTandotherprotocolsinasecurity-minded,lightweight,configurable,scalableandflexibleway.It’seasytobuildandcross-buildviacmakeandissuitablefortasksfromembeddedRTOSthroughmasscloudservi
我有一堆要清理的URL。它们都包含UTM参数,在这种情况下不是必需的,或者是有害的。示例:http://houseofbuttons.tumblr.com/post/22326009438?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+HouseOfButtons+%28House+of+Buttons%29所有可能的参数都以utm_开头。如何使用ruby脚本/结构轻松删除它们而不破坏其他潜在的“好”URL参数? 最佳答案 您可以将正则表达式应用于url以清
刚刚将应用程序从rails3.0.9升级到3.2.1,当我运行bundleexecrakeassets:precompile时出现错误,这很好,但是回溯没有告诉我在哪里语法问题来self的css或scss文件。我尝试对“0ee5c0e69c92af0”进行greping,但该字符串没有出现在我的项目中。bundleexecrakeassets:precompile:allRAILS_ENV=productionRAILS_GROUPS=assets--trace**Invokeassets:precompile:all(first_time)**Executeassets:precom
我有带有gemwebsocket-rails0.7的Rails3.2应用程序。在开发机上,一切正常在生产环境中,我使用Nginx/1.6作为代理服务器,Unicorn作为http服务器。Thin用于独立模式(在https://github.com/websocket-rails/websocket-rails/wiki/Standalone-Server-Mode之后)。nginx配置:location/websocket{proxy_passhttp://localhost:3001/websocket;proxy_http_version1.1;proxy_set_headerUp
我正在使用gmailgem发送电子邮件,我需要跟踪这些电子邮件。我该怎么做?我正在尝试搜索带有message_id的电子邮件,但它会从我的收件箱中提取所有电子邮件,而我只想要特定电子邮件的回复。这是我的实际代码:*使用message_id保存电子邮件*mail=gmail.deliver(email)Email.create(:message_id=>mail.message_id,:from=>user.email,:to=>annotation.to,:body=>annotation.content,:title=>annotation.title,:annotation=>an
我正在使用paper_trail进行审计跟踪。除了创建、更新和删除事件外,我还想跟踪一些自定义事件,例如查看(记录)、发送(电子邮件)等。我们如何在审核模型时引入此类自定义事件? 最佳答案 我发现了一个调整,可以在paper_trail管理的Version中添加自定义事件:Version.create(item_type:"Campaign",item_id:campaign.id,event:"Sent")也许这不是正确的解决方案,但它帮助我实现了目标。我想更多地探索paper_trail以找到更好的解决方案。
关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭7年前。Improvethisquestion有没有一种运行脚本并查看所有步骤的好方法:执行了哪些代码代码在哪个文件中返回什么错误信息这将是了解开源项目如何运作的好方法。Ruby没有这样的解决方案吗?例如。require"httparty"HTTParty.get"http://www.google.se"然后它会运行代码并向我展示它正在执行的所有代码,其中的文件和行、返回的对象、错误消息等。
目录一、什么是Websocket二、WebSocket部分header介绍三、HTTPVSWebSocket四、什么时候使用WebSockets五、关于SockJS和STOMP一、什么是Websocket根据RFC6455标准,Websocket协议提供了一种标准化的方式在客户端和服务端之间通过TCP连接建立全双工、双向通信渠道。它是一种不同于HTTP的TCP协议,但是被设计为在HTTP基础上运行。Websocket交互始于HTTP请求,该请求会通过HTTPUpgrade请求头去升级请求,进而切换到Websocket协议。请求报文如下:GET/spring-websocket-portfoli