gpt4 book ai didi

websocket - Redis 与 dynamoDb 地理定位跟踪

转载 作者:IT王子 更新时间:2023-10-29 06:12:57 27 4
gpt4 key购买 nike

我目前对使用哪个数据库进行地理定位跟踪有点困惑。我想做的是每 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 persistencethis 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 实例。

另见 Redis MEMORY USAGE commandRedis memory optimization文档。

关于websocket - Redis 与 dynamoDb 地理定位跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51050743/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com