- 浏览: 1014296 次
- 性别:
- 来自: 福州
最新评论
-
guanxin2012:
大神,您好。非常感谢您贡献了IKExpression。我们现在 ...
分享开源表达式解析器IK-Expression2.0 -
qqgigas:
LZ,public boolean createUser(LD ...
Sun Directory Server/LDAP学习笔记(二)——API说明及代码样例 -
gao_shengxian:
Hibernate: update T_GX_TEST set ...
优雅Java编程 之 使用Hibernate存储Oracle Spatial对象 -
a78113534:
感谢大神,在安卓里面调用成功了。
发布IK Expression开源表达式解析器 V2.1.0 -
majiedota:
加油
来自开源支持者的第一笔捐赠
作为“云计算”时代的架构设计人员而言,不懂K-V库会被人说out的,为此,笔者在“人云已云”的忽悠下,也开始接触K-V数据库了。
在啥都不清楚的情况下,首先选择跟风,未必是一件坏事。尤其对技术人员而言,先入门再做选择,也不失为一种方法。“听说xxx大网站都是用Cassandra存储他们的SNS数据的,我们也要试试”,于是乎,开始了Casssandra初体验。
(PS:本文不是cassandra的入门学习的材料。以下均为笔者自己的理解,一家之言,不正确的地方,望指正...)
以OO的方式理解Cassandra的数据模型
学习Cassandra,首先要理解它有别于传统数据库的存储模型。对于常使用HashMap的Java程序员而言,K-V的映射结构并不难理解。
把Cassandra的ColumnFamily看成HashMap
网上有不少文章认为ColumnFamily类似RDB中的Table,这样理解有一定道理,但笔者更愿意从OOD的角度去诠释它。从Cassandra的设计实现上看,把它理解为大型的散列结构的索引更贴近其本来面目。
ColumnFamily中的K-V映射
ColumnFamily中的K-V映射有两大类型:
针对第一种单层映射,从OOD角度看,笔者理解为 1 Key --> 1 Javabean的标准HashMap映射。你完全可以把“n个Column”理解为直接暴露在外的Bean的n个属性。
而对于第二种的两层映射,笔者认为是 1 Key --> Bean列表 的 1对n 映射。这里,你可以把“1个SuperColumn”--->“n个SubColumn”的映射,理解为 1个Bean 对 n个属性的映射封装;把“1个key” ---> “n个SuperColumn”,视为 Key 对 Bean 的一对多映射,即 Key 映射 一个Bean列表。
之所以笔者使用对象模型视角,而不是数据库的行列模型视角来看待Cassandra,是有以下原因的:
Column的排序与组织
在Cassandra中,给出Column/SuperColumn的排序方式是十分重要的事。事实上,在你定义ColumnFamily时,你是无需定义其包含了那些Column/SuperColumn,而更重要的是定义Column/SuperColumn的排序方式。这里,笔者根据自己的理解做以下的判断:
Cassandra数据的Json表现
为了让各位看官更直观的体验Cassandra的数据结构,增加以下的Json表现部分:
1.单层映射(Column)的JSON格式
其中 “mccv”,“user2” 是key ; “Users”,“Stats”是ColumnFamily,
“emailAddress” , “webSite”,“visits”等是Column。
1.二层映射(SuperColumn)的JSON格式
其中 “mccv”为key ;"Tags"为ColumnFamily ;“cassandra”,“thrift” 为SuperColumn ; “incubator”,“jira” 为 subColumn.
以OO的方式使用Cassandra
Cassandra官方提供了thrift作为其客户端的API,但我们发现它是面向Column的“底层化”操作。这无疑对习惯了以为Bean操作单元的Java开发者而言,是一个痛苦的思维转化过程和代码实现。
好在我们在其官网发现了一个受推荐的,相对高级的Java客户端,也就是笔者要推荐的“Pelops”。该API提供了对ColumnFamily的整体性操作,并且还提供了类似翻页,排序的实现。 在“Pelops”基础上, 我们通过简单的、对JavaBean属性的类反射封装,实现了类似Hibernate式的Bean的存储访问(而不再是Bean的属性对应一个Column的读写),这让笔者的心情大为舒畅 。
Pelops的一点小插曲
笔者在使用Pelops的过程中,发生了一些小插曲:在系统正式发布时,Cassandra的访问账户必须有安全限制的(就是要有用户名、密码认证)。然而,找遍了Pelops的API,却发现它没有提供用户名、密码的配置方法(晕死啊!!!不知道是不是笔者没找到),最后不得已,对其源码进行了简单的修改。
以下是被笔者修改的两个类:
1.org.wyki.cassandra.pelops.Policy.
这个类只是简单的添加了username 、 password、 keyspace三个属性,以及对应的get,set方法,通过它将账户配置信息传入链接池。
2.org.wyki.cassandra.pelops.ThriftPool.
这个是 pelops的链接池类,笔者修改了其中的私有方法createConnection(),使得在创建链接的时候,带上用户名密码的安全认证信息
至此,笔者对Casssandra初体验告一段落。
试了试 treapdb,
1、代码没注释,几乎没有文档。
2、get put 的value是 ByteBuffer,不好用啊。
3、prefix是个怪别扭的东西,有点像 columnFamily或者 Collection,如果要定义成collection一样的东西,
最好还是在client的API封装一层吧。
4、貌似没有removeAll的功能?
5、性能一般。自带的TestTreapDBClient的例子,我机器上6.5k record/s
mongodb如果我记得没错 它使用 mmap的。吃内存惊人。
mongodb 在32bit 下就是个玩具。
mongodb如果我记得没错 它使用 mmap的。吃内存惊人。
对Cassandra的问题比较感兴趣,前阵子听说twitter不用了,而digg的CTO也因为技术问题离职了,但是没人说具体是由于Cassandra的什么问题造成的??请教细节,谢谢
twitter暴了好像cassandra数据量一多就有问题了吧
facebook用cassandra也不是用在大数据量方面的样子
digg报道的时候倒没说什么
BDB应用面应该很广,不过貌似单个对象大小有限制,是这样的吗!?
BDB我也在用呀,我控制不好,时间比较紧只好在写操作的时候单线程写入,多线程写数据超过了3天后,我的bdb的jdb存储文件一般就损坏了
用好bdb,看来要研究下heritrix怎么用bdb的啦
Cassadra一点都不敢用了,twitter, digg都暴出大问题了
直接用java调tokyocabinet库,内存的开销好像也很大
暂时先用mysql实现吧
以后有时间,还是想换mongodb
对Cassandra的问题比较感兴趣,前阵子听说twitter不用了,而digg的CTO也因为技术问题离职了,但是没人说具体是由于Cassandra的什么问题造成的??请教细节,谢谢
Java版本的bdb和c版本的有很多不同,建议关注一下
MongoDB的大数据量下的表现还是令人不太放心
啊~~~楼上两位说的可是真的,如果MongoDB不支持大数据,我们干啥还用它,只是SNS部分的数据特征就是海量!!
请知情的大大说说?! 还是64位是必须的 (服务器用64位似乎也是有道理的)
只是和寻址有关,32位机器最大只能保存2G数据,64位系统则没有限制,MongoDB官方也推荐用64位机器!
BDB现在我自己做了下,觉得还蛮爽,直接持久化JAVA对象,取的时候直接得到自己想要对象,移植也很方便,只要拷贝文件就KO了。
BDB我也在用呀,我控制不好,时间比较紧只好在写操作的时候单线程写入,多线程写数据超过了3天后,我的bdb的jdb存储文件一般就损坏了
用好bdb,看来要研究下heritrix怎么用bdb的啦
Cassadra一点都不敢用了,twitter, digg都暴出大问题了
直接用java调tokyocabinet库,内存的开销好像也很大
暂时先用mysql实现吧
以后有时间,还是想换mongodb
Java版本的bdb和c版本的有很多不同,建议关注一下
MongoDB的大数据量下的表现还是令人不太放心
啊~~~楼上两位说的可是真的,如果MongoDB不支持大数据,我们干啥还用它,只是SNS部分的数据特征就是海量!!
请知情的大大说说?! 还是64位是必须的 (服务器用64位似乎也是有道理的)
MongoDB面向文档的nosql,和一般的k-v不是很一样,并且在按key查询的情况下肯定远低于k-v的nosql
如果对它有兴趣可以看看国外关于它和mysql的性能比较,个人感觉是不太乐观
小数据量2-3000w这种用它还是蛮爽的,不过在这样数据量级别还有tc和tt......
但是不得不说它自带的mapreduce还是值得借鉴的
Java版本的bdb和c版本的有很多不同,建议关注一下
MongoDB的大数据量下的表现还是令人不太放心
啊~~~楼上两位说的可是真的,如果MongoDB不支持大数据,我们干啥还用它,只是SNS部分的数据特征就是海量!!
请知情的大大说说?! 还是64位是必须的 (服务器用64位似乎也是有道理的)
只是和寻址有关,32位机器最大只能保存2G数据,64位系统则没有限制,MongoDB官方也推荐用64位机器!
BDB现在我自己做了下,觉得还蛮爽,直接持久化JAVA对象,取的时候直接得到自己想要对象,移植也很方便,只要拷贝文件就KO了。
Java版本的bdb和c版本的有很多不同,建议关注一下
MongoDB的大数据量下的表现还是令人不太放心
啊~~~楼上两位说的可是真的,如果MongoDB不支持大数据,我们干啥还用它,只是SNS部分的数据特征就是海量!!
请知情的大大说说?! 还是64位是必须的 (服务器用64位似乎也是有道理的)
Java版本的bdb和c版本的有很多不同,建议关注一下
MongoDB的大数据量下的表现还是令人不太放心
目前nosql数据库已经在这个方面大量使用了,从风险上说,应该不大,就看用好用坏的问题了
目前对nosql的这些产品还不是很了解,选择也很多,看到很多人推荐MongoDB,但是感觉Cassandra名气更大,
o(∩_∩)o...待楼主继续分享经验
本人还没用过MongoDB,不敢妄加评论,建议有时间,两个都试试,
目前nosql数据库已经在这个方面大量使用了,从风险上说,应该不大,就看用好用坏的问题了
目前对nosql的这些产品还不是很了解,选择也很多,看到很多人推荐MongoDB,但是感觉Cassandra名气更大,
o(∩_∩)o...待楼主继续分享经验
在啥都不清楚的情况下,首先选择跟风,未必是一件坏事。尤其对技术人员而言,先入门再做选择,也不失为一种方法。“听说xxx大网站都是用Cassandra存储他们的SNS数据的,我们也要试试”,于是乎,开始了Casssandra初体验。
(PS:本文不是cassandra的入门学习的材料。以下均为笔者自己的理解,一家之言,不正确的地方,望指正...)
以OO的方式理解Cassandra的数据模型
学习Cassandra,首先要理解它有别于传统数据库的存储模型。对于常使用HashMap的Java程序员而言,K-V的映射结构并不难理解。
把Cassandra的ColumnFamily看成HashMap
网上有不少文章认为ColumnFamily类似RDB中的Table,这样理解有一定道理,但笔者更愿意从OOD的角度去诠释它。从Cassandra的设计实现上看,把它理解为大型的散列结构的索引更贴近其本来面目。
ColumnFamily中的K-V映射
ColumnFamily中的K-V映射有两大类型:
- 1.基于Column的 “1个Key” --->“n个Column” 的单层映射
- 2.基于SuperColumn的 “1个key” ---> “n个SuperColumn” ,“1个SuperColumn”--->“n个SubColumn”的两层映射
针对第一种单层映射,从OOD角度看,笔者理解为 1 Key --> 1 Javabean的标准HashMap映射。你完全可以把“n个Column”理解为直接暴露在外的Bean的n个属性。
而对于第二种的两层映射,笔者认为是 1 Key --> Bean列表 的 1对n 映射。这里,你可以把“1个SuperColumn”--->“n个SubColumn”的映射,理解为 1个Bean 对 n个属性的映射封装;把“1个key” ---> “n个SuperColumn”,视为 Key 对 Bean 的一对多映射,即 Key 映射 一个Bean列表。
之所以笔者使用对象模型视角,而不是数据库的行列模型视角来看待Cassandra,是有以下原因的:
- 首先,Cassandra设计以Key为主导的数据映射寻址机制有别于以“ResultSet结果集”为主的传统RDB数据获取模式。
- 其次,从Cassandra数据的持久化实现上看,对于一个SuperColumn的读取和存储,Cassandra是采用了一次性序列化的。也就是说,即便你只访问SuperColumn下的1个SubColumn的值,Cassandra也需要把这个SuperColumn下的所有SubColumns都读出,一次性进行反序列化,而后返回你要单个属性列。从这点上看,笔者认为Cassandra的设计者是将SuperColumn视为整体的一个持久化对象(一个完整的JavaBean)来看待。
Column的排序与组织
在Cassandra中,给出Column/SuperColumn的排序方式是十分重要的事。事实上,在你定义ColumnFamily时,你是无需定义其包含了那些Column/SuperColumn,而更重要的是定义Column/SuperColumn的排序方式。这里,笔者根据自己的理解做以下的判断:
- 1.ColumnFamily与RDB的Table结构完全不同,它不是规整的二维矩阵形态,笔者大胆推测,应该更类似树形结构。树的子节点是可以在程序运行时任意添加的,而ColumnFamily中Column也是动态增减的。
- 2.Cassandra对Column的组织是严格顺序结构的,很可能是类似TreeSet的有序树型结构。这也很好解释为啥ColumnFamily必须定义Column的排序规则,并且数据结构中有ColumnPath这个概念(看上去很像url路径,不是吗?)
Cassandra数据的Json表现
为了让各位看官更直观的体验Cassandra的数据结构,增加以下的Json表现部分:
1.单层映射(Column)的JSON格式
{ "mccv":{ "Users":{ "emailAddress":{"name":"emailAddress", "value":"foo@bar.com"}, "webSite":{"name":"webSite", "value":"http://bar.com"} }, "Stats":{ "visits":{"name":"visits", "value":"243"} } }, "user2":{ "Users":{ "emailAddress":{"name":"emailAddress", "value":"user2@bar.com"}, "twitter":{"name":"twitter", "value":"user2"} } } }
其中 “mccv”,“user2” 是key ; “Users”,“Stats”是ColumnFamily,
“emailAddress” , “webSite”,“visits”等是Column。
1.二层映射(SuperColumn)的JSON格式
{ "mccv": { "Tags": { "cassandra": { "incubator": {"incubator": "http://incubator.apache.org/cassandra/"}, "jira": {"jira": "http://issues.apache.org/jira/browse/CASSANDRA"} }, "thrift": { "jira": {"jira": "http://issues.apache.org/jira/browse/THRIFT"} } } } }
其中 “mccv”为key ;"Tags"为ColumnFamily ;“cassandra”,“thrift” 为SuperColumn ; “incubator”,“jira” 为 subColumn.
以OO的方式使用Cassandra
Cassandra官方提供了thrift作为其客户端的API,但我们发现它是面向Column的“底层化”操作。这无疑对习惯了以为Bean操作单元的Java开发者而言,是一个痛苦的思维转化过程和代码实现。
好在我们在其官网发现了一个受推荐的,相对高级的Java客户端,也就是笔者要推荐的“Pelops”。该API提供了对ColumnFamily的整体性操作,并且还提供了类似翻页,排序的实现。 在“Pelops”基础上, 我们通过简单的、对JavaBean属性的类反射封装,实现了类似Hibernate式的Bean的存储访问(而不再是Bean的属性对应一个Column的读写),这让笔者的心情大为舒畅 。
Pelops的一点小插曲
笔者在使用Pelops的过程中,发生了一些小插曲:在系统正式发布时,Cassandra的访问账户必须有安全限制的(就是要有用户名、密码认证)。然而,找遍了Pelops的API,却发现它没有提供用户名、密码的配置方法(晕死啊!!!不知道是不是笔者没找到),最后不得已,对其源码进行了简单的修改。
以下是被笔者修改的两个类:
1.org.wyki.cassandra.pelops.Policy.
这个类只是简单的添加了username 、 password、 keyspace三个属性,以及对应的get,set方法,通过它将账户配置信息传入链接池。
2.org.wyki.cassandra.pelops.ThriftPool.
这个是 pelops的链接池类,笔者修改了其中的私有方法createConnection(),使得在创建链接的时候,带上用户名密码的安全认证信息
private Connection createConnection() { Connection conn; try { conn = new Connection(this, defaultPort); } catch (SocketException e) { e.printStackTrace(); return null; } if (conn.open(sessionId.get())){ // **** add by linliangyi *** Policy police = getPolicy(); if(police.keyspace != null && police.username != null && police.password != null){ Map<String , String> userNamePassword = new HashMap<String , String>(); userNamePassword.put(SimpleAuthenticator.USERNAME_KEY, police.username); userNamePassword.put(SimpleAuthenticator.PASSWORD_KEY, police.password); try { conn.getAPI().login(police.keyspace , new AuthenticationRequest(userNamePassword)); } catch (AuthenticationException e) { e.printStackTrace(); return null; } catch (AuthorizationException e) { e.printStackTrace(); return null; } catch (TException e) { e.printStackTrace(); return null; } logger.trace(police.keyspace + " | " + police.username + " | " + police.password); } return conn; } return null; }
至此,笔者对Casssandra初体验告一段落。
评论
46 楼
kimmking
2011-04-20
fxsjy 写道
毛遂自荐我们的NoSQL:
http://code.google.com/p/treapdb/
常见问题:
http://code.google.com/p/treapdb/issues/list
例程:
http://code.google.com/p/treapdb/wiki/SomeBenchmark
http://code.google.com/p/treapdb/
常见问题:
http://code.google.com/p/treapdb/issues/list
例程:
http://code.google.com/p/treapdb/wiki/SomeBenchmark
试了试 treapdb,
1、代码没注释,几乎没有文档。
2、get put 的value是 ByteBuffer,不好用啊。
3、prefix是个怪别扭的东西,有点像 columnFamily或者 Collection,如果要定义成collection一样的东西,
最好还是在client的API封装一层吧。
4、貌似没有removeAll的功能?
5、性能一般。自带的TestTreapDBClient的例子,我机器上6.5k record/s
45 楼
易卡螺丝君
2011-04-20
redis毫无压力的撸过
44 楼
kimmking
2011-04-20
mathgl 写道
lxiaodao 写道
我在试验并发写入的时候(java客户端),单节点老是出现问题,不是连接被拒绝就是其它问题。请问大家有没有遇到类似的问题,是不是使用cluster就没有这样的问题。
还有,我感觉cassandra的查询功能很弱啊,select * from user u where u.name='gongcheng'这样的查询好像不能支持啊!?
mongodb是全部数据扔进内存,比如查询的时候它先把数据都加载内存,然后查询,所以它不能支持大数据量,推荐内存>数据量的情况。我觉得这个很恶心,如果内存那么大,我都可以不用数据库了。
如有问题,欢迎指正。
还有,我感觉cassandra的查询功能很弱啊,select * from user u where u.name='gongcheng'这样的查询好像不能支持啊!?
mongodb是全部数据扔进内存,比如查询的时候它先把数据都加载内存,然后查询,所以它不能支持大数据量,推荐内存>数据量的情况。我觉得这个很恶心,如果内存那么大,我都可以不用数据库了。
如有问题,欢迎指正。
mongodb如果我记得没错 它使用 mmap的。吃内存惊人。
mongodb 在32bit 下就是个玩具。
43 楼
kimmking
2011-04-20
Cassandra 是nosql里 为数不多的pure java的。
正在学习中。。。
正在学习中。。。
42 楼
yizhilong28
2011-04-20
Cassandra小试,思维还没完全转过来。。。
41 楼
mathgl
2011-02-10
lxiaodao 写道
我在试验并发写入的时候(java客户端),单节点老是出现问题,不是连接被拒绝就是其它问题。请问大家有没有遇到类似的问题,是不是使用cluster就没有这样的问题。
还有,我感觉cassandra的查询功能很弱啊,select * from user u where u.name='gongcheng'这样的查询好像不能支持啊!?
mongodb是全部数据扔进内存,比如查询的时候它先把数据都加载内存,然后查询,所以它不能支持大数据量,推荐内存>数据量的情况。我觉得这个很恶心,如果内存那么大,我都可以不用数据库了。
如有问题,欢迎指正。
还有,我感觉cassandra的查询功能很弱啊,select * from user u where u.name='gongcheng'这样的查询好像不能支持啊!?
mongodb是全部数据扔进内存,比如查询的时候它先把数据都加载内存,然后查询,所以它不能支持大数据量,推荐内存>数据量的情况。我觉得这个很恶心,如果内存那么大,我都可以不用数据库了。
如有问题,欢迎指正。
mongodb如果我记得没错 它使用 mmap的。吃内存惊人。
40 楼
fxsjy
2010-12-18
毛遂自荐我们的NoSQL:
http://code.google.com/p/treapdb/
常见问题:
http://code.google.com/p/treapdb/issues/list
例程:
http://code.google.com/p/treapdb/wiki/SomeBenchmark
http://code.google.com/p/treapdb/
常见问题:
http://code.google.com/p/treapdb/issues/list
例程:
http://code.google.com/p/treapdb/wiki/SomeBenchmark
39 楼
lxiaodao
2010-12-18
我在试验并发写入的时候(java客户端),单节点老是出现问题,不是连接被拒绝就是其它问题。请问大家有没有遇到类似的问题,是不是使用cluster就没有这样的问题。
还有,我感觉cassandra的查询功能很弱啊,select * from user u where u.name='gongcheng'这样的查询好像不能支持啊!?
mongodb是全部数据扔进内存,比如查询的时候它先把数据都加载内存,然后查询,所以它不能支持大数据量,推荐内存>数据量的情况。我觉得这个很恶心,如果内存那么大,我都可以不用数据库了。
如有问题,欢迎指正。
还有,我感觉cassandra的查询功能很弱啊,select * from user u where u.name='gongcheng'这样的查询好像不能支持啊!?
mongodb是全部数据扔进内存,比如查询的时候它先把数据都加载内存,然后查询,所以它不能支持大数据量,推荐内存>数据量的情况。我觉得这个很恶心,如果内存那么大,我都可以不用数据库了。
如有问题,欢迎指正。
38 楼
store88
2010-10-18
linliangyi2007 写道
对Cassandra的问题比较感兴趣,前阵子听说twitter不用了,而digg的CTO也因为技术问题离职了,但是没人说具体是由于Cassandra的什么问题造成的??请教细节,谢谢
twitter暴了好像cassandra数据量一多就有问题了吧
facebook用cassandra也不是用在大数据量方面的样子
digg报道的时候倒没说什么
37 楼
linliangyi2007
2010-10-17
whzhaha 写道
其实google有在用 berkeley db,不说了,感觉搞推销的一样,哈哈。
BDB应用面应该很广,不过貌似单个对象大小有限制,是这样的吗!?
36 楼
whzhaha
2010-10-17
其实google有在用 berkeley db,不说了,感觉搞推销的一样,哈哈。
35 楼
linliangyi2007
2010-10-17
store88 写道
BDB我也在用呀,我控制不好,时间比较紧只好在写操作的时候单线程写入,多线程写数据超过了3天后,我的bdb的jdb存储文件一般就损坏了
用好bdb,看来要研究下heritrix怎么用bdb的啦
Cassadra一点都不敢用了,twitter, digg都暴出大问题了
直接用java调tokyocabinet库,内存的开销好像也很大
暂时先用mysql实现吧
以后有时间,还是想换mongodb
对Cassandra的问题比较感兴趣,前阵子听说twitter不用了,而digg的CTO也因为技术问题离职了,但是没人说具体是由于Cassandra的什么问题造成的??请教细节,谢谢
34 楼
store88
2010-10-17
whzhaha 写道
linliangyi2007 写道
forchenyun 写道
whzhaha 写道
最近也让NOSQL在我脑子了过了下,我们现在的项目我本来打算用MongoDB,但是MongoDB有个约束就是32位下只能数据到2G这远远搭不到我的数据存放量,64位是没限制的,服务器改成64位风险太大,现在我采用Berkeley DB,也不知道以后项目上线后稳定性怎么样,有ORACLE做护盾Berkeley DB应该不会太差吧,祈祷下,呵呵
Java版本的bdb和c版本的有很多不同,建议关注一下
MongoDB的大数据量下的表现还是令人不太放心
啊~~~楼上两位说的可是真的,如果MongoDB不支持大数据,我们干啥还用它,只是SNS部分的数据特征就是海量!!
请知情的大大说说?! 还是64位是必须的 (服务器用64位似乎也是有道理的)
只是和寻址有关,32位机器最大只能保存2G数据,64位系统则没有限制,MongoDB官方也推荐用64位机器!
BDB现在我自己做了下,觉得还蛮爽,直接持久化JAVA对象,取的时候直接得到自己想要对象,移植也很方便,只要拷贝文件就KO了。
BDB我也在用呀,我控制不好,时间比较紧只好在写操作的时候单线程写入,多线程写数据超过了3天后,我的bdb的jdb存储文件一般就损坏了
用好bdb,看来要研究下heritrix怎么用bdb的啦
Cassadra一点都不敢用了,twitter, digg都暴出大问题了
直接用java调tokyocabinet库,内存的开销好像也很大
暂时先用mysql实现吧
以后有时间,还是想换mongodb
33 楼
forchenyun
2010-10-17
linliangyi2007 写道
forchenyun 写道
whzhaha 写道
最近也让NOSQL在我脑子了过了下,我们现在的项目我本来打算用MongoDB,但是MongoDB有个约束就是32位下只能数据到2G这远远搭不到我的数据存放量,64位是没限制的,服务器改成64位风险太大,现在我采用Berkeley DB,也不知道以后项目上线后稳定性怎么样,有ORACLE做护盾Berkeley DB应该不会太差吧,祈祷下,呵呵
Java版本的bdb和c版本的有很多不同,建议关注一下
MongoDB的大数据量下的表现还是令人不太放心
啊~~~楼上两位说的可是真的,如果MongoDB不支持大数据,我们干啥还用它,只是SNS部分的数据特征就是海量!!
请知情的大大说说?! 还是64位是必须的 (服务器用64位似乎也是有道理的)
MongoDB面向文档的nosql,和一般的k-v不是很一样,并且在按key查询的情况下肯定远低于k-v的nosql
如果对它有兴趣可以看看国外关于它和mysql的性能比较,个人感觉是不太乐观
小数据量2-3000w这种用它还是蛮爽的,不过在这样数据量级别还有tc和tt......
但是不得不说它自带的mapreduce还是值得借鉴的
32 楼
whzhaha
2010-10-17
linliangyi2007 写道
forchenyun 写道
whzhaha 写道
最近也让NOSQL在我脑子了过了下,我们现在的项目我本来打算用MongoDB,但是MongoDB有个约束就是32位下只能数据到2G这远远搭不到我的数据存放量,64位是没限制的,服务器改成64位风险太大,现在我采用Berkeley DB,也不知道以后项目上线后稳定性怎么样,有ORACLE做护盾Berkeley DB应该不会太差吧,祈祷下,呵呵
Java版本的bdb和c版本的有很多不同,建议关注一下
MongoDB的大数据量下的表现还是令人不太放心
啊~~~楼上两位说的可是真的,如果MongoDB不支持大数据,我们干啥还用它,只是SNS部分的数据特征就是海量!!
请知情的大大说说?! 还是64位是必须的 (服务器用64位似乎也是有道理的)
只是和寻址有关,32位机器最大只能保存2G数据,64位系统则没有限制,MongoDB官方也推荐用64位机器!
BDB现在我自己做了下,觉得还蛮爽,直接持久化JAVA对象,取的时候直接得到自己想要对象,移植也很方便,只要拷贝文件就KO了。
31 楼
linliangyi2007
2010-10-17
forchenyun 写道
whzhaha 写道
最近也让NOSQL在我脑子了过了下,我们现在的项目我本来打算用MongoDB,但是MongoDB有个约束就是32位下只能数据到2G这远远搭不到我的数据存放量,64位是没限制的,服务器改成64位风险太大,现在我采用Berkeley DB,也不知道以后项目上线后稳定性怎么样,有ORACLE做护盾Berkeley DB应该不会太差吧,祈祷下,呵呵
Java版本的bdb和c版本的有很多不同,建议关注一下
MongoDB的大数据量下的表现还是令人不太放心
啊~~~楼上两位说的可是真的,如果MongoDB不支持大数据,我们干啥还用它,只是SNS部分的数据特征就是海量!!
请知情的大大说说?! 还是64位是必须的 (服务器用64位似乎也是有道理的)
30 楼
forchenyun
2010-10-17
whzhaha 写道
最近也让NOSQL在我脑子了过了下,我们现在的项目我本来打算用MongoDB,但是MongoDB有个约束就是32位下只能数据到2G这远远搭不到我的数据存放量,64位是没限制的,服务器改成64位风险太大,现在我采用Berkeley DB,也不知道以后项目上线后稳定性怎么样,有ORACLE做护盾Berkeley DB应该不会太差吧,祈祷下,呵呵
Java版本的bdb和c版本的有很多不同,建议关注一下
MongoDB的大数据量下的表现还是令人不太放心
29 楼
whzhaha
2010-10-16
最近也让NOSQL在我脑子了过了下,我们现在的项目我本来打算用MongoDB,但是MongoDB有个约束就是32位下只能数据到2G这远远搭不到我的数据存放量,64位是没限制的,服务器改成64位风险太大,现在我采用Berkeley DB,也不知道以后项目上线后稳定性怎么样,有ORACLE做护盾Berkeley DB应该不会太差吧,祈祷下,呵呵
28 楼
linliangyi2007
2010-10-16
ferly_j 写道
linliangyi2007 写道
ferly_j 写道
最近要做一个站内发消息的功能,用户量大了数据库会很难承受(不喜欢水平拆分的方式),想试试nosql,不知道nosql是否适合这种场景,有什么风险不,希望大拿们给点意见。
目前nosql数据库已经在这个方面大量使用了,从风险上说,应该不大,就看用好用坏的问题了
目前对nosql的这些产品还不是很了解,选择也很多,看到很多人推荐MongoDB,但是感觉Cassandra名气更大,
o(∩_∩)o...待楼主继续分享经验
本人还没用过MongoDB,不敢妄加评论,建议有时间,两个都试试,
27 楼
ferly_j
2010-10-16
linliangyi2007 写道
ferly_j 写道
最近要做一个站内发消息的功能,用户量大了数据库会很难承受(不喜欢水平拆分的方式),想试试nosql,不知道nosql是否适合这种场景,有什么风险不,希望大拿们给点意见。
目前nosql数据库已经在这个方面大量使用了,从风险上说,应该不大,就看用好用坏的问题了
目前对nosql的这些产品还不是很了解,选择也很多,看到很多人推荐MongoDB,但是感觉Cassandra名气更大,
o(∩_∩)o...待楼主继续分享经验
发表评论
-
来自开源支持者的第一笔捐赠
2013-01-09 21:15 57852013年1月9号,一个平凡而又不平常的日子! IK中文分词 ... -
发布 IK Analyzer 2012 FF 版本
2012-10-23 17:50 25136首先感谢大家对IK分词器的关注。 最近一段时间正式公司事务最 ... -
发布 IK Analyzer 2012 版本
2012-03-08 11:23 36233新版本改进: 支持分词歧义处理 支持数量词合并 词典支持中英 ... -
CSDN发生严重用户账号泄密事件
2011-12-21 19:21 2568之前有在CSDN注册过的兄弟们,注意了。。。 如果你的邮箱, ... -
一个隐形的java int溢出
2011-08-30 09:44 7562故事的背景: 笔者最近在做一个类SNS的项目,其中 ... -
雷军 :互联网创业的葵花宝典
2011-05-04 10:35 3598博主评: 这片博客很短 ... -
Luci-mint站内搜索实测
2011-04-02 16:18 4152关于Luci-mint 服务器硬 ... -
发布 IK Analyzer 3.2.8 for Lucene3.X
2011-03-04 17:49 14270IK Analyzer 3.2.8版本修订 ... -
TIPS - XML CDATA中的非法字符处理
2011-02-17 15:03 3324XML解析过程中,常遇见CDATA中存在非法字符,尤其在火星文 ... -
Spring + iBatis 的多库横向切分简易解决思路
2010-10-11 13:43 94121.引言 笔者最近在做一个互联网的“类SNS”应用,应用 ... -
发布 IK Analyzer 3.2.5 稳定版 for Lucene3.0
2010-09-08 14:43 5829新版本IKAnnlyzer3.2.8已发布! 地址: http ... -
关于Lucene3.0.1 QueryParser的一个错误
2010-05-21 21:33 2133表达式1: 引用 id:"1231231" ... -
发布 IK Analyzer 3.2.3 稳定版 for Lucene3.0
2010-05-15 14:13 6736IK Analyzer 3.2.3版本修订 在3.2.0版 ... -
windows平台上的nginx使用
2010-01-28 17:13 3412转载自:http://nginx.org/en/docs/wi ... -
发布IKAnnlyzer3.2.0稳定版 for Lucene3.0
2009-12-07 09:27 9602最新3.2.5版本已经推出,http://linliangyi ... -
在Tomcat下以JNDI方式发布JbossCache
2009-12-04 10:57 3856前言: 看过JbossCache的开发手册,发现在Jb ... -
Spring AOP小例子
2009-11-16 10:35 3410PS: 要注明一下,这个是转载滴,之前漏了说鸟,汗死 这里给 ... -
ActiveMQ 5.X 与 Tomcat 集成一(JNDI部署)
2009-11-10 15:15 5654原文地址:http://activemq.apache.org ... -
发布IKAnalyzer中文分词器V3.1.6GA
2009-11-08 23:10 11868IKAnalyzer3.2.0稳定版已经发布,支持Lucene ... -
设计模式感悟
2009-11-07 17:57 3699最近又把以前学习的模式过了一遍,感觉模式不是学出来的,是悟出来 ...
相关推荐
Cassandra 0.6在windows系统下的使用笔记。如何配置Keyspace,怎样使用cassandra-cli来操作数据。
Cassandra的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构成的一个分布式网络服务,对Cassandra 的一个写操作,会被复制到其他节点上去,对Cassandra的读操作,也会被路由到某个节点上面去读取。...
Spring Data Cassandra提供了对Cassandra的JPA支持,允许开发者使用注解驱动的方式进行数据操作。首先,定义一个Cassandra实体类,比如`User`,并使用`@Table`指定表名,`@Column`指定列名: ```java import org....
在3.11.3版本中,Cassandra对数据模型进行了优化,使得用户可以更加灵活地设计和操作数据表,适应不断变化的业务需求。 再者,Cassandra使用Gossip协议进行节点间的通信,这种协议允许节点间快速传播状态信息,从而...
Hector提供了对Cassandra的各种操作,包括CRUD(创建、读取、更新和删除)操作,以及更复杂的查询和索引管理。 Hector的使用步骤: 1. 添加依赖:首先,要在项目中引入Hector库的依赖。通常,这可以通过Maven或...
在本文档中,标题“Learning_Apache_Cassandra”透露了内容的主题,即学习Apache Cassandra。Cassandra是一个开源的NoSQL分布式数据库管理系统,它以高可用性和分布式架构著称。该书详细介绍了Cassandra的基本概念、...
这使得对数据库的操作变得更加高效和准确。 3. **数据浏览**:用户可以轻松浏览和操作存储在Cassandra中的数据。DevCenter提供了一个表格视图,显示表中的记录,支持筛选、排序和数据导出功能。此外,还支持直接...
Cassandra-Operator是针对Apache Cassandra在Kubernetes集群中部署和管理的一个开源项目。它使得在Kubernetes环境中运行和扩展Cassandra数据库变得更加简单和自动化。在这个压缩包“cassandra-operator,apache-...
将 YCSB 与 Cassandra 结合,我们可以对 Cassandra 数据库进行压力测试,了解其在不同工作负载下的性能表现。 ### YCSB 简介 YCSB 的设计目标是提供一个通用的框架,以便于对比和分析不同云存储系统的性能。它提供...
Cassandra 3.9版本是对之前版本的一系列改进,包括对配置文件参数的增强。配置文件是Cassandra的核心部分,其中包含了控制集群行为和性能的参数。了解这些配置参数对部署和优化Cassandra集群至关重要。 首先,...
随着用户数据量的爆炸性增长和对数据处理速度的需求日益提升,传统的关系型数据库在面对超大规模和高并发的场景时,逐渐暴露出性能瓶颈和扩展性问题。尤其在社交网络(SNS)类应用中,传统的数据库难以满足实时插入...
The rising popularity of Apache Cassandra rests on its ability to handle very large data sets that include hundreds of terabytes -- and that's why this distributed database has been chosen by ...
在深入探讨《Cassandra实战.pdf》这一资源时,我们聚焦于Apache Cassandra数据库系统的全面解析与实践应用,这是一份详尽的技术文档,旨在为数据库管理员、开发者以及对分布式数据库技术感兴趣的专业人士提供深入...
Cassandra CLI是Apache Cassandra数据库系统的一个命令行工具,它提供了与Cassandra集群交互的能力,包括连接到远程节点、创建或更新模式(schema)、设置和检索记录及列,以及查询节点和集群元数据。这个工具主要...
Cassandra JDBC Driver是一款专为Apache Cassandra数据库设计的Java数据库连接(JDBC)驱动程序,它使得Java应用程序能够通过遵循标准JDBC接口的方式来访问和操作Cassandra数据。Cassandra是一款分布式NoSQL数据库...
7. **索引和查询优化**:Cassandra 3.11.13可能会包括对索引和查询性能的优化,使得复杂的查询更加高效。通过索引,用户可以更快地定位到所需的数据。 8. **TTL (Time To Live)**:Cassandra 支持设置数据的生存...
Cassandra(apache-cassandra-3.11.11-bin.tar.gz)是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身...
本文档对Cassandra源代码作了详细的分析,可以了解整个集群的运作细节。 1. Cassandra的架构特点 Cassandra的架构特点包括灵活的schema、支持range查询、高可用、可扩展、多数据中心识别、范围查询、列表数据结构...