在研究了大规模数据存储解决方案之后,我几乎落在了卡桑德拉.但它普遍认为Hbase是大规模数据处理和分析的更好解决方案.
虽然两者都是相同的键/值存储,并且两者都是/可以运行(最近的Cassandra)Hadoop层,但是当大数据需要处理/分析时,Hadoop是更好的候选者.
我也在http://ria101.wordpress.com/2010/02/24/hbase-vs-cassandra-why-we-moved/找到了关于这两方面的详细信息.
但我仍然在寻找Hbase的具体优势.
虽然我更加信服Cassandra,因为它简单易用,无需添加节点和无缝复制,也没有故障点功能.它还保留了二级索引功能,因此它是一个很好的优点.
退出cli后,我无法从Cassandra中检索数据.当我回去在另一个会话中获取数据时,我收到此错误:
org.apache.cassandra.db.marshal.MarshalException:无法将'jsmith'解析为十六进制字节
列系列似乎也停留在键空间中.
我还将密钥格式更改为ascii(假设用户密钥为ascii;)......并且不会保持设置状态.
有原因吗?到底是怎么回事?
我已经用php和mySql编程了一段时间,最近我决定尝试一下nosql.如果有经验的人能告诉我,我真的很感激:
谢谢
我正在使用此代码获取user_id和user_code
Keyspace keyspace = HFactory.createKeyspace("test", cluster);
CqlQuery<String,String,ByteBuffer> cqlQuery = new CqlQuery<String,String,ByteBuffer>(keyspace, stringSerializer, stringSerializer, new ByteBufferSerializer());
cqlQuery.setQuery("select user_id,user_code from User");
QueryResult<CqlRows<String,String,ByteBuffer>> result = cqlQuery.execute();
Iterator iterator = result.get().iterator();
while(iterator.hasNext()) {
Row<String, String, ByteBuffer> row = (Row<String, String, ByteBuffer>) iterator.next();
System.out.println("\nInserted data is as follows:\n" + row.getColumnSlice().getColumns().get(0).getValue().getInt());
System.out.println("\nInserted data is as follows:\n" + Charset.forName("UTF-8").decode(row.getColumnSlice().getColumns().get(1).getValueBytes()));
}
Run Code Online (Sandbox Code Playgroud)
现在问题在于我正在根据其特定类型转换字段
如果查询随机怎么办?如何处理这种情况?
我即将启动一个项目,其中包含一个符合NOSQL数据库(Hadoop,MongoDB,Cassandra等)应该使用的数据库.另一方面,我真的很想使用Grails作为Web平台,所以如果有人能用他/她的经验来启发我,我将不胜感激.
我开始研究Cassandra,我对它提供的内容印象深刻,但同时我读到了Reddit在迁移到Cassandra之后如何进行消防演习,以及Twitter决定不将其用于推文.虽然那些大约一年前左右,但我想知道最新版本是否准备好迎接黄金时段了吗?