`
graymood
  • 浏览: 7323 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

写内存,写文件,写数据库,如何权衡!

阅读更多
写内存,写文件,写数据库,如何权衡!
速度比较:写内存>写文件>写数据库
写内存快是快,但是内存中的数据是无法持久化的。
写文件比起写数据库速度快了很多,但是查询统计文件中的数据就非常困难了。
写数据库就是慢,特别是高并发的时候会锁表。

看看流量分析系统是如何权衡这三种的关系的:

流量分析系统会在每个要被统计的网站上放上一段js,每次网站的某一个页面被访问时这段js都会提交一次流量分析系统用与统计PV。所以流量分析系统的并发量是非常大的。
并发量如此之大,所以每次提交的数据不能直接写文件,更不能写数据库,所以只能写内存。在java中可以写入一个Static的Vector中,并用一个线程读取Vector中的数据,并每隔一分钟或半分钟写一次文件,文件名为“年月日时“,所以是每小时会生成一个新的文件。后台用一个perl或python的进程每小时去合并,分析这些文件,最后把分析后的结果会插入到数据库中。


服务器架构:多台日志收集服务器(写内存,线程写文件),一台文件分析服务器(perl,python),一台数据库服务器(oracle)

一起学习讨论一下。高并发下如何快速应对。
分享到:
评论
4 楼 liquidthinker 2007-08-20  
bromon 写道
我以前的做法是创建一个jms的连接池,收到数据就从池里面抓出来一个连接,把数据发到jms队列,由消息bean自己异步处理.只要不新建连接,发消息的速度是相当快的


我也用这种方式,总之就是用异步方式处理这种问题,可以用jms+mdb或者工作队列
3 楼 bromon 2007-08-20  
我以前的做法是创建一个jms的连接池,收到数据就从池里面抓出来一个连接,把数据发到jms队列,由消息bean自己异步处理.只要不新建连接,发消息的速度是相当快的
2 楼 wangrui 2007-08-19  
我目前正在做一个监控系统,也遇到这种问题.目前的做法是:缓存-定时分析写库.将库中分析结果反映到监控画面.但是实时性比较差.
1 楼 bruce_luo 2007-08-15  
恩,我们以前做的一个日志分析系统也是这样做的,全JAVA写的!理论上是一样的!

相关推荐

    内存文件数据库

    在实际应用中,内存文件数据库的使用需要根据具体需求进行权衡。如果追求极致性能和响应速度,可以选择全内存数据库;如果需要兼顾容量和成本,可以考虑结合文件数据库实现混合存储。无论选择哪种方式,理解并掌握...

    基于sqlite的纯内存数据库

    在`spmemvfs-master`这个文件包中,很可能是包含了一个SQLite内存文件系统的实现,允许用户自定义虚拟文件系统来模拟内存数据库的行为。这种实现可能涉及到对SQLite源码的修改或者提供一个中间层来拦截和处理数据库...

    文件转换成字符存数据库

    - **文件大小**:对于大文件,将其全部转换为字符串可能会影响性能,甚至导致内存溢出。因此,在处理大型文件时需谨慎使用此方法。 - **数据库兼容性**:并非所有数据库都支持存储大型文本字段。在选择存储方案时,...

    读取txt文档插入数据库

    5. **优化硬件和数据库配置**:确保数据库服务器有足够的内存和CPU资源,并根据需要调整数据库的缓存大小和其他性能设置。 通过以上步骤和优化策略,你可以有效地将TXT文档中的数据批量导入到本地数据库,同时保持...

    利用数据库存取图片,从数据库读取显示出来

    这通常通过读取图片文件,将其内容读入内存并转化为`byte[]`数组来实现。 2. **创建数据库表结构**:在数据库中,我们需要一个特定的表来存储图片。这个表可能包含一个或多个字段,至少需要一个字段用于存储图片的...

    worker_manager.rar_文件读写

    在编程中,文件读写是指程序将数据写入文件或将文件中的数据读取到内存中进行处理。这通常涉及到打开文件、读取或写入数据以及关闭文件等步骤。在Python中,我们可以使用内置的`open()`函数,通过指定模式(如'w' ...

    arcgis保存文件时文件溢出的解决办法!

    4. **长期解决方案**:对于经常遇到此类问题的用户来说,可能需要考虑升级到更高版本的ArcGIS或使用更适合处理大数据量的地理数据库格式,如文件地理数据库(File Geodatabase)或个人地理数据库(Personal ...

    Redis缓存数据库_redis_数据库系统_

    Redis,全称Remote Dictionary Server,是一款开源的、高性能的键值对存储系统,常被用作数据缓存、消息中间件以及数据库等角色。在Windows系统下安装和使用Redis,可以为应用程序提供高速的数据访问能力,提升系统...

    高可用架构-第2不一样的数据库.rar

    5. 数据库监控与性能优化:掌握数据库性能指标的监控,如SQL查询性能、内存使用、磁盘I/O等,以及如何进行SQL调优和索引优化。 6. 高可用性设计原则:理解CAP定理,权衡一致性、可用性和分区容忍性,以及在实际应用...

    数据库设计开发规范-阿里.pdf.zip

    以下是对"数据库设计开发规范-阿里.pdf.zip"文件内容的详细解读。 首先,数据库设计的核心在于理解业务需求,确保数据模型能够准确地反映业务实体及其关系。在阿里集团,这一过程通常包括需求分析、概念模型设计...

    DB2数据库入门(3个PDF文件)

    DB2数据库是IBM公司开发的一款关系型数据库管理系统,广泛应用于企业级的数据存储和管理。...通过深入学习这三个PDF文件,新接触DB2的朋友将能够快速掌握这一强大的数据库管理系统,并在实际项目中发挥其潜力。

    xUtils3——android多种框架集合包含数据库、绑定控件、图片加载、数据库操作

    开发者可以通过简单的API调用来实现图片的异步加载,同时支持多种加载策略,如内存缓存、磁盘缓存、网络加载等。此外,xUtils3还提供了图片的裁剪、压缩、圆角处理等实用功能,满足了复杂多样的图片显示需求。 4. ...

    SQL Server数据库优化方案

    4. **内存不足**:内存资源紧张会降低数据库处理速度。 5. **网络速度慢**:网络延迟会延长数据传输时间。 6. **返回数据量大**:一次性获取大量数据会消耗更多资源,建议分批查询。 7. **锁与死锁**:不当的事务...

    SqlServer数据库性能优化详解

    为了实现这一目标,不仅需要深入了解应用程序的需求,还需要深刻理解数据的逻辑与物理结构,并在不同类型的数据库使用之间做出合理权衡。 #### 二、性能优化的关键要素 ##### 2.1 设计联合数据库服务器 在高负载...

    oracle+11G完全中文教程(附加数据库小技巧文档哦)

    数据库实例是内存结构和后台进程的集合,它与物理磁盘上的数据库文件交互,而数据库则是由数据文件、控制文件、重做日志文件等组成的一系列物理结构。理解这两个概念的区别对于日常管理和故障排查至关重要。 在安装...

    NoSQL数据库-MongoDB和Redis

    关系型数据库为了保证事务的一致性,将更新操作写入事务型日志,这虽然保证了数据的可靠性,但也带来了写性能的下降。而NoSQL数据库,尤其是MongoDB,通过放弃某些特性来换取更高的性能和扩展性,适用于许多需要高...

    将图片上传到数据库

    - 存储大量图片在数据库可能会使数据库体积庞大,影响查询速度,因此在实际应用中需要权衡利弊。 - 文件系统结合数据库存储的方式通常更常见,数据库仅存储文件的元数据和路径,图片文件存储在文件系统,兼顾效率...

    三级数据库笔试历年真题

    - 数据库参数调优:内存分配、缓冲池大小、批处理大小等。 9. **分布式数据库** - 分布式数据库的基本概念:数据分区、复制、路由等。 - 分布式事务处理:2PC、Paxos、Raft等协议的理解。 10. **NoSQL数据库** ...

    将MongoDB作为Redis式的内存数据库的使用方法

    总结来说,通过利用 MongoDB 的内存映射文件特性和 `tmpfs` 文件系统,我们可以将 MongoDB 转变为一个高性能的内存数据库,但同时也需要权衡数据持久化和内存资源的使用。对于需要快速响应和轻量级数据库的场景,这...

Global site tag (gtag.js) - Google Analytics