GVKun编程网logo

使用Hector在Cassandra中查询CompositeType列(cassandra查询语句)

12

在本文中,我们将带你了解使用Hector在Cassandra中查询CompositeType列在这篇文章中,我们将为您详细介绍使用Hector在Cassandra中查询CompositeType列的方

在本文中,我们将带你了解使用Hector在Cassandra中查询CompositeType列在这篇文章中,我们将为您详细介绍使用Hector在Cassandra中查询CompositeType列的方方面面,并解答cassandra查询语句常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的@ManyToMany CascadeType.ALL 时,save报detached entity passed to persist、@types/passport version 1.0.5 生成新错误:Type Authenticator does not meet the constraint IncomingMessage、Cassandra使用PHP SimpleCassie获取所有密钥、Cassandra分页:如何使用get_slice使用cql库从Python查询Cassandra 1.2数据库

本文目录一览:

使用Hector在Cassandra中查询CompositeType列(cassandra查询语句)

使用Hector在Cassandra中查询CompositeType列(cassandra查询语句)

这是我面临的场景的一个示例。说我有这个专栏家庭:

    create column family CompositeTypeCF     with comparator = ''CompositeType(IntegerType,UTF8Type)''     and key_validation_UTF8Type''     and default_validation_UTF8Type''

这是一些使用Hector的示例Java代码,用于说明如何将一些数据插入此列系列:

 Cluster cluster = HFactory.getOrCreateCluster("Test Cluster", "192.168.1.6:9160"); Keyspace keyspaceOperator = HFactory.createKeyspace("CompositeTesting", cluster); Composite colKey1 = new Composite(); colKey1.addComponent(1, IntegerSerializer.get()); colKey1.addComponent("test1", StringSerializer.get()); Mutator<String> mutator = HFactory.createMutator(keyspaceOperator, StringSerializer.get()); Mutator<String> addInsertion = mutator.addInsertion("rowkey1", "CompositeTypeCF",     HFactory.createColumn(colKey1, "Some Data", new CompositeSerializer(), StringSerializer.get())); mutator.execute();

这有效,如果我转到cassandra-cli并列出列表,则会得到以下信息:

$ list CompositeTypeCF;Using default limit of 100-------------------RowKey: rowkey1=> (column=1:test1, value=Some Data, timestamp=1326916937547000)

我现在的问题是:如何在赫克托尔中查询该数据?基本上,我需要以几种方式查询它:

  1. 给我整行,其中行键=“ rowkey1”
  2. 给我列数据,其中列名的第一部分=一些整数值
  3. 给我所有列名称的第一部分在一定范围内的列

答案1

小编典典

好的起点教程在这里。

但是,在最终需要使用复合组件并尝试针对数据编写查询之后,我想出了一些我想共享的东西。

搜索复合列时,结果将是连续的列块。

因此,假设由3个字符串组成,我的列如下所示:

A:A:AA:B:BA:B:CA:C:BB:A:AB:B:AB:B:BC:A:B

对于从A:A:A到B:B:B的搜索,结果将是

A:A:AA:B:BA:B:CA:C:BB:A:AB:B:AB:B:B

注意“ C”组件吗?开始/结束词中没有“ C”组件!是什么赋予了?这些都是A:A:A和B:B:B列之间的所有结果。 Composite搜索项 不会
像处理嵌套循环那样提供结果
(这是我最初的想法),而是 由于对列进行了排序,因此您要为连续的column块指定开始项和结束项

构建复合搜索条目时,必须指定ComponentEquality

仅最后一项应为GREATER_THAN_EQUAL,其他所有则应为EQUAL。例如以上

Composite start = new Composite();start.addComponent(0, "A", Composite.ComponentEquality.EQUAL);start.addComponent(1, "A", Composite.ComponentEquality.EQUAL);start.addComponent(2, "A", Composite.ComponentEquality.EQUAL);Composite end = new Composite();end.addComponent(0, "B", Composite.ComponentEquality.EQUAL);end.addComponent(1, "B", Composite.ComponentEquality.EQUAL);end.addComponent(2, "B", Composite.ComponentEquality.GREATER_THAN_EQUAL);SliceQuery<String, Composite, String> sliceQuery = HFactory.createSliceQuery(keyspace, se, ce, se);sliceQuery.setColumnFamily("CF").setKey(myKey);ColumnSliceIterator<String, Composite, String> csIterator = new ColumnSliceIterator<String, Composite, String>(sliceQuery, start, end, false);while (csIterator.hasNext()) ....

