我的cassandra表定义如下:
Create table userInfo( mandatory_info1 int PRIMARY KEY; mandatory_info2 float; mandatory_info3 int; additional_info1 int; additional_info2 String; additional_info3 double; );
这里有3个additional_info字段将用于某些特定用户。
我想使用blob类型的单个字段来存储此附加信息。(这些字段的名称对于普通用户来说似乎很奇怪)。所以,我的表定义如下:
Create table userInfo( mandatory_info1 int PRIMARY KEY; mandatory_info2 float; mandatory_info3 int; additional_info blob; );
我创建了以下java类,它将包含其他信息:
class Additional_Info{ private int additional_info1; private String additional_info2; private double additional_info3; //setter and getter method goes here }
然后我可以通过序列化Additional_Info类型的对象将用户的附加信息放在blob字段中。而且 反序列化此blob字段可以重新获取其他信息。
但是,如果我在班上添加另一个addition_info(比如:additional_info4)。我的班级变得与之不相容 先前插入的blob值。结果我无法检索以前的记录(发生java.io.InvalidClassException)。如果这也会发生 member varibles此类的名称已更改。
是否有其他最佳方法可以在cassandra DB中存储添加字段(而不是为每个字段使用不同的列 附加领域)。如果不是,我怎样才能克服上述问题。