ets与dets都是用来存大数据的机制
ets是Erlang term storage的缩写, dets则是disk ets.
它们不同的就是ets存在内存里面,而dets则存在磁盘上。
ets存的数据表是暂时性的,拥有它的进程挂了,它也会挂掉.
dets就算程序完成或者挂了,数据表还是持久存在的.如果是异常退出的, 可以进行修复.
ets表看起来像是由erlang实现的,但实际上它是由运行时系统实现的,所以具有更高的性能. 且有一个特性: ets表不会被垃圾回收!
操作
建表
ets:new和dets:open_file
插入
ets:insert(TableId, X), x 是一个元组或者一个元组列表. 定义了一些参数
查找
ets:lookup(TableId, Key) 它会返回一个元组列表.
删除表
ets:delete(TableId)
表类型
四种: 集合(sets), 有序集(sorted sets), 袋(bags),可重复袋(duplicated bags)
集合:
所有记录的键(key)都是唯一的.
比如先后存{a,1},{b,1}可以 得结果{a,1},{b,1},两条记录。
但先后存{a, 1},{a,3}得到的结果会是{a,3}, 一条记录。
有序集:
特殊的集合, 按键值排序
袋:
记录的键值可以相同, 但数据不同是相同的.
比如先后存{a,1},{a,3}可以得两条记录;
但先后存{a,1}, {a,1}只有一条记录。
可重复袋:
记录的键值可相同, 记录值也可以相同
先后存{a,1}, {a,1}会有两条记录。
ets效率建议
ets表的底层是由哈希表实现的,不过有序集例外,它是由平衡二叉树实现的。 所以不管是插入还是查找,集合的效率要比有序集高.
可重复袋要比袋的效率要高, 因为袋要和原来的记录比较是否有相同的记录已经插入. 如果一份大数据,相同的记录越多,袋的效率就越慢.
一张ets表是由创建它的进程所拥有, 当此进程调用ets:delete或者进程挂了的时候, 表会被删除.
一般情况下, 插入一个元组到一张ets表中, 所有代表这个元组的结构都会被从进程的栈和堆中,复制到ets表中; 当查找一条记录时, 结果元组从ets表中复制到进程的栈和堆中。
但是大型二进制(large binaries) 数据却不是这样! 它们被存入自已所拥有的堆区域(off-heap area)中。这个区域可以被多个进程,ets表,和独立二进制数据所共享。它由引用计数的垃圾回收策略管理, 这个策略会跟踪到底有多少个进程/ets表/二进制数据引用了这个大型二进制数据. 如果引用数为0的话, 此大型二进制数据就会被垃圾回收掉.
看起来很和复杂, 实际结论就是: 两进程间发消息用大型二进制数据消耗很低, 往ets表插入元组用二进制数据也很划算。我们应该尽可能采用二进制数据来实现字符串或无类型的大数据块.
ets建表
分享到:
相关推荐
在Erlang编程环境中,ETS(Erlang Term Storage)和Dets(Disk-based ETS)是两种重要的数据存储机制,它们提供了高效的数据管理和访问功能。这篇文章将深入探讨这两个概念,以及它们在实际开发中的应用。 ETS是...
在Erlang中,处理大数据存储有多种方式,其中包括ETS(Erlang Term Storage)、DETS(Distributed Erlang Term Storage)、Mnesia以及MySQL等。下面将对这些存储方式进行详细解析。 1. ETS(Erlang Term Storage) ...
7. **数据库集成**:Java可以与各种数据库系统(如MySQL、PostgreSQL或NoSQL数据库如MongoDB)集成,用于存储和检索大数据。JDBC(Java Database Connectivity)是Java连接数据库的标准接口,使得数据存取更为便捷。...
7. **培训与支持**:ETS5界面友好,适合初学者和专家使用。同时,KNX协会提供了丰富的在线资源和教程,帮助用户掌握软件的使用。 8. **数据备份与恢复**:用户可以定期备份项目数据,以防意外丢失。如有需要,也...
ETS300_364手册是一份详尽的文档集合,主要针对ETS300与ETS364测试机的使用和维护。这个压缩包包含26个PDF文件,涵盖了从硬件配置到软件系统,再到测试程序开发的全方位内容。下面我们将深入探讨这些关键知识点。 1...
Ets5 V5.5.4简体中文版下载。Ets5 V5.5.4简体中文版下载。Ets5 V5.5.4简体中文版下载。Ets5 V5.5.4简体中文版下载。
4. **数据备份与恢复**:允许用户定期保存项目,防止因意外情况导致的数据丢失,也可以方便地导入和导出项目文件。 5. **报告生成**:可以自动生成详细的系统报告,包括设备清单、线路图等,便于项目管理和交流。 ...
4. **编程与调试**:使用图形化编程语言ETS Language(ETSL)编写逻辑,便于调试和优化控制逻辑。 5. **网络诊断**:可以检测和解决网络问题,确保所有设备都能正常通信。 6. **模拟与测试**:在实际部署前,可以...
5. **编程与下载**:演示如何在ETS5中编写控制逻辑,创建和编辑场景,然后将这些程序下载到KNX设备中。 6. **调试工具的使用**:介绍ETS5的调试功能,如数据监视、事件日志查看、在线测试等,帮助识别和解决设备...
3. **编程与调试**:ETS支持编程和调试功能,用户可以通过图形化界面编写控制逻辑,实现设备间的联动。同时,软件提供了强大的调试工具,帮助排查系统中的问题,确保所有设备正常运行。 4. **模拟与测试**:在实际...
5. **调试与测试**:连接到实际设备进行在线调试,确保所有功能按预期运行。 对于初学者来说,理解KNX协议的基本原理、掌握ETS软件的使用方法以及熟悉常见的KNX设备类型是至关重要的。同时,注意在实际应用中遵守...
3. **编程与调试**:ETS5支持图形化编程,采用EIB/KNX Data Point Type (DPT)语言,使编程更直观。调试工具可以帮助工程师检测和修复通信问题。 4. **系统诊断**:通过实时监控和故障报告,ETS5能快速定位系统故障...
总的来说,ETS5 Professional 5.7.4是KNX系统开发与维护的强大工具,其多语言支持和云端产品数据库是显著优势,能够提升全球用户的使用体验,简化项目管理和设备配置过程。通过深入理解和熟练掌握这款软件,工程师...
6. **更新与维护**:ETS还可以用来更新设备固件,确保所有设备运行在最新版本,以获取最新的功能和优化。 压缩包中的"KNX Virtual.exe"文件很可能是ETS软件的虚拟机镜像,可能用于在没有实际硬件设备的情况下进行...
4. **数据通信**:通过ETS 5.6.5,工程师可以直接与KNX总线进行通信,进行在线调试和故障排查。软件支持无线(如KNX RF)和有线(如EIB/KNX TP)通信方式。 5. **自动化脚本**:ETS支持GVL(Group Value Link)脚本...
4. **诊断与测试**:在调试过程中,ETS3可以帮助检测网络中的错误,如通信故障、设备状态异常等。它还提供了模拟工具,可以在实际安装前验证程序的正确性。 5. **文档生成**:ETS3可以自动生成项目报告和用户手册,...
ETS5 Professional是KNX协会官方推出的编程软件,用于设计、配置和调试基于KNX技术的智能家居和楼宇自动化系统。版本5.7.6是该软件的一个稳定更新,它提供了丰富的功能和完善的技术支持。 KNX(欧洲建筑总线)是一...
3. **用户界面与导航**:ETS的用户界面设计是怎样的?用户如何在界面上进行操作,如打开、保存、搜索等功能,都会在此部分详细解释。 4. **订单管理**:在制衣行业中,订单管理是至关重要的。手册可能涵盖如何创建...
4. **调试与测试**:通过ETS5,用户可以直接在线调试设备,检查通信状态,确保每个设备都能正常工作。此外,模拟器功能可以帮助在实际安装前验证系统的功能。 5. **文档生成**:软件能自动生成项目报告和用户手册,...
5. **系统接口**:描述ETS与其他电厂系统的交互,如DCS(分散控制系统)、SCADA(监督控制和数据采集系统)等。 6. **升级和改进**:对于现有逻辑的评估和潜在的改进方案,以提高系统性能和安全性。 通过这些资料...