`
wudixiaotie
  • 浏览: 132377 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

什么时候用mnesia,进程字典,ets表

阅读更多

初学的时候关于这三个东西(mnesia,进程字典,ets表)总是感觉不知道到底怎么样但是感觉很厉害的样子,

但是真正在开发的时候,是用mnesia还是进程字典还是ets表呢?

我这段时间实际的工作经验来看:

1.当我们需要在某个进程中频繁的访问很大块的数据的时候,推荐用进程字典,首先有4中方式可以达到目的:

1.参数传递,进程的运行过程中,所有的函数的参数都带着这些数据。

2.存在ets表中。

3.存在mnesia中。

4.存在进程字典中。

但是在实际测试发现,数据的读写速度:进程字典》ets表》mnesia。所以2,3可以pass了,那么1和4,在时间上没什么太大的差距,但是函数调用的参数传递也是有成本的,所以推荐用进程字典。他的特点是读写速度快,但是无法跨进程访问。

 

2.当我们开发的时候遇到了很多进程要共享某个数据的时候,推荐用ets表,还是有2中方式可以实现:

1.消息传递,以消息的发送作为数据的交换。

2.ets表。

但是消息的传递也是有很大的成本,尤其是大块的数据,消息成本非常高,这时ets表作为共享就非常方便了,但是这时涉及到一个问题,就是会有阻塞的情况发生,当有成千上万的进程(或者更多)去访问同一个ets表的时候,可能会造成阻塞,这时就需要想别的办法了,例如加队列或者放弃ets改用其他方式来处理。

 

3.当我们有很多节点,这些节点内的进程需要共享数据的情况,用mnesia是个不错的选择,mnesia会在联通的节点上都启动一套mnesia进程,负责管理mnesia。每个节点上的mnesia的会和其他节点交换数据,保证每个节点的数据都是一样的。

1
1
分享到:
评论

相关推荐

    Mnesia User's Guide

    • Mnesia provides an introduction to Mnesia. • Getting Started introduces Mnesia with an example database. Examples are included how to start an Erlang session, specify a Mnesia database directory, ...

    erlang——Mnesia用户手册.pdf

    里的并发进程 5.10.原型 5.11.Mnesia.基于对象的编程 6.Mnesia.系统信息 6.1.数据库配置数据 6.2.内核转储(Core.Dumps) 6.3.转储表 6.4.检查点 6.5.文件 6.6.在启动时加载表 6.7.从通信失败中...

    Mnesia用户手册

    Mnesia用户手册Mnesia用户手册

    Mnesia table fragmentation 过程及算法分析

    Mnesia table fragmentation 过程及算法分析。erlang就算在64位下dets的空间限制仍旧是2g,同样影响了mnesia,如果有更大需求,就必须使用Mnesia的 table fragmentation 技术

    Mnesia用户手册 4.4.10版.rar

    5.9 Mnesia 里的并发进程 . . .. . . . .. . 58 5.10 原型 . . .. . . .. . 58 5.11 Mnesia 基于对象的编程 . . .. . .. . .. . . 61 6 Mnesia 系统信息 . . .. . .. . . .. . 64 6.1 数据库配置数据 . . .. . ....

    Mnesia用户手册.pdf

    Mnesia用户手册.pdf

    Mnesia用户手册(docx版)

    Mnesia用户手册(docx版) 详细讲解Mnesia数据库操作

    Mnesia用户手册(PDF版本)

    Mnesia用户手册(PDF版本) 详细讲述Mnesia数据库操作。

    Mnesia用户手册.zip

    Mnesia是一个分布式数据库管理系统(DBMS),适合于电信和其它需要持续运行和具备软实时 特性的Erlang应用。

    mnesia数据库文档

    erlang系统自带的数据库mnesia的官方文档。

    Erlang Mnesia

    This book describes the Mnesia DataBase Management System (DBMS). Mnesia is a distributed Database Management System, appropriate for telecommunications applications and other Erlang ...

    Erlang6大数据存储方式总结

    个人学习Erlang对于Erlang处理数据的各种方式的总结,讲述编程语言Erlang的ets,dets,mnesia,mysql,dict,和进程字典的用法,希望能帮助读者在这个总结里学到一些东西.

    Mnesia 用户手册中文版 pdf

    Mnesia 用户手册中文版 pdf,把市面上的doc转成pdf,并添加重要章节的书签,细节并不完美,请见谅。

    mnesia_pg:Postgres后端通过mnesia_ext到Mnesia

    mnesia_pg Postgres后端通过mnesia_ext到Mnesia 这是一个非常原始的实现,用作概念验证和初步基准测试。 尚未用于生产中。 随时进行改进。

    cachet:Mnesia的内存光盘分派器

    您的使用数据库的客户端可能需要一些代码更改才能调用cachet API,而不是mnesia (在某些情况下,只需在代码中替换模块名称)即可。 cachet将在RAM表或DISC表中调度请求。 用法 cachet可用于解决以下问题: mnesia...

    erlang mnesia 数据库基本查询

    Mnesia是一个分布式数据库管理系统,适合于电信和其它需要持续运行和具备软实时特性的Erlang应用,越来越受关注和使用,但是目前Mnesia资料却不多,很多都只有官方的用户指南。下面的内容将着重说明 如何做 Mnesia ...

    mnesiam:Mnesiam使Mnesia数据库的群集变得容易

    Mnesiam使Mnesia数据库的群集变得容易。 可以在上找到模块文档。 安装 该软件包可以通过添加安装mnesiam你在依赖列表mix.exs : def deps do [{ :mnesiam , " ~> 0.1.1 " }] end 在您的应用程序之前,请确保已...

    备忘录:Mnesia分布式数据库的简单+强大接口

    备忘录:Mnesia分布式数据库的简单+强大接口

Global site tag (gtag.js) - Google Analytics