问题标签 [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.

0 投票
2 回答
751 浏览

erlang - 数据检索吞吐量 - ETS 查找与进程间消息传递

假设我们有一个涉及数千个进程的 erlang 应用程序。假设有一个资源 X,它可能是一个元组、一个列表或任何 erlang 术语,所有这些进程可能需要随时从中读取/挑选一些东西。

这种情况的一个例子是 API 系统,其中客户端进程可能需要在远程机器上读写。Ant 碰巧您不希望为每个读/写请求创建一个新连接。因此,您所做的就是创建一个连接池,将它们视为一个开放的管道/套接字/通道池。

现在,这个资源池将由数千个进程共享,因此对于每个读取或写入需求,您希望该进程检索任何可用的开放通道/资源。

问题是,如果我有一个进程(单个进程)保存此信息,无论是在其进程字典中还是在其接收循环中。这意味着所有进程在需要空闲资源时都必须向该进程发送消息。由于对该单一资源的高需求,这个单一进程在任何时候都会有一个巨大的邮箱。

或者我可以使用 ETS 表,并且只有一行,比如#resources{key=pool,value= List_of_openSockets_or_channels}. 但这意味着,我们所有的进程都将尝试在(高概率)相同的瞬时时间从 ETS 表中读取同一行。

如果 10,000 个进程同时/几乎同时尝试读取同一行/记录,ETS 表将如何处理?然而,如果我使用一个进程,它的邮箱,如果 10,000 个进程同时为相同的资源向它发送消息(并且它需要回复每个请求者)。请记住,此操作可能会如此频繁地发生。什么选项(不考虑进程下降的可用性问题等等)会提供更高的吞吐量,从而让进程更快地获得他们需要的东西?

有没有其他更好的方法来处理 Erlang VM 中的高需求数据结构,即使它们都同时需要该资源,也可以提供对数百万个进程的非常快速的访问?

0 投票
1 回答
406 浏览

data-structures - 为什么 ETS 表不被垃圾收集?

我正在学习 Erlang,所以这是一个提高我对 Erlang 设计选择的理解的问题。

为什么 ETS 数据结构(字典/树)与 Erlang 内置类型(列表/元组等)的处理方式如此不同。也就是说,它们不是垃圾收集的并且它们是可变的,因此所有使用它们的函数都有副作用。必须跟踪 ETS 表以避免内存泄漏似乎特别烦人。

Erlang 没有表现得更像列表的字典数据类型(是不可变的和垃圾收集的)是否有原因?

是否假设 ETS 仅用于复制非常昂贵的大型数据库之类的结构,而对于其他任何事情,您使用 O(n) 元组列表作为键/值数据结构?

0 投票
1 回答
1993 浏览

r - ETS 平滑模型是否适用于 R 中超过一年的预测?

我目前正在使用 ets() 根据 R 中的历史时间序列数据预测未来值。我使用 predict() 函数来预测接下来的 24 个数据点。但是,对于前 12 个和后 12 个数据点,输出给出了相同的数字。例如,2012 年 5 月的预测值复制到 2013 年 5 月。

以下数据通过:

代码:

输出:

请帮忙。

0 投票
2 回答
6071 浏览

r - 在 R 中选择 ets() 和 auto.arima() 函数的最佳标准是什么?

我正在使用预测包中的 ets() 和 auto.arima() 函数来预测 R 中的未来值。应该使用哪些标准来选择这两者之间的最佳模型?

以下是 ets (data.ets) 和 auto.arima (data.ar) 的准确度输出。

和每个模型的AIC如下

以下是 ets 和 auto.arima 的拟合模型

请帮忙。

0 投票
2 回答
90 浏览

functional-programming - 无法创建具有不同名称并使用单个记录的两个表,我该如何实现呢?

我正在尝试使用相同的记录创建两个具有两个不同名称的表,但它只创建其中任何一个,或者有时会引发异常。

以下是我的记录文件中的代码:

以下是我来自名为帐户的模块的代码:

有时它会返回一个名为 Savings 的原子,但有时它会给出以下错误:

** 异常错误:函数 ets:new/2 中的错误参数被称为 ets:new(current,[named_table,{keypos,3}]) 在来自 accounts:start/0 的调用中(accounts.erl,第 5 行)

请让我知道是否可以使用单个记录在 ets 中创建两个表?如果没有,那么我该如何实现它,我正在尝试创建两个表,一个用于储蓄账户,另一个用于活期账户,我该如何解决这个问题?

0 投票
2 回答
118 浏览

functional-programming - 如何在erlang中处理帐号?

我正在使用 ETS 制作银行账户管理系统,该系统还将持有活期账户和储蓄账户,我无法弄清楚如何生成和保留一系列帐号,因为 erlang 变量是不可变的。

那么如何实现生成和保存帐号的功能,以便下次创建帐户时将下一个帐号分配给前一个帐号?

0 投票
1 回答
3751 浏览

erlang - What is the best distributed Erlang in-memory cache?

I need some suggestion for the erlang in-memory cache system.

  1. The cache item is key-value based storage. key is usually an ASCII string; value is erlang's types include number / list / tuple / etc.
  2. The cache item can be set by any of the node.
  3. The cache item can be get by any of the node.
  4. The cache item is shared cross all nodes even on different servers
  5. dirty-read is permitted, I don't want any lock or transaction to reduce the performance.
  6. Totally distributed, no centralized machine or service.
  7. Good performance
  8. Easy install and deployment and configuration and maintenance

First choice seems to me is mnesia, but I have no experence on it. Does it meet my requirement? How the performance can I expect?

Another option is memcached -- But I am afraid the performance is lower than mnesia because extra serialization/deserialization are performed as memcached daemon is from another OS process.

0 投票
1 回答
212 浏览

mysql - 如何通过 mysql 触发器更新 ETS 表

我需要根据对 mysql 表所做的更改来更新 ETS 表:可以从 erlang 应用程序中访问 mysql 表。

我在想也许我可以有一个进程等待更新 ETS 表,而 mysql 表是从某种网络应用程序更新的。

任何和所有输入表示赞赏,如果我可以提供更多信息,请告诉我。

谢谢。

0 投票
1 回答
1573 浏览

erlang - 使用后如何清理 ETS 表?

我正在一个进程中创建一个具有唯一原子名称的 ETS 表。该过程执行并终止。进程终止是否会清除 ETS 消耗的资源(内存)?

使用后是否有必要清理/删除 ETS 表?

这就是我正在做的事情:

.

看来,如果我尝试使用相同的原子标识符创建另一个 ETS 表,它将出错,因此上述方法似乎不起作用。根据上述,我不能将 ETS 表选项设置为私有,因为我需要从不同的进程插入(以防私有会清除 ETS 资源)。

所以底线问题:如何从特定的 ETS 表中删除所有资源?

0 投票
1 回答
194 浏览

erlang - 工会 ETS 表

我尝试将两个 ETS 表合并为一个 ETS 表。我知道的唯一方法是创建第三个表并将这两个表的记录插入到第三个表中。有没有更好的办法?