Couchdb:
引用
Apache CouchDB is a distributed, fault-tolerant and schema-free document-oriented database accessible via a RESTful HTTP/JSON API. Among other features, it provides robust, incremental replication with bi-directional conflict detection and resolution, and is queryable and indexable using a table-oriented view engine with JavaScript acting as the default view definition language.
Couchdb是以Rest方式来完成操作的分布式文档数据库,要多Couchdb完成操作的话,必须通过执行Http请求。传统数据库是通过DBAdapter完成消息传递的,那么可以认为:Http请求的效率和传统的DBAdapter请求的效率,在一定程度上影响着Couchdb和传统数据库的性能。
在Couchdb中,拿插入数据来说,每次插一条数据,客户端必须发起一次put请求,Couchdb再接受这个请求并作处理。下面我就要做这样的一次测试,来比较Couchdb和Mysql两种数据库的插入数据的速度。插mysql和couchdb的操作都从客户端发起,mysql和couchdb同时装在一台server上。通过benchmark记录操作耗时。
测试环境:一台server,一台client,
server:DELL1950划分的一台虚拟机,cpu:2,mem:2GB
mysql:Server version: 5.0.67-0ubuntu6 (Ubuntu)
couchdb:Apache CouchDB 0.8.0-incubating (LogLevel=info)
文件系统:
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 ext3 85G 1.5G 80G 2% /
tmpfs tmpfs 1013M 0 1013M 0% /lib/init/rw
varrun tmpfs 1013M 356K 1012M 1% /var/run
varlock tmpfs 1013M 0 1013M 0% /var/lock
udev tmpfs 1013M 2.6M 1010M 1% /dev
tmpfs tmpfs 1013M 0 1013M 0% /dev/shm
client:一台装有LoadRunner的服务器来模拟多个并发请求。
测试场景:
1、服务端:数据库状况为:{"db_name":"couchdbvsmysql","doc_count":1000,"doc_del_count":0,"update_seq":1000,"compact_running":false,"disk_size":2376834}
客户端:通过LoadRunner发送大量请求,并发设置为50,没有时间间隔,再此情况下查看couchdb的响应速度(TPS),并监控couchdb服务器的CPU和Load等其它性能数据。
2、客户端并发设置为500,其它与场景一相同。
场景一测试结果:
TPS:571,CPU:83%(其中SI和HI较高,分别为20%多和10%多),LOAD:2.1,
top 写道
top - 21:25:20 up 8 days, 23:21, 3 users, load average: 1.95, 1.63, 1.26
Tasks: 104 total, 1 running, 102 sleeping, 1 stopped, 0 zombie
Cpu(s): 28.6%us, 28.2%sy, 0.0%ni, 12.5%id, 0.0%wa, 7.3%hi, 23.4%si, 0.0%st
Mem: 2072680k total, 831620k used, 1241060k free, 170248k buffers
Swap: 3879656k total, 0k used, 3879656k free, 469088k cached
为什么软中断和硬中断占用CPU这么高我就不知道了,这种情况很少见,可能是虚拟机的缘故,也可能是ErlangHttp的缘故。
场景二测试结果和场景一相同,可见ErlangHttp对并发请求的支持是比较稳定的,至少500并发以内没有出现波动,TPS不变,并发上升后,响应时间线性上升。
- 大小: 111.9 KB
- 大小: 70.5 KB
分享到:
相关推荐
我目前正在这些基准测试上,以获取有关CouchDB扩展属性的第一手数据。 我特别关心磁盘使用情况(弄清楚何时需要分片)和复制速度。 但是,在此过程中,我还将收集其他可能有用的信息,但请记住,我的测试方法将明确...
同时,CouchDB还支持冲突检测和解决机制,能够在不同节点之间自动解决数据冲突。 ### 安全性与权限管理 CouchDB提供了丰富的安全特性,包括身份验证、授权以及加密等。管理员可以为每个数据库设置访问控制列表...
CouchDB适用于那些需要高性能读取、灵活数据模型、离线支持和跨设备同步的应用场景,例如移动应用、物联网(IoT)设备数据存储、内容管理系统等。由于其轻量级设计和易用性,CouchDB也常被用作开发原型和小型项目的...
`laravel-couchdb` 是一个针对 Laravel 5.x 的扩展包,它为 Laravel 提供了对 CouchDB 数据库的支持,允许开发者利用雄辩(Eloquent)模型和查询构建器进行便捷操作。 1. **CouchDB 简介** CouchDB 是一个开源的...
在`redgeoff-replicate-couchdb-cluster-4ae16e7`这个文件名中,`redgeoff`可能是作者的名字或项目名称,`replicate`表示复制,这是CouchDB的关键特性之一,而`couchdb-cluster`指明我们正在处理CouchDB集群,`4ae...
3. 使用CouchDB的视图进行数据查询,支持动态构建和执行视图。 4. 监听数据库变化,实现实时更新。 5. 处理复制和冲突解决,这对于多节点部署或离线同步的应用非常重要。 在“tornado-couchdb-0.2.5.tar.gz”压缩包...
5. 在Zabbix服务器上创建相应的监控项,引用扩展提供的脚本,如`couchdb.status`和`couchdb.stats`,以获取CouchDB3的状态和性能数据。 6. 最后,验证配置是否成功,确保Zabbix能够正常接收并展示CouchDB3的相关指标...
Marc Fasel,一位拥有丰富经验的高级顾问、架构师和软件开发者,针对Node.js和Java EE进行了详尽的性能测试。他利用CouchDB作为后端存储,创建了一万份4KB的随机文本样本文件,以模拟真实工作负载。测试环境包括配备...
Clojure的动态类型和对Java平台的无缝集成,使得`flycouchdb`能够充分利用Java生态系统的资源,实现高性能的数据迁移。 在实际使用中,`flycouchdb`支持两种主要的操作模式:同步和异步。同步模式下,工具会逐个...
CouchDB 是一个开源、基于文档的分布式数据库系统,它使用 JSON 存储数据,并支持 JavaScript 作为查询语言。在 CouchDB 中,设计文档(Design Documents)是用于定义视图、索引和 Mango 查询的关键组件,它们对于...
测试完成后,这些数据可以用于性能分析和对比。 5. **报告**: 结果可以通过图形或表格形式展示,便于用户直观地了解系统的性能瓶颈和优化方向。 YCSB的源代码位于`brianfrankcooper-YCSB-82b42cd`这个压缩包中,这...
3. **src/test/java**:测试代码,用于验证CouchDB访问器的功能和性能。 4. **pom.xml**:Maven构建文件,定义了项目的依赖和构建过程。 5. **README.md**:项目说明,包括安装、使用和贡献指南。 通过深入研究这个...
3. **查询构造器**:couchdb-orm可能包含一个查询构造器,用于构建复杂的查询语句,支持链式调用,类似于SQL的WHERE、JOIN等子句。 4. **事务支持**:虽然CouchDB本身并不直接支持传统的关系型数据库事务,但ORM...
4. 数据库升级测试:在升级CouchDB版本或修改数据库结构时,可以先在测试环境中运行新版本,验证其兼容性和性能。 GitHub Actions工作流配置通常包含以下几个步骤: 1. **触发器**:定义何时启动工作流,例如当PR被...
**mocody** 是一个基于 TypeScript 的开源项目,旨在实现单表设计,并提供对三种流行的NoSQL数据库——MongoDB、CouchDB和Amazon DynamoDB的统一查询接口。这个项目的目标是简化开发流程,使得开发者无需关注底层...
CouchDB是一款基于JSON、JavaScript和HTTP的开源数据库,它允许用户以JSON格式存储数据,并通过JavaScript编写查询和视图逻辑。`divanator`使得在前端环境中与CouchDB的设计文档进行交互变得更加便捷和高效。 **...
`Rug` 还支持查询CouchDB视图(views),这是CouchDB提供的一种灵活的数据查询机制。视图是由MapReduce函数定义的,可以用来筛选和排序文档。通过`Rug`,你可以这样访问视图: ```php $result = $db->queryView('...
CouchDB的一大特色是其“面向文档”的设计理念,使得存储和查询非结构化数据变得非常直观。 aiocouchdb是针对CouchDB的Python异步接口,利用了Python 3.5以上的asyncio库,提供了一种基于协程的非阻塞I/O操作方式。...