与Cassandra一起使用约会

fre*_*ish 3 datetime date cassandra

我刚刚开始使用Cassandra数据库进行冒险.我已经设法学习一些基础知识,但我仍然无法理解的是如何使用Cassandra的日期?

因此,例如在MySQL中,我们有一个字段的日期时间类型,我们可以查询(例如)创建日期小于2010-01-01的所有字段.此外,我们可以通过创建日期字段来排序结果.

我们如何才能与Cassandra达成同样的目标?如何定义相应的列族以及如何查询(CQL)以获得相同的结果?

Jas*_*onw 5

您可以使用类型DateType在列族中定义DateType类型的列.你应该真正阅读这个页面,它有描述和示例如何进行范围查询(即creationdate <2010-01-01).对于订购,您可以参考SliceRange,但这可能已经涵盖在cassandra客户端中.您可能希望查看cassandra 客户端来执行查询.

这是一个关于如何使用hector客户端在cassandra中进行查询的片段.

// 2010-01-01
Date date = new Date(1262275200L);

try
{
    getConnection();
    IndexedSlicesQuery<String, String, String> indexedSlicesQuery = HFactory.createIndexedSlicesQuery(keyspace, ss, ss, ss);
    indexedSlicesQuery.setColumnNames("name");          
    indexedSlicesQuery.addLtExpression("timestamp", ByteBufferUtil.string(date_s.toByteBuffer(date)));
    indexedSlicesQuery.addEqualsExpression("searchall", ByteBufferUtil.string(bs.toByteBuffer(true)));
    indexedSlicesQuery.setColumnFamily(column_family);
    indexedSlicesQuery.setStartKey("");
    System.out.println(indexedSlicesQuery.toString());
    QueryResult<OrderedRows<String, String, String>> res = indexedSlicesQuery.execute();


    List<Row<String, String, String>> list = res.get().getList();
    for (Row<?, ?, ?> row : list)
    {
        System.out.println(row.getKey());               
    }

}
Run Code Online (Sandbox Code Playgroud)