码迷,mamicode.com
首页 > 数据库 > 详细

cassandra在服务端像leveldb一样进行插入初试成功

时间:2017-02-22 13:07:03      阅读:327      评论:0      收藏:0      [点我收藏+]

标签:art   服务端   insert   time   inf   query   server   nod   color   

经过研究,决定在 cql3/QueryProcessor.java 里面下手。

 

这里有两个函数,第一个是

            public ResultMessage process(String queryString, QueryState queryState, QueryOptions options, long queryStartNanoTime)

该函数接受到 String 类型的sql语句,进行规整处理(判断是否合法),然后 调用 函数

            processStatement(prepared, queryState, options, queryStartNanoTime);

进行具体的处理。

 

我们在同一个类里面建立bench函数

        public void Bench(String queryString, QueryState queryState, QueryOptions options, long queryStartNanoTime)

在 process 函数开始时调用bench函数。

但是注意:如果不加处理,cassandra启动后会陷入某种无限循环导致一直无法进入服务状态(客户端无法操作数据库)

因此,在调用 bench 之前,加入if语句,判断如果 queryString 中含有某字符(bench)再调用bench函数。

注意需要将判断语句放在开始,这样可以使用任意的 query语句触发bench函数。否则如果放在后面,如果query语句非法,规整处理会直接返回。

 

 

bench函数被调用后,可以更改传递过来的 sql语句,然后调用    

          processStatement 

完成处理。

 

测试:在bench函数中使用insert语句,结果插入成功。

 

 

------------------------------问题

只能插入一条,如果插入多条的话,会发生错误。

WriteTimeout: Error from server: code=1100 [Coordinator node timed out waiting for replica nodes‘ responses] message="Operation timed out - received only 0 responses." info={‘received_responses‘: 0, ‘required_responses‘: 1, ‘consistency‘: ‘ONE‘}

cassandra在服务端像leveldb一样进行插入初试成功

标签:art   服务端   insert   time   inf   query   server   nod   color   

原文地址:http://www.cnblogs.com/bettersky/p/6427942.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!