<23>erlang 数据存储

做为后端开发者,经常用到数据存储, 工作中用到过各种模式的数据存储,但很少总结下经常用到的方法,虽然很多或自己想法或从网络上来没有实践过,但记录下来简单分析下,做为备份,以便以后工作用验证, 简单分析涉及erlang做服务器最常用数据存储的方式:
1.
ets + mysql
这估计是很多采用的方法,这种方法最常用的原因是mysql大家用的已经相当普遍了,适合存储各种大量的数据, 并且mysql适合和其他语言的交互,例如php,c, c++都很方便的访问,单mysql是完全够了;这样mysql可用作永久数据存储,ets因为速度快,对erlang支持好,用来做缓存;

2.
dets + ets
这种存储也很普遍,dets用于永久的数据存储,把数据存放在磁盘中; ets做缓存,临时存放用户经常快速访问的数据,不需要永久存储的数据, 这个存储有个缺点就是ets表的存储不能跨节点使用,必须通过间接地数据传输,对于大部分应用这种存储应该还是完全可以胜任的;

3.
redis
redis做缓存不用多说,大众推荐的,并且redis支持各种类型的数据存储相当方便,各种模式的数据存储,速度也是相当快,做缓存绝对是不二的选择; 做持久存储的不足就是redis可储存的空间只能小于本服的内存,也就是redis中的数据会在缓存中全部保存一份,所以要在存储前设计好存储空间,不适合做大量数据的存储, 不过貌似redis有不少用作永久存储的,世界第二大porn网站用redis就是最好的例子,
http://www.kuqin.com/shuoit/20130806/334696.html

4
mnesia + ets
这种存储方式貌似见的不多,可能主要的原因是mnesia懂的人不是很多,把核心数据放在mnesia中不放心,并且mnesia和其他的交互性不好,php,c等没办法直接去访问数据

5
ets+文件
文件存储的弊端是需要自己设计好存储的格式,否则会读取,查询等操作比较麻烦,erlnag中有比较完备的格式,例如ets文件存储方式,用文件也是不错的选择;
http://blog.yufeng.info/archives/2842#respond
erlang中用文件写的效率并不比其他语言差;
这里ets做为cache,更方便的方式是直接用ets带的 tab2file和file2tab来文件和ets相互转化,直接从cache到磁盘,从磁盘到cache,不用自己设计文件的格式

6.
待续

你可能感兴趣的:(erlang)