问题标签 [ets]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
erlang - 在 ets 和 mnesia 中哪个更有效
ets:select vs mnesia:select 哪个更好用。而且在插入和删除的情况下,我们应该使用这两者中的哪一个。我正在研究 ejabberd。任何指针?
performance - Erlang:ets选择和匹配性能
我发现“功能 ets:select/2 和 mnesia:select/3 应该优先于 ets:match/2、ets:match_object/2 和 mnesia:match_object/3”表单参考链接:http://www.erlang .org/doc/efficiency_guide/tablesDatabases.html
而且我读过一些关于选择和匹配之间比较的文章,我得出结论有一些因素会影响结果,例如表中的记录数量,是否选择/匹配主键,表类型(包,设置... ), ETC。
在我的测试中,我为所有类型的表做 10W 记录和 1W 记录,并且只选择/匹配非主键。
以下代码:
记录如下:#ets_haoxian_template{type = X, count = Y, ...},keypose 是类型。
结果如下:1W测试:
10W测试:
似乎匹配比选择更好?还是我的测试有问题???
erlang - 使用 ets 函数读取 mnesia 表(erlang)
使用 mnesia 处理 erlang 项目(一些表 ram 副本,一些表磁盘副本,一些表两者)。为了优化某个读取(ram 表),我使用了 ets 查找而不是我一直使用的 mnesiadirty_read,并对例程的两个版本进行了计时。ets 查找比 mnesiadirty_read 快得多。
我的问题是使用 ets vs mnesia 读取 mnesia 表是否有一些“陷阱”或“捕捉”(必须有,否则没有理由让较慢的 mnesia 读取存在)。如果它有任何区别,我不需要也没有使用任何“分布式”或“节点”。换句话说,我现在并且只会在一台计算机上使用一个节点。
erlang - Erlang ets:insert_new 用于包
在我的代码中,我想利用 ETS 的包类型,它可以为单个键存储多个值。但是,知道插入是否真的插入了一个新值(即插入的带有值的键是否存在于包中)将非常有用。
使用 ETS 类型集,我可以使用 ets:insert_new,但 bag 的语义不同(强调我的):
此函数的工作原理与 insert/2 完全相同,不同之处在于不是用相同的键覆盖对象(在 set 或 ordered_set 的情况下)或使用表中已经存在的键添加更多对象(在 bag 和 duplicate_bag 的情况下) ,它只是返回false。
有没有办法通过一个电话来实现这样的功能?我知道它可以通过查找后跟可选插入来实现,但我担心它可能会损害并发访问的性能。
erlang - 我应该如何在 ETS 表中自动过期,同时限制其总大小?
我有很多分析数据,我希望每隔一段时间(比如说一分钟)汇总一次。数据被发送到一个将其存储在 ETS 表中的进程,并且每隔一段时间,一个计时器就会向它发送一条消息处理表并删除旧数据。
问题是传入的数据量变化很大,我基本上需要做两件事:
- 如果传入的数据量太大,则丢弃最旧的数据并推送新数据。这可以看作是一个固定大小的队列,如果数据量达到限制,队列将开始从前面,因为新数据排在后面。
- 如果队列未满,但数据已在那里放置了一段时间,则自动丢弃它(在固定超时后)。
如果保持这两个条件,我基本上可以假设该表具有恒定大小,并且其中的所有内容都比 X 新。
问题是我还没有找到一种有效的方法来一起做这两件事。我知道我可以使用匹配规范来删除所有早于 X 的条目,如果索引是时间戳,这应该会非常快。虽然我不确定这是否是定期修剪桌子的最佳方式。
第二个问题是将总表大小保持在一定的限制下,我不太确定该怎么做。想到的一个解决方案是在每次插入时使用自动增量字段,并且在修剪表时,查看第一个和最后一个索引,计算差异,然后再次使用匹配规范删除低于阈值的所有内容。
说了这么多,感觉我可能会使用 ETS 表来做一些它不是设计用来做的事情。有没有更好的方法来存储这样的数据,或者我是否正确地解决了这个问题?
r - 在 ETS 包中,您可以使用高频 f=365..吗?
我正在使用预测函数..和 ts() ,使用 F=365 ............并且能够看到 gud 日明智的季节性......在 Hyndman 先生的博客中,我读到“我经常被问到如何适应ARIMA 或 ETS 模型的数据具有较长的季节性周期,例如每日数据为 365 或半小时数据为 48。通常,ARIMA 和 ETS 模型的季节性版本设计为较短的周期,例如每月数据 12 或 4季度数据”就像在stackoverflow中一样,我知道预测()只是使用ETS函数..什么是正确的..
erlang - Erlang Term Storage (ETS) 存储在哪里?
嗨,我正在学习 Erlang。
我从http://learnyousomeerlang.com/ets阅读
Erlang 有一种叫做 ETS(Erlang Term Storage)的表。ETS 表是 Erlang 虚拟机附带的高效内存数据库。[...]
我的问题是:存储在 ETS 表中的 Erlang 术语数据 - 它们存储在哪里?它们是否临时存储在我的计算机内存中?如果我重新启动我的应用程序,它们会消失吗?
erlang - ets `public` `named` 表和 `local` 和 `ram_copy` mnesia 表有什么区别
我创建了一个记忆表,例如
因为local_content=true
,所以它不能与其他节点共享数据,它是一个ram_copies
表。
我相信我可以用 ets 表做同样的事情,如下所示。
我想从性能的角度来看,它们是相似的。
从语义的角度来看,我想知道这两个表之间有什么区别?
erlang - Erlang - ETS 表之间的比较
我们想知道如何有效地找到两个 ets 表之间的相互元素,我们尝试了 ETS 和 QLC 模块,但找不到方法,我们在 [bag] 选项上使用 ets,这意味着我们有几个值同一把钥匙。
我们正在寻找最快和最有效的解决方案。
erlang - 如何从 mnesia 备份文件中提取数据
问题陈述
我有一个 mnesia 备份文件,想从中提取值。有 3 个表(为了简单起见),员工、技能和出勤。因此,mnesia 备份文件包含这三个表中的所有数据。
员工表是:
技能表是
考勤表是
我试过 的我用过
ets:foldl(Fetch,OutputFile,Table)
Fetch :是一个单独的函数,用于遍历获取的记录以获取所需的输出格式。
OutputFile : 它写入这个文件
表:表的名称
期待
我是带有 AttendanceId 的 gettig 记录(因为这是关键),因为我只想获取代码。它显示员工信息和考勤ID。
帮帮我。