`
forchenyun
  • 浏览: 312632 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
Key-value存储简介 具备高可靠性及可扩展性的海量数据存储对互联网公司来说是一个巨大的挑战,传统的数据库往往很难满足该需求,并且很多时候对于特定的系统绝大部分的检索都是基于主键的的查询,在这种情况下使用关系型数据库将使得效率低下,并且扩展也将成为未来很大的难题。在这样的情况下,使用Key-value存储将会是一个很好的选择。 它被广泛应用于缓存,搜索引擎等等领域。          根据以上的描述,一个好的key-value存储需要满足哪些条件呢? l  Availability可用性 l  Scalability可扩展性 l  Failover故障恢复 l  Pe ...
简介 众所周知,对于海量数据的schema修改是一个极其昂贵的代价,MySQL分表的很大原因其实就有500w数据一个表,DDL会比较快。 一般来说,动态schema是指的非固定表结构,schema字段(有时也指索引)的增删对于正常的读写没有任何影响。一般有两个方向的表现形式:   Online Schema Change Schema-Free   NoSQL中一般采用后者,而关系型数据库可能会采用前者,两者的区别是,前者虽然是固定表结构,但是可以通过一定的方式进行在线修改,同时尽可能不影响服务,而后者是原生支持动态schema,是很多NoSQL产品所支持的feature之一, ...
本节重点讲述数据的Durability(可靠性),纵然CAP理论中的三个关键点(Consistent, Available, Partition-Tolerant )无法达成一致,A和P目前来看变化不太多,可能变化比较多的是在C上,将一致性模型的文章毫无疑问首推Amazon CTO:Werner Vogels的两篇文章: Eventually Consistent Eventually Consistent - Revisited 这是工业界的经验之谈:在一定程度上做一些取舍,从而使得系统整体趋近于平衡。 回到本文主题,上面所说的一致性可能更多的是分布式层面上的一致性,而在我们的系统 ...
  相关文章推荐: 海量数据存储之Key-Value存储简介 海里数据存储之存储设计(二) Je的排版真的让人难过...... 从本文开始着重讲解存储细节,思路比较飘逸,观者多包涵。 翻译了一篇Redis作者antirez的文章做为本文的切入点,翻译得不好,这部分可以大致一览,后面会有分析。 Append Only和Reuse Blocks的一些区别 对于一颗append only btree(以下简称AOB)来说,最有趣的属性就是它不可能出现corrupt(可以理解为数据不一致状态)。另外一个有趣的属性就是并发访问没有任何问题,因为无论你访问根节点或其它节点,它 ...
本文主要讲述NoSQL在Flash设备上的可以选择的其中一种优化策略,并粗略提了一下SSD设备的特性。 对Flash设备的性能优化,微软曾经做过一份paper,但是里面很多东西比较局限:比如paper中将SSD作为了写入的buffer,而众所周知,写性能不会是任何一款NoSQL的瓶颈;比如SSD的索引采用了Hash的数据结构,这样在进行cache evict的时候,粒度的控制也很有问题。本文对其进行了改进,罗列如下: Features of SSD SSD对于传统硬盘的优势在于它没有机械装置,介质也由磁介质变为了电介质,因此它具备直接按地址读取数据的能力,没有了寻道时间,这也是为什么SSD ...
  Bdb je的底层存储格式是Log-Structured File System,即就像写日志那样append only,并且其日志和数据是存在一起不分开的。 因此bdb的存储格式是面向entry的,一个entry或代表一个record,或代表一条日志等等。 从源码分析,bdb的entry总共有几十种之多,根据不同的配置使用不同的entry。代码结构是这样的:                je是以一个目录为一个Environment,而一个目录里面可以有多个Database,每个Database可以存储若干key-value,实际上有点像库和表的概念 对于一个Environmrn ...
概述 HBase是基于Bigtable论文的面向列的分布式存储系统,其存储设计是基于Memtable/SSTable的。其它如Cassandra都是采用的该设计。 整个存储分为两部分,一部分为内存中的MemStore(Memtable),另外一部分为磁盘(这里是HDFS)上的HFile(SSTable ...
关于Solr可以参考之前的博客或者百度一下。这里主要讲Solr的扩展,包括横向,纵向,以及深度扩展。   Javaeye的排版有问题,将就看吧 Solr的扩展(Scaling)   当你的索引数量越来越大,你会发现你的搜索响应时间变得更慢,索引新内容的时间也会越来越长,那么,到了做出一些改变的时候了,幸运的是,solr很好的考虑到了这些情况,你只需要改变你的配置就可以了。 以下将从三个方面讲述solr的scaling: l  调优某个Solr服务器(Scale High) 通过缓存和内存管理优化某个单实例的Solr。将Solr部署到一个拥有快速的CPU ...
技术选型 2.1. 基础架构 IOC Container: Spring, Guice 我们需要IOC Container的依赖注入作为胶水,把其他工具包粘在一起。还需要它的AOP,进行事务配置,权限管理。 这么多人都在使用Spring,实际使用中可以获得巨大的便利,如果选择了其他平台就要面临在关键时刻自己造轮子的窘境。使用Spring的实际经验更长,方便与其他组件整合。 Guice是由Google出品的,又使用了JDK5中的注解功能,问题是以后是否能得到很好的支持。 MVC: struts2, struts, ...
Big Data in Real-Time at Twitter:http://www.slideshare.net/nkallen/q-con-3770885 Build scalable microblog qcon beijing 2010:http://www.slideshare.net/iso1600/build-scalable-microblog-qcon-beijing-2010
翻译了几年前的一篇文章,思想很不错。 http://www.jroller.com/kenwdelong/entry/horizontal_database_partitioning_with_spring 简介        大约在一年以前,我决定水平扩展我们的数据库。在我们的数据库中我们拥有数百万的用户,我们期望我们的用户为我们的网站生成更多的内容,同时我们将收集更多的用户行为。我们已经被垂直扩展的策略搞得焦头烂额,我们越来越难于对硬件进行扩展,你只能同时扩展一两个硬件,并且当它挂掉时,所有的东西都崩溃掉了。因此,我们决定使用普通硬件设备对数据库进行水平扩展。        一个专门 ...
转载自:http://www.cnblogs.com/spork/archive/2009/12/29/1634766.html 来自原小站,曾经迷糊过的东西,表上来,希望对正在迷糊或即将迷糊的人有帮助。   谈到系统的可伸缩性,Scale-up(纵向扩展)和Scale-out(横向扩展)是两个常见的术语,对于初学者来说,很容易搞迷糊这两个概念,这里总结了一些把概念解释的比较清楚的内容。   首先来段Wikipedia的,讲的很透彻了。       Scale vertically (scale up)     To scale vertically (or scale up) mea ...
转载自:http://hi.baidu.com/fdwm_lx/blog/item/fe46344e11517705b3de054c.html 在大型web应用中,缓存可算是当今的一个标准开发配置了。在大 规模的缓存应用中,应运而生了分布式缓存系统。分布式缓存系统的基本原理,大家也有所耳闻。key-value如何均匀的分散到集群中?说到此,最常规的 方式莫过于hash取模的方式。比如集群中可用机器适量为N,那么key值为K的的数据请求很简单的应该路由到hash(K) mod N对应的机器。的确,这种结构是简单的,也是实用的。但是在一些高速发展的web系统中,这样的解决方案仍有些缺陷。随着系统访 ...
  Zookeeper API中包如下: org.apache.zookeeper org.apache.zookeeper.data org.apache.zookeeper.server org.apache.zookeeper.server.quorum org.apache.zookeeper.server.upgrade 其中开发者比较常用的包都集中在前两个包中 关于ZooKeeper的安装省略,请参加之前的文 ...

Java 深拷贝

    博客分类:
  • Java
java里的clone分为: A:浅复制(浅克隆): 浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。 b:深复制(深克隆):深复制把要复制的对象所引用的对象都复制了一遍。 Java中对象的克隆,为了获取对象的一份拷贝,我们可以利用Object类的clone()方法。必须要遵循下面三点 1.在派生类中覆盖基类的clone()方法,并声明为public【Object类中的clone()方法为protected的】。 2.在派生类的clone()方法中,调用super.clone()。 3.在派生类中实现Cloneable接口。 Object类里的clone方法是浅复制(浅克隆) 利用序列 ...
Global site tag (gtag.js) - Google Analytics