【问题标题】:Cassandra store and query dynamic (user defined) dataCassandra 存储和查询动态(用户定义)数据
【发布时间】:2015-04-19 06:56:40
【问题描述】:

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

我们正在寻找一种方法,让我们的用户首先定义他们自己的实体类型,然后在这些实体(和字段类型)中定义字段。一旦他们定义了这一点,他们的数据(与他们刚刚创建的定义相匹配)就可以被他们定义的几乎所有字段导入、存储和最重要的查询。

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

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

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

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

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

【问题讨论】:

    标签: cassandra cassandra-2.0


    【解决方案1】:

    我可以看到您的要求中有两点很重要

    • 动态类型/无模式数据:Cassandra 定义了数据的结构方式,类似于关系数据库。但是您可以使用复杂类型的列:map...
    • 按任何字段查询:Cassandra 要求每个查询都提供分区 ID。 Cassandra 数据模型是由查询驱动的,如果事先不知道自己的查询,就无法设计出合适的模型,也就无法查询。

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

    【讨论】:

    • 感谢您的回答。我们没有必须使用 Cassandra,我们正在寻找满足我们要求的最佳解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    • 2015-06-09
    • 2019-03-17
    • 1970-01-01
    • 2018-06-11
    • 1970-01-01
    • 2012-07-01
    相关资源
    最近更新 更多