最近学习了一下豆瓣的分布式 Key/Value 存储系统 BeansDB(v0.5.3)。
BeansDB 的作者 Davies 写的关于 BeansDB 的介绍:《beansdb卷土重来》。
BeansDB 的项目主页:http://code.google.com/p/beansdb/。
用户手册:http://code.google.com/p/beansdb/wiki/UserGuide。
下载地址:http://code.google.com/p/beansdb/downloads/list。
下载之后参照用户手册上的说明编译安装即可,非常简单。
启动 BeansDB 也很简单,如:
1
|
beansdb -d -p 7900 -H testdb |
其中 -p 指定端口,-H 指定数据文件存放的目录。
BeansDB 发布版中带有 Python 接口,用法如下(来自官网手册):
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#python from dbclient import Beansdb cfg = { "localhost:7901" : range ( 16 ), "localhost:7902" : range ( 16 ), "localhost:7903" : range ( 16 ), } db = Beansdb(cfg, 16 ) db. set ( 'key' , 'value' ) v = db.get( 'key' ) db.delete( 'key' ) |
BeansDB 非常简单,基本上它只有三个操作:set、get以及delete。它甚至没有直接提供遍历所有 key 的方法,遍历所有 key 的话,需要 get(‘@’),然后继续遍历,不过,在数据量很大的情况下,这个遍历可能会花比较长的时间。
BeansDB 采用了 Bitcask 设计,将所有 key 的信息都保存在内存中。这样的好处是查找会特别快,但一个直接的缺点就是机器的内存限制了能存放的 key 的数目的上限。根据《beansdb卷土重来》中的介绍,一个 key 大约占用 20 字节,这样一台 8G 内存的服务器将可以存储约 4 亿个 key。当然,key 所对应的 value 是存储在硬盘上的。
BeansDB 比较适合存储中等大小的写入后就很少变化的内容,比如图片;不适合存储大量小碎片内容或会频繁更改的内容,比如日志;也不适合存储太大的文件,根据作者 Davies 的说法,BeansDB 默认设置单文件不超过 50M,实际上用它存储超过 10M 的文件感觉都不太合适。
另外,随着硬盘越来越便宜,目前各大 NoSQL 存储系统似乎都不太关心硬盘的占用量,为了追求写入速度,普遍使用追加的方式写新数据,当一个 key 的值发生变化时,系统只是在硬盘上追加一条记录,并不会把原来的值从硬盘上删除。这样一来,如果你存储的内容经常变化,一段时间后,你会发现硬盘占用量只 增不减。
请教了作者 Davies 之后,关于这个问题得到以下解决方案:
目前没有提供相关工具,可以用telnet 来控制:
12telnet localhost 7900
flush_all 0
这样对应的节点就会执行优化操作,tail -f /var/log/beansdb.log 能看到优化的信息,如果运行的时候设置的Log文件的话。
总的来说,BeansDB 安装和使用都非常简单,性能也不错,而且是国人开发的。如果有类似于大量图片存储这样的需求,可以尝试一下。
相关推荐
BeansDB 是一个分布式键值存储系统,主要用于支持大规模的数据存储和检索。在豆瓣(Douban)的业务场景中,它被用来处理大量的用户数据和元数据。Beanseye 是针对 BeansDB 的一个重要补充,它是一个由 Go 语言编写的...
NoSQL数据库学习教程 CAP定律是NoSQL数据库存在的三大基石之一,CAP定律是指在分布式系统中,无法同时满足一致性、可用性和分区容忍性这三个属性。其中,一致性是指所有节点在同一时间看到相同的数据;可用性是指...
- BeansDB是由豆瓣社区开发的,NewSQL数据库如MemSQL提供高性能的事务处理,而NoSQL数据库如Bigtable和Dynamo提供了灵活的数据模型。 4. 数据挖掘与可视化: - 数据挖掘包括数据融合、分析和决策支持,但发现的...
根据提供的文件信息,我们可以从中提炼出一系列与大数据相关的知识点,具体包括数据类型、大数据规模、数据库...这些问题不仅有助于加深对大数据基础知识的理解,还能激发学习者进一步探索大数据领域前沿技术的兴趣。
车库和车库 CFD 模型 CFD 分析可用于分析模型。
henn-produktfolder-thermalmanagement-2024
39 Android源代码定时情景模式切换.zip
基于单 神经 元PID控制器的四旋 翼 飞 行 器 航 迹控制.pdf
内容概要:本文详细介绍了如何使用西门子S7-200 SMART PLC与三台台达MS300变频器进行Modbus RTU通讯的具体步骤和技术要点。首先,文章强调了正确的硬件连接方法,包括PLC与变频器之间的485总线连接以及终端电阻的设置。接着,深入讲解了变频器的关键参数配置,确保通讯稳定可靠。然后,展示了核心程序的设计思路,特别是轮询机制的应用,通过定时中断实现对三台变频器的状态监测和控制。此外,还提供了触摸屏的配置方法,使操作更加直观便捷。最后,分享了一些常见的调试经验和避坑指南,帮助解决实际应用中可能遇到的问题。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC与变频器通讯感兴趣的读者。 使用场景及目标:适用于需要将多台变频器集成到PLC控制系统中的工程项目,旨在提高系统的稳定性和可靠性,同时降低维护成本。 其他说明:文中提供的代码片段和配置建议均基于作者的实际经验,具有较高的实用价值。对于初学者来说,建议先理解基本概念再逐步深入实践。
文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Rust 以内存安全、零成本抽象和并发高效的特性,重塑编程体验。无需垃圾回收,却能通过所有权与借用检查机制杜绝空指针、数据竞争等隐患。从底层系统开发到 Web 服务构建,从物联网设备到高性能区块链,它凭借出色的性能和可靠性,成为开发者的全能利器。拥抱 Rust,解锁高效、安全编程新境界!
互联网大厂裁员背后的经济规律与增长天花板.mp4
2025年交换原理与技术.zip
内容概要:本文详细介绍了基于PLC(可编程逻辑控制器)的智能农业温室大棚控制系统的各个方面。主要内容涵盖IO分配、梯形图程序编写、接线图绘制和组态画面设计。通过合理的IO分配,PLC能够准确获取环境数据并控制相关设备;梯形图程序实现了对温度、湿度等环境因素的自动化控制;接线图确保了硬件连接的准确性;组态画面提供了用户友好的操作界面。此外,还分享了一些实际应用场景和技术细节,如温度控制梯形图实战、接线冷知识、组态画面设计技巧以及调试现场的经验。 适合人群:从事农业自动化、工业控制领域的工程师和技术人员,特别是对PLC编程和智能农业感兴趣的读者。 使用场景及目标:适用于希望提高农业生产效率和智能化水平的农场主和农业企业。通过引入PLC控制系统,可以实现对温室环境的精准控制,减少人工干预,提升作物产量和质量。 其他说明:文中不仅提供了理论知识,还包括了许多实践经验,帮助读者更好地理解和应用PLC技术于智能农业中。
基于TypeScript+three.js 实现的三维地质模型剖切,以及剖面的补充+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 基于TypeScript+three.js 实现的三维地质模型剖切,以及剖面的补充+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档~ 基于TypeScript+three.js 实现的三维地质模型剖切,以及剖面的补充+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 基于TypeScript+three.js 实现的三维地质模型剖切,以及剖面的补充+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 基于TypeScript+three.js 实现的三维地质模型剖切,以及剖面的补充+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档
内容概要:本文详细介绍了基于三菱FX3U PLC和MCGS组态软件构建的四皮带运输机控制系统。首先阐述了系统的IO分配规则,强调了关键输入输出信号的选择依据及其重要性。接着深入解析了梯形图编程技巧,展示了如何通过定时器、比较器等指令实现皮带的顺序启动和速度同步控制。随后探讨了MCGS组态界面的设计,包括动态皮带模拟、报警提示以及历史数据记录等功能。最后分享了一些常见故障处理经验和系统优化方法,如合理的接线方式、滤波处理和联锁逻辑设计。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC编程和组态软件有一定了解的人群。 使用场景及目标:适用于需要设计和维护复杂皮带传输系统的工厂环境,旨在提高生产效率并确保设备安全可靠运行。 其他说明:文中提供了大量实际案例和调试经验,有助于读者更好地理解和掌握相关技术和最佳实践。
详细介绍及样例数据:https://blog.csdn.net/T0620514/article/details/147722861
文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 编译闪电般迅速,并发性能卓越,部署轻松简单!Go 语言以极简设计理念和出色工程性能,成为云原生时代的首选编程语言。从 Docker 到 Kubernetes,全球顶尖科技企业都在采用 Go。点击了解 Go 语言的核心优势、实战窍门和未来走向,开启高效编程的全新体验!
基于NB-IoT的智能渔业养殖综合控制系统设计.pdf
内容概要:本文详细介绍了利用MCGS通用监控系统和西门子S7-300 PLC实现饮料灌装生产流水线的自动化控制方法。首先阐述了IO分配的具体规则,明确各输入输出端口的功能及其所连接的外部设备;接着展示了梯形图程序的设计思路,解释了启动停止控制、传送带控制和灌装控制三个关键环节的工作流程;然后描述了接线图原理图的内容,说明了PLC与外部设备间的物理连接方式;最后讲解了MCGS组态画面的应用,强调了其在人机交互方面的作用。通过这些内容,全面揭示了如何构建一套稳定高效的饮料灌装生产系统。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC编程及MCGS组态有一定了解的专业人士。 使用场景及目标:适用于需要优化现有饮料灌装生产线的企业,旨在提高生产效率、降低人工成本的同时保证产品质量的一致性和稳定性。通过对文中介绍的技术手段的学习和应用,可以更好地理解和掌握现代工业自动化控制系统的构建方法。 其他说明:文中不仅提供了理论性的指导,还有具体的实例分析,如针对可能出现的问题提出解决方案,使得读者能够在实践中灵活运用所学知识。此外,还提到了一些调试经验和技巧,有助于解决实际工作中遇到的各种挑战。
文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 编译闪电般迅速,并发性能卓越,部署轻松简单!Go 语言以极简设计理念和出色工程性能,成为云原生时代的首选编程语言。从 Docker 到 Kubernetes,全球顶尖科技企业都在采用 Go。点击了解 Go 语言的核心优势、实战窍门和未来走向,开启高效编程的全新体验!