Erlang之ETS,DETS入门

1.什么是ETS,DETS?

      是一种用于存储存储元组的系统模块,erl自带的,在理论上来说他们可以存储无限数据,只要你有足够的存储空间,那ets和dets有什么不同呢,ets用的是内存存储,dsets用的是磁盘存储,前者的存取速度更快,但是它并不能长期存储,意思是只要erl程序一结束,它所存的数据就会丢弃,但ets却不会,若重启后,会检查一致性,若发现有误,会尝试性修复。

2.ETS

    1.创建表 TableId = ets:new(Name,[Opt]).

           1.首先表一共有4种set,ordered_set,bag,duplicate_bag.

                     set:每个键只能出现一次,后一个插入会覆盖前一个。

                     ordered_set:和set唯一不一样的它的键值是有序的,按字典序的大小排序。

                     bag:可以有2个或以上的相同键的不同值的原组。

                     duplicate_bag:可以有同键同值的元组。

             2.其次表有3种权限

                      private:只有主管程序可以对它进行读写

                      public:所有知道该表标示的程序都可以进行读和写

                      protected:所有知道该表标示的都可以进行读,但是只有主程可以进行写,这个模式很好。

   2.插入 ets:insert(TableId,{Key,Value})  -> true

 

   3.查找 ets:lookup(TableId,Key) -> Value | []

 

   4.得到一个列表 ets:tab2list(TableId) -> List

 

   5.删除表 ets:delete:(TableId) -> true | expection error

 

   6.底层原理:

       除了ordered_set是用平衡树二叉树构成以外,其他都是用散列表构建的,这意味着ordered_set的空间复杂度会更少,插入时间复杂度恒定,而其他表插入的时间复杂度会随着数据量的增多而增多。

2.DSETS

      1.创建表 dets:open_file(filename,[Opt])

              1.首先一共有3种类型

                         set    bag    duplicate bag解释和ETS一样。

             2.访问权限

                         只要open_file指定对应的文件路径,就可以共享文件

             3.其余操作和ets一样

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值