- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
来自 C 世界的软件工程师闯入云空间。我试图了解我是否可以将 DynamoDB 用于我的所有场景需求,如果我根本不应该使用它,或者我是否应该将 DynamoDB 用于某些场景然后卸载到另一个数据库(可能是更传统的 RDMS)以用于其他场景。
我有一堆机器向我的 AWS API 发送遥测数据。我目前的想法是将这些事件放在 DynamoDB 表中。在第一年,我预计每天表中总共会有大约 100 万个新条目(平均 > 10 个每秒),峰值时间接近每秒 100 个事件。遥测事件的大小将为 0.5-1KB。首先,我只想捕获每个遥测数据并记录下来。这大约是每天 1GB。
我会使用 RDMS,但我担心 ACID 属性,随着数据库大小的增长,我们每秒有 10 到 100 次写入,数据库访问将显着减慢。 我的担心是否正确 ,或者传统的 RDMS 是否适合我的需求?我不觉得我需要 RDMS 的原子保证(我可以接受最终的一致性),尤其是对于读取/聚合查询。
我在想我的主键是机器 ID(分区)和时间 unix 毫秒纪元(排序键)之间的复合键。这应该支持关键场景场景,例如检索特定时间范围和一组机器的所有遥测事件列表。
但是,我还希望做其他事情,例如能够获取各种遥测事件的每日总数,例如触发机器传感器的次数(即计数)。或者列出一组机器的温度高于某个值时记录的所有遥测事件。遥测事件是异构的 - 有许多类型,例如温度、触发等,我需要能够针对给定的一组机器 ID 和时间窗口快速过滤特定类型的遥测事件。
所以你可以想象我的一个查询可能看起来像“对于这个时间窗口和这组机器,列出记录了超过 70 度的温度的所有温度(类型)遥测事件”。前 2 个约束来自我的分区 (machineId) 和排序键 (time),但后一个将查询温度和值大于 70 的所有遥测类型。这是我约束的 4 个字段。我是否应该接受可以查询 machineId 和 time 的现实,但必须从该查询返回的结果中扫描遥测类型和值?
此外,这个 dynamodb 表摄取遥测数据,但前端需要提供诸如上次接收遥测事件、上次机器服务时间、特定遥测事件的每日计数等内容的摘要信息。我不想每次在前端重新加载摘要页面时都重新查询它们。是否应该在遥测到达时计算这些聚合,然后将其存储在单独的表中(或者,如果性能需要,可以在内存中类似于 redis)。这在技术上是流处理吗?
我在网上读到好的设计通常只使用一张 table (单 table 设计),但我发现很难理解如何到达那里。在我希望能够查看单个遥测事件但也可以快速访问聚合信息的场景中,这可能没有意义。
写出这个问题后,这是我的直觉现在告诉我的:
最佳答案
My current idea is to put these events in a DynamoDB table. In the first year I am expecting about 1M new entries total in the table per day (average > 10 per second), with peak times being closer to 100 events per second. The size of the telemetry events will be 0.5-1KB.
I would use RDMS, but I am concerned that with the ACID properties, as the database size grows given we have 10s to 100s writes per second, database access will slow down significantly. Am I right to be concerned, or will a traditional RDMS be suitable for my needs?
I don't feel I need the atomic guarantees of an RDMS (I can live with eventual consistency) especially for reading/aggregating queries.
Should I accept the reality that [...] will have to scan for the telemetry type and value from the results return in that query?
the frontend needs to present summary information [...]. I don't want to have to re-query them every time [...]. Should these aggregates be calculated when the telemetry arrives and then stored in a separate table (or perhaps if performance needs it, in memory something like redis). Is this technically stream processing?
I read online that good design typically only uses one table (single table design), but I am finding it hard to understand how to get there.
After writing out this question, here is what my intuition is telling me right now: [...]
关于amazon-web-services - DynamoDB 是否适合我需要访问记录和摘要(聚合)信息的每天 100 万事件的场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65586045/
我正在尝试用 C 语言编写一个使用 gstreamer 的 GTK+ 应用程序。 GTK+ 需要 gtk_main() 来执行。 gstreamer 需要 g_main_loop_run() 来执行。
我已经使用 apt-get 安装了 opencv。我得到了以下版本的opencv2,它工作正常: rover@rover_pi:/usr/lib/arm-linux-gnueabihf $ pytho
我有一个看起来像这样的 View 层次结构(基于其他答案和 Apple 的使用 UIScrollView 的高级 AutoLayout 指南): ScrollView 所需的2 个步骤是: 为 Scr
我尝试安装 udev。 udev 在 ./configure 期间给我一个错误 --exists: command not found configure: error: pkg-config and
我正在使用 SQLite 3。我有一个表,forums,有 150 行,还有一个表,posts,有大约 440 万行。每个帖子都属于一个论坛。 我想从每个论坛中选择最新帖子的时间戳。如果我使用 SEL
使用 go 和以下包: github.com/julienschmidt/httprouter github.com/shwoodard/jsonapi gopkg.in/mgo.v2/bson
The database仅包含 2 个表: 钱包(100 万行) 事务(1500 万行) CockroachDB 19.2.6 在 3 台 Ubuntu 机器上运行 每个 2vCPU 每个 8GB R
我很难理解为什么在下面的代码中直接调用 std::swap() 会导致编译错误,而使用 std::iter_swap 编译却没有任何错误. 来自 iter_swap() versus swap() -
我有一个非常简单的 SELECT *用 WHERE NOT EXISTS 查询条款。 SELECT * FROM "BMAN_TP3"."TT_SPLDR_55E63A28_59358" SELECT
我试图按部分组织我的 .css 文件,我需要从任何文件访问文件组中的任何类。在 Less 中,我可以毫无问题地创建一个包含所有文件导入的主文件,并且每个文件都导入主文件,但在 Sass 中,我收到一个
Microsoft.AspNet.SignalR.Redis 和 StackExchange.Redis.Extensions.Core 在同一个项目中使用。前者需要StackExchange.Red
这个问题在这里已经有了答案: Updating from Rails 4.0 to 4.1 gives sass-rails railties version conflicts (4 个答案) 关
我们有一些使用 Azure DevOps 发布管道部署到的现场服务器。我们已经使用这些发布管道几个月了,没有出现任何问题。今天,我们在下载该项目的工件时开始出现身份验证错误。 部署组中的节点显示在线,
Tip: instead of creating indexes here, run queries in your code – if you're missing any indexes, you
你能解释一下 Elm 下一个声明中的意思吗? (=>) = (,) 我在 Elm architecture tutorial 的例子中找到了它 最佳答案 这是中缀符号。实际上,这定义了一个函数 (=>
我需要一个 .NET 程序集查看器,它可以显示低级详细信息,例如元数据表内容等。 最佳答案 ildasm 是 IL 反汇编程序,具有低级托管元数据 token 信息。安装 Visual Studio
我有两个列表要在 Excel 中进行比较。这是一个很长的列表,我需要一个 excel 函数或 vba 代码来执行此操作。我已经没有想法了,因此转向你: **Old List** A
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想要改善这个问题吗?更新问题,以便将其作为on-topi
我正在学习 xml 和 xml 处理。我无法很好地理解命名空间的存在。 我了解到命名空间帮助我们在 xml 中分离相同命名的元素。我们不能通过具有相同名称的属性来区分元素吗?为什么命名空间很重要或需要
我搜索了 Azure 文档、各种社区论坛和 google,但没有找到关于需要在公司防火墙上打开哪些端口以允许 Azure 所有组件(blob、sql、compute、bus、publish)的简洁声明
我是一名优秀的程序员,十分优秀!