Dop, Thank you for trying out hector. I think you have the right approach for using it with your project. Feel free to ping us directly regarding Hector on either of these mailings lists as appropriate: http://wiki.github.com/rantav/hector/mailing-lists
Cheers, -Nate On Tue, Apr 20, 2010 at 7:11 AM, Dop Sun <su...@dopsun.com> wrote: > Hi, > > > > I have downloaded hector-0.6.0-10.jar. As you mentioned, it has good > implementation for the connection pooling, JMX counters. > > > > What I’m doing is: using Hector to create the Cassandra client (be specific: > borrow_client(url, port)). And my understanding is: in this way, the > Jassandra will enjoy the client pool and JMX counter. > > > > http://code.google.com/p/jassandra/issues/detail?id=17 > > > > Please feel free to let me know if you have any suggestions. > > > > The new build 1.0.0 build 3(http://code.google.com/p/jassandra/) created. > From Jassandra client side, no API changes. > > > > Cheers~~~ > > Dop > > > > From: Ran Tavory [mailto:ran...@gmail.com] > Sent: Tuesday, April 20, 2010 1:36 AM > To: user@cassandra.apache.org > Subject: Re: Cassandra Java Client > > > > Hi Dop, you may want to look at hector as a low level cassandra client on > which you build jassandra, adding hibernate style magic etc like other ppl > have done with ORM layers on top of it. > > Hector's main features include extensive jmx counters, failover and > connection pooling. > > It's available for all recent versions, including 0.5.0, 0.5.1, 0.6.0 and > 0.6.1 > > On Mon, Apr 19, 2010 at 5:58 PM, Dop Sun <su...@dopsun.com> wrote: > > Well, there are couple of points while Jassandra is created: > > 1. First of all, I want to create something like that is because I come from > JDBC background, and familiar with Hibernate API. The ICriteria (which is > created for querying) is inspired by the Criteria API from hibernate. > > Actually, maybe because of this background, it cost me a lot efforts try to > understand Cassandra in the beginning and Thrift API also takes time to use. > > 2. The Jassandra creates a layer, which removes the direct link to > underlying Thrift API (including the exceptions, ConsistencyLevel > enumeration etc) > > High light this point because I believe the client of the Jassandra will > benefit for the implementation changes in future, for example, if the > Cassandra provides better Thrift API to selecting the columns for a list of > keys, SCFs, or deprecating some structures, exceptions, the client may not > be changed. Of cause, if Jassandra failed to approve itself, this is > actually not the advantage. :) > > 3. The Jassandra is designed to be an JDBC like API, no less, no more. It > strives to use the best API to do the quering (with token, key, SCF/ CF), > doing the CRUD, but no more than that. For example, it does not cover any > API like object mapping. But it should cover all the API functionalities > Thrift provided. > > These 3 points, are different from Hector (I should be honest that I have > not tried to use it before, the feeling of difference are coming from the > sample code Hector provided). > > So, the API Jassandra abstracted was something like this: > > IConnection connection = DriverManager.getConnection( > "thrift://localhost:9160", info); > try { > // 2. Get a KeySpace by name > IKeySpace keySpace = connection.getKeySpace("Keyspace1"); > > // 3. Get a ColumnFamily by name > IColumnFamily cf = keySpace.getColumnFamily("Standard2"); > > // 4. Insert like this > long now = System.currentTimeMillis(); > ByteArray nameFirst = ByteArray.ofASCII("first"); > ByteArray nameLast = ByteArray.ofASCII("last"); > ByteArray nameAge = ByteArray.ofASCII("age"); > ByteArray valueLast = ByteArray.ofUTF8("Smith"); > IColumn colFirst = new Column(nameFirst, ByteArray.ofUTF8("John"), > now); > cf.insert(userName, colFirst); > > IColumn colLast = new Column(nameLast, valueLast, now); > cf.insert(userName, colLast); > > IColumn colAge = new Column(nameAge, ByteArray.ofLong(42), now); > cf.insert(userName, colAge); > > // 5. Select like this > ICriteria criteria = cf.createCriteria(); > criteria.keyList(Lists.newArrayList(userName)) > .columnRange(nameAge, nameLast, 10); > Map<String, List<IColumn>> map = criteria.select(); > List<IColumn> list = map.get(userName); > Assert.assertEquals(3, list.size()); > Assert.assertEquals(valueLast, list.get(2).getValue()); > > // 6. Delete like this > cf.delete(userName, colFirst); > map = criteria.select(); > Assert.assertEquals(2, map.get(userName).size()); > > // 7. Get count like this > criteria = cf.createCriteria(); > criteria.keyList(Lists.newArrayList(userName)); > int count = criteria.count(); > Assert.assertEquals(2, count); > } finally { > // 8. Don't forget to close the connection. > connection.close(); > > } > } > > -----Original Message----- > From: Jonathan Ellis [mailto:jbel...@gmail.com] > Sent: Monday, April 19, 2010 10:35 PM > To: user@cassandra.apache.org > > Subject: Re: Cassandra Java Client > > How is Jassandra different from http://github.com/rantav/hector ? > > On Mon, Apr 19, 2010 at 9:21 AM, Dop Sun <su...@dopsun.com> wrote: >> May I take this chance to share this link here: >> >> http://code.google.com/p/jassandra/ >> >> >> >> It currently based with Cassandra 0.6 Thrift APIs. >> >> >> >> The class ThriftCriteria and ThriftColumnFamily has direct use of Thrift >> API. Also, the site itself has test code, which is actually works on >> Jassandra abstraction. >> >> >> >> Dop >> >> >> >> From: Nirmala Agadgar [mailto:nirmala...@gmail.com] >> Sent: Friday, April 16, 2010 5:56 PM >> To: user@cassandra.apache.org >> Subject: Cassandra Java Client >> >> >> >> Hi, >> >> Can anyone tell how to implement Client that can insert data into > cassandra >> in Java. Any Code or guidelines would be helpful. >> >> - >> Nirmala >> > >