`
做一行爱一行吧
  • 浏览: 23804 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

erlang的ets和dets

 
阅读更多

       随手笔记,随手想到了就随手记,昨天在自己搭建一个小型游戏系统的时候正好说到不知道做些什么,但是不管做什么,都肯定离不开进程,离不开进程的话肯定也离不开ets。

       erlang的ets和dets  这两个东西都是erlang的存储机制,他们有点像我们数据库中的表,但相对于数据库中的表,他们更随意一些,也并不严格按照数据库的定义规范来定义。

       ets是一种在内存上进行读写操作的存储表机制,相对ets来讲,他的生命周期是由进程来完全控制的,也就是说ets所存在的进程一旦消亡,那么ets也就随之消亡了,一个进程可以拥有很多个ets表来为这个进程服务,以上就是在我在实际使用ets之后,对于ets的一些直观的理解。

       ets应该怎么存,ets其实可以随意的进行存储,只要你先创建一个表,那么表里你写什么都可以,先来个简单的

ets:new(map, [set,public,named_table, {read_concurrency,true}]),
ets:insert(map,{map_id,10001}),
ets:insert(name,{map_name,<<新手村>>})。

EMapId = ets:new(map, [set,public,{read_concurrency,true}]),
ets:insert(EMapId,{map_id,10001}),
ets:insert(EMapId,{map_name,<<新手村>>})

 类似的我们就是这样去创建和插入一个表,你可以看一下两套创建插入的区别,缺少了named_table的表就必须使用表的标识号来进行操作,这是一个十分有用的参数配置(pubilc和name_table),第一个的三种参数可以很好的对表的所属进行规范,而后者对于程序的编写者

ets:new(map, [set,public,named_table, {read_concurrency,true}])

 

       来说说参数问题,

       表类型

       set类(key,Value),要求key是不可以重复的

       ordered_set(key, Value), Value中的元组会进行排序

       bag类 (key, Value)   , key可以重复,并可以有多个key,但是不能(key, Value)完全相同,

       duplicate bag(key,Value)很变态,对于kv对没有硬性要求。

       公开类型

       private,私有表标志只有该进程可读写

       public 创建公开表,所有知道这个表的表示的进程都可以对这个表进行读写,

       protected 创建受保护的表,于public不同的是,只可读,不可写,

       named_table 可以直接使用name来对表进行操作针对本进程的调用

      

       ets内置方法并不是很多,如果有需要你完全可以去看一看帮助文档,于lists等方法一样都很容易理解,

       dets就是以文件的方式记录在硬盘上的文件,可以持久使用,于ets的基本操作大同小异,不过目前我没有具体使用过dets,因为我们的游戏使用了mnesia的缘故,所以一直以来一般持久操作的数据都使用数据库,过几天可以做一个dets的实验来体验一下

 

 

 

 

 

      

 

      

 

分享到:
评论

相关推荐

    ets和Dets

    在Erlang编程环境中,ETS(Erlang Term Storage)和Dets(Disk-based ETS)是两种重要的数据存储机制,它们提供了高效的数据管理和访问功能。这篇文章将深入探讨这两个概念,以及它们在实际开发中的应用。 ETS是...

    Erlang6大数据存储方式总结

    Mnesia是Erlang的分布式事务型数据库系统,它结合了ETS和DETS的优点。Mnesia可以在内存和磁盘上存储数据,并且支持跨多个节点的复制和事务操作。这使得Mnesia成为构建分布式应用程序的理想选择。Mnesia提供了记录...

    Erlang程序设计(第二版)及源码

    书中兼顾了顺序编程、并发编程和分布式编程,重点介绍如何编写并发和分布式的Erlang程序以及如何在多核CPU上自动加速程序,并深入地讨论了开发Erlang应用中至关重要的文件和网络编程、OTP、ETS和DETS等主题。...

    erlang深度分析.pdf

    Erlang的工具箱提供了多种性能优化工具,比如ETS和Dets的选择,以及erts_debug模块,可以帮助开发者发现性能瓶颈并加以改进。 #### 16. 开发社区和资源 Erlang有活跃的开源社区和丰富的学习资源,包括书籍、教程、...

    Erlang程序设计(第2版)1

    ETS(Erlang Term Storage)和DETS(Distributed Erlang Term Storage)是Erlang中的两个内置数据库系统,用于存储和检索Erlang术语。ETS是内存中的数据库,适用于高速访问和低延迟需求,而DETS则提供了持久化存储。...

    Erlang程序设计第二版

    在存储方面,Erlang提供了ETS(Erlang Term Storage)和DETS(Disk Erlang Term Storage)两种数据存储机制。ETS是一个内存中数据存储系统,提供了快速的键值存储;而DETS是一个磁盘上的持久化存储系统,它允许在...

    erlang程序设计中文版

    它不仅包含顺序编程的基础知识,还深入探讨了文件和网络编程、OTP(Open Telecom Platform)、ETS(Erlang Term Storage)和DETS(Disc Erlang Term Storage)等高级主题,这些都是开发高效Erlang应用程序的关键技术...

    Erlang深度分析

    这包括了解ETS(Erlang Term Storage)和Dets(Disk ETS)的使用,以及如何监控和调整内存分配。 ##### 3.2 Erlang中的调试工具 调试是软件开发中不可或缺的环节,Erlang提供了许多强大的调试工具,例如Erlang的...

    erlang 深度分析

    - **故障隔离**: Erlang VM设计时考虑到了系统的容错性,通过监控和链接机制实现了故障隔离。 - **垃圾回收**: VM具有自动垃圾回收机制,但开发者可以通过调整来优化垃圾回收行为。 - **内部实现**: - **内存管理...

    inside Erlang VM3

    - **ETS**:一种内存数据库,支持哈希和树索引,执行高效的匹配操作。 - **DETS**:持久化数据库,支持将数据保存到磁盘,但单个文件大小限制为2GB。 - **Mnesia**:分布式数据库,具备高度的可扩展性和容错性,所有...

    otp_win64_25.0.4.rar

    10. **并发原语**:如ETS(Erlang Term Storage)和DETS(Disk-based ETS),提供高效的数据共享和持久化。 总的来说,"otp_win64_25.0.4.rar"文件代表了Erlang OTP的一个关键组成部分,它为Windows用户提供了在64...

    rules_engine:基于Elixir的规则引擎原型

    4. **ETS和DETS**:Erlang Term Storage (ETS) 和 Distributed Erlang Term Storage (DETS) 提供高效的数据存储,可用于存储和检索规则或中间计算结果。 5. **并发与并行**:Elixir的进程模型使得并发编程变得简单且...

    kai:井上武的 DHT 存储

    300ms 请求 99% 相当平衡的负载一致散列、节点、桶二级索引存储后端:ETS、DETS 法定人数协调员一个个同步数据基于八卦的协议成员资格内存缓存接口目标256个节点32 GB/节点整个系统 100,000 qps 物理安置默克尔树...

    the-little-elixir-otp-guidebook-code:The Little Elixir&OTP Guidebook的代码示例

    - `ETS`和`DETS`目录包含了使用Erlang Term Storage (ETS)和Distributed ETS (DETS)进行数据持久化和快速访问的例子。 - `gen_statem`目录则涉及到了更高级的GenServer变体,它允许在不同状态间切换,提供了更灵活的...

Global site tag (gtag.js) - Google Analytics