`
wudixiaotie
  • 浏览: 139846 次
  • 性别: 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用户手册.zip

    9. 操作简便:Mnesia的API设计简洁,易于学习和使用。开发人员可以直接在Erlang代码中操作数据库,无需额外的中间件或驱动程序。 10. 集成:Mnesia与其他OTP组件无缝集成,如GenServer、GenEvent等,使得在Erlang...

    Mnesia table fragmentation 过程及算法分析

    通过使用 Linear Hashing 算法,Mnesia 可以将大表分散存储在多个节点上,从而提高表的可扩展性和性能。 在分析 Mnesia 表分片的过程和算法之前,首先要理解分片的必要性和它所解决的问题。随着业务的发展,数据量...

    Mnesia用户手册(docx版)

    - **锁**:为了管理并发访问,Mnesia 使用锁机制来控制对数据的读写操作。有记录级锁和表级锁,以防止冲突并确保数据的一致性。 5. **查询和操作** Mnesia 提供了一套丰富的查询语言(QLC,Query List ...

    Mnesia 用户手册中文版 pdf

    Mnesia的错误信息处理、备份回调函数接口、作业访问回调接口和分片表哈希回调接口分别在附录中进行了详细说明,这些都是使用和维护Mnesia数据库时不可或缺的部分。 在设计电信控制系统平台时,Mnesia能够提供强大的...

    Mnesia用户手册(PDF版本)

    - **分片表哈希回调接口**:定义了分片表中使用的哈希算法的回调接口。 综上所述,Mnesia不仅是一个强大的数据库管理系统,而且还是一个高度可定制的工具,能够适应各种复杂的应用场景,特别是在电信行业。通过对...

    Mnesia用户手册 4.4.10版.rar

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

    mnesia数据库文档

    5. **模式定义**:Mnesia允许用户定义数据库模式,包括表、索引和属性等,提供了一种结构化的方式来组织和访问数据。 6. **查询语言**:Mnesia提供了自己的查询语言,允许用户执行复杂的查询和数据操作,同时也有对...

    Erlang Mnesia

    - Mnesia 是用Erlang编写的,并且与Erlang语言紧密集成。这使得开发者可以利用Erlang的强大功能来管理数据存储和检索,同时也能够充分利用Erlang语言本身提供的高并发特性。 **5. 多用户支持** - 作为一种分布式...

    Erlang6大数据存储方式总结

    通过《ets数据结构总结1.txt》和《ets数据结构总结2-Mnesia.txt》,你可以深入了解ETS的各类数据结构及其在连接外部数据库(如《ets数据结构总结3-连接外部数据库.txt》中提到的MySQL)时的应用场景和策略。...

    erlang mnesia 数据库基本查询

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

    mnesia_pg:Postgres后端通过mnesia_ext到Mnesia

    由于其内置的进程管理和消息传递机制,Erlang特别适合处理实时数据和网络通信,Mnesia就是Erlang标准库中的一部分,是一个分布式数据库管理系统。 **潜在知识点:** 1. **Erlang语言**:包括其面向并发的设计,...

    Mnesia Overview

    - **Erlang支持**:Mnesia利用了Erlang语言中的特性,如进程间的通信机制和轻量级进程模型等,来实现高效的数据处理和容错机制。 3. **特点与优势**: - **多用户分布式DBMS**:Mnesia是一个支持多用户的分布式...

    cachet:Mnesia的内存光盘分派器

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

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

    在查询Mnesia数据库时,可以使用Erlang或Elixir的模式匹配功能,这提供了强大的查询能力,同时也保持了代码的简洁性。 7. **故障恢复和容错**: Mnesia通过复制数据来实现容错。当一个节点失败时,其他节点可以...

Global site tag (gtag.js) - Google Analytics