摘要: 在企业数据库设计中,经常会遇到一个需求,就是希望把操作之前的数据保留下来,能够看到操作之前是什么数据,操作之后是什么数据。对于这种需求,我们可以使用保留历史数据或者使用版本来实现。为了能够保留历史数据,在版本设计时有以下方案:一、使用版本号版本号是一种常见的版本设计方案,就是在要进行历史数据保留的表上面增加一个版本号字段,该字段可以是DateTime类型,也可以是int类型,每进行数据操作时,都是创建一个新的版本,版本是只增不减的,所以只需要拿到最大一个版本号,就能得到最新的业务数据。版 本号除了能够用于留存历史数据外,还有一个功能就是避免并发编辑操作。比如我们有一个对象A,当前的版本是1,两 阅读全文
posted @ 2013-12-10 16:46 海上浪子 阅读(362) 评论(0) 推荐(0) 编辑
摘要: 这种资料.向来可遇不可求啊WikiPedia 技术架构学习分享http://www.dbanotes.net/opensource/wikipedia_arch.htmlYouTube 的架构扩展http://www.dbanotes.net/opensource/youtube_web_arch.htmlInternet Archive 的海量存储浅析http://www.dbanotes.net/database/internet_archive_storage.htmlLinkedIn 架构笔记http://www.dbanotes.net/arch/linkedin.htmlTailr 阅读全文
posted @ 2013-12-09 17:32 海上浪子 阅读(384) 评论(0) 推荐(0) 编辑
摘要: Flickr(http://www.flickr.com/) 是国外一个领先的图片分享网站,现在应该在yahoo门下,感觉yahoo还是有很多好东西,奈何资本要抛弃他了。这个轮回其实挺有意思的,起先是做实业 被microsoft郁闷了,说软件是虚的值不能那么多钱,然后microsoft被yahoo郁闷了,说互联网是虚的不值那么多钱,然后是yahoo被 google郁闷了,yahoo比较厚道没说什么,不知道google将来要被谁郁闷了。成功建立在相同的失败上,反过来失败都是建立在相同的成功上也成 立,进入正题吧。原文地址是http://highscalability.com/flickr-arc 阅读全文
posted @ 2013-12-09 16:54 海上浪子 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 又一个多月没冒泡了,其实最近学了些东西,但是没有安排时间整理成博文,后续再奉上。最近还写了一个发邮件的组件以及性能测试请看 《NET开发邮件发送功能的全面教程(含邮件组件源码)》,还弄了个MSSQL参数化语法生成器,会在9月整理出来,有兴趣的园友可以关注下我的博客。分享原由,最近公司用到,并且在找最合适的方案,希望大家多参与讨论和提出新方案。我和我的小伙伴们也讨论了这个主题,我受益匪浅啊……博文示例:GUID生成Int64值后是否还具有唯一性测试Random生成高唯一性随机码今天分享的主题是:如何在高并发分布式系统中生成全局唯一Id。但这篇博文实际上是“半分享半讨论”的博文:1) 半分享是我将 阅读全文
posted @ 2013-12-09 09:43 海上浪子 阅读(811) 评论(0) 推荐(0) 编辑
摘要: 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。一、负载均衡技术 负载均衡集群是由一组相互独立的计算机系统构成,通过常规网络或专用网络进行连接,由路由器衔接在一起,各节点相互协作、共同负载、均衡压力,对客户端来说,整个群集可以视为一台具有超高性能的独立服务器。1、实现原理 实现数据库的负载均衡技术,首先要有一个可以控制连接数据库的控制端。在这里,它截断了数据库和程序的直接连接,由所有的程序 来访问这个中间层,然后再由中间层来访问数据库。这样,我们就 阅读全文
posted @ 2013-12-09 09:38 海上浪子 阅读(511) 评论(0) 推荐(1) 编辑
摘要: ehcache支持两种拓扑结构,一种是Distributed Caching,另一种是Replicated CachingDistributed Caching这和一般意义上的分布式缓存非常类似,这一类型的缓存是有client-server之分的,application通过client向server端请求缓存数据,在server端,数据是散列到多个节点上的。具体而准确的拓扑结构见下图(该图正是Terracotta Server Array的拓扑结构,ehcache的分布式实现是依赖Terracotta Server Array实现的):一方面:L1是客户端结点,基于Terracotta Ser 阅读全文
posted @ 2013-12-04 09:56 海上浪子 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 简介:EhCache 是一个纯 Java 的进程内缓存框架,具有快速、精干等特点,是 Hibernate 中默认的 CacheProvider。本文充分的介绍了 EhCache 缓存系统对集群环境的支持以及使用方法。EhCache 缓存系统简介EhCache 是一个纯 Java 的进程内缓存框架,具有快速、精干等特点,是 Hibernate 中默认的 CacheProvider。下图是 EhCache 在应用程序中的位置:图 1. EhCache 应用架构图EhCache 的主要特性有:快速;简单;多种缓存策略;缓存数据有两级:内存和磁盘,因此无需担心容量问题;缓存数据会在虚拟机重启的过程中写 阅读全文
posted @ 2013-12-04 08:47 海上浪子 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 当系统数据量发展到一定程度后,往往需要进行数据库的垂直切分和水平切分,以实现负载均衡和性能提升,而数据切分后随之会带来多数据源整合等等问题。如果仅仅从应用程序的角度去解决这类问题,无疑会加重应用程度的复杂度,因此需要一个成熟的第三方解决方案。Amoeba正是解决此类问题的一个开源方案,Amoeba位于应用程序和数据库服 务器之间,相当于提供了一个代理,使得应用程序只要连接一个Amoeba,相当于只是在操作一个单独的数据库服务器,而实际上却是在操作多个数据库服务 器,这中间的工作全部交由Amoeba去完成。本文针对基于MySQL的水平切分的实现机制,讲解Amoeba For MySQL的简单应. 阅读全文
posted @ 2013-12-02 10:57 海上浪子 阅读(565) 评论(0) 推荐(0) 编辑
摘要: Amoeba for MySQLAmoeba for MySQL致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的时候充当query 路由功能,专注 分布式数据库 proxy 开发。座落与Client、DB Server(s)之间。对客户端透明。具有负载均衡、高可用性、Query过滤、读写分离、可路由相关的query到目标数据库、可并发请求多台数据库合并结果。 在Amoeba上面你能够完成多数据源的高可用、负载均衡、数据切片的功能。目前在很多企业的生产线上面使用。那么Amoeba for mysql 对客户端程序来说是什么呢? 我们就当它是mysql吧,它是一个虚... 阅读全文
posted @ 2013-12-02 09:43 海上浪子 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 故事背景: 本人有幸,经老友( 现为x知名快递公司技术总监 ) 推荐进入中国前三大民营快递公司之一工作,在此非常感谢他,在此也非常感谢我在第一家公司帮助我进步的兄弟(我在时的项目经理,现为 x 知名自动识别行业企业部门高级经理)。下面介绍6年后和6年前的我的职业生涯中的两个单表大数据故事。(1) 6年后 单表大数据 之故事(一) 来之前老友告之现在核心运营系统 Oracle数据库中单表数据半年过10亿了,使用传统T-Sql不论如何优化,查询客户信息速度也提升不上去。需要使用企业级搜索引擎(Solr)来解决本部门其余两大辅助业务系统去查询客户信息。如果我过去的话,先把这块带肉的骨头啃了。当时一听 阅读全文
posted @ 2013-11-28 17:36 海上浪子 阅读(2845) 评论(35) 推荐(9) 编辑