@ManyToMany CascadeType.ALL 时,save报detached entity passed to persist

@ManyToMany CascadeType.ALL 时,save报detached entity passed to persist

一、有2个实体,用户,角色、用户-角色中间表。关系如下:

public class User{
	@ManyToMany(cascade = CascadeType.ALL)
	@JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id"))
	private Set<Group> groups = new HashSet<Group>();
	//省略 getter、setter
}

二、保存数据User代码如下:

User user = new User();
Group g = groupRepo.findById(8);//数据库查询
Set gruops = new HashSet<Group>();
gruops.add(g);
user.setGroups(gruops);
userRepo.save(user);

userRepo.save(user);保存数据时会出现错误detached entity passed to persist

  • 错误原因: 保存user时想去级联保存gruops。但是gruop已经有id值了。所以报错。
  • 解决方案,把user.setGroups(gruops);放到保存user之后。如下:
User user = new User();
userRepo.save(user); //先保存user

Group g = groupRepo.findById(8);//数据库查询
Set gruops = new HashSet<Group>();
gruops.add(g);
user.setGroups(gruops); //再设置groups
userRepo.save(user); //最后更新user

@types/passport version 1.0.5 生成新错误:Type Authenticator does not meet the constraint IncomingMessage

@types/passport version 1.0.5 生成新错误:Type Authenticator does not meet the constraint IncomingMessage

也许身份验证器界面发生了变化? 你说的话!? 是的 - 界面更改,版本号仅略有更改!!!

我认为 koa-passport 的 serializeUser 界面可能与对 Passport 所做的更新不同步...在我的世界中 - 界面的重大更改通常意味着主要版本更改。

Passport V1.0.4 以下允许使用通用TUser

serializeUser(fn: (user: TUser,done: (err: any,id?: TID) => void) => void): void;

现在使用护照 V1.0.5,界面更改为限制为 Express.User。 serializeUser(fn: (user: Express.User,id?: TID) => void) => void): void;

Cassandra使用PHP SimpleCassie获取所有密钥

Cassandra使用PHP SimpleCassie获取所有密钥

是否可以使用SimpleCassie获取列族中的所有键?
我查看了SimpleCassie的谷歌代码,但不明白.

另一个问题是我使用以下代码来访问列值.

$price = $cassie-> keyspace(‘ToyStore’) – > cf(‘Toys’) – > key(‘Transformer’) – > column(‘Price’) – > get();

echo $price;

它总是抱怨“cassandra columnorsupercolumn的对象不能转换为字符串”.
是否可以打印出列值?

解决方法

您应该使用get_range_slices,以“”开头,并在每次调用后使用最后一个键作为下一次调用的开始键(免责声明:尚未使用SimpleCassie测试此项)

如何在列族中对列进行排序? LongType的价格?

有效的’compare_with’值是(来自cassandra.yaml):“AsciiType,UTF8Type,LexicalUUIDType,TimeUUIDType,LongType,和IntegerType(通用可变长度整数类型)

Cassandra分页:如何使用get_slice使用cql库从Python查询Cassandra 1.2数据库

Cassandra分页:如何使用get_slice使用cql库从Python查询Cassandra 1.2数据库

我有一个Cassandra
1.2集群,并且正在使用cql库从Python使用它。现在,我需要使用get_slice实现一些分页功能,这些功能似乎非常简单,但是我无法从cql库中找到任何有关如何使用这种功能的文档:

get_slice("key" : table_key,"column_parent" : {"column_family" : "MyColumnFamily"},"predicate" :
       { "slice_range" : 
 { "start" : "SomeStartID","end" : "Z","reverse" : "false","count : "100" }
 } )

我已经在get_slice的随机文档中看到了这种类型的语法,它看起来不像CQL 3语法,如何从Python到Cassandra
1.2集群运行这种类型的查询?,这是当前使用get_slice的方式吗?还是有新的语法或CQL 3替代方案?

提前致谢!

今天关于使用Hector在Cassandra中查询CompositeType列cassandra查询语句的讲解已经结束,谢谢您的阅读,如果想了解更多关于@ManyToMany CascadeType.ALL 时,save报detached entity passed to persist、@types/passport version 1.0.5 生成新错误:Type Authenticator does not meet the constraint IncomingMessage、Cassandra使用PHP SimpleCassie获取所有密钥、Cassandra分页:如何使用get_slice使用cql库从Python查询Cassandra 1.2数据库的相关知识,请在本站搜索。

本文标签: