Cassandra存储和查询动态(用户定义)数据

时间:2015-02-18 10:07:24

标签: cassandra cassandra-2.0

我们一直在研究使用Cassandra将一些较大的数据存储在我们正在构建的多租户系统中。使用Cassandra的决定主要与使用大型数据集时的扩展功能和性能有关,但我不确定我们在Cassandra中寻找的是否可行,所以我希望有人有一些关于是否有线索的线索(以及如何)这可以做到:

我们正在寻找一种方法来为我们的用户提供首先定义他们自己的实体类型,然后在这些实体(和字段类型)中定义字段。一旦他们定义了这个,他们的数据(与他们刚创建的定义相匹配)就可以导入,存储,并且最重要的是他们定义的任何字段都可以查询。

例如,我们可能有一个用户定义了飞机,该飞机具有制造商名称,型号,尾号,生产年份等......

然后,他们的数据将包含这些字段,可以通过这些字段进行搜索和排序等。

另一个用户可能决定定义一个Boat,然后可以有不同的字段,这些字段也应该可以按内容进行排序和搜索。

由于可能的条目数量 - 典型的关系方法不太可能产生足够的性能,因此我们正在研究noSQL方法。

这可以在C *中完成吗?或者是否存在可提供最佳灵活性的存储引擎方面的其他建议?

1 个答案:

答案 0 :(得分:1)

我可以在您的要求中看到两个重点

  • 动态类型/无模式数据:Cassandra定义数据如何像关系数据库一样构建。然而,您可以使用复杂类型的列:map ...
  • 按任意字段查询:Cassandra要求每个查询提供分区ID。 Cassandra数据模型由查询驱动,如果您事先不知道您的查询,则无法设计合适的模型,并且您无法查询它。

我建议你看一下Elasticsearch。 然后,如果你因为其他原因必须使用Cassandra,那么我建议你看一下与SolR和Spark集成的Cassandra的DataStax企业版:两者都会为你提供额外的查询功能。