我读了很多关于Cassandra以及在编写数据时反规范化和物化的艺术的文章。我想我理解了这个概念,而且它似乎是有道理的。然而,在存在深层分层数据结构的情况下,我在实现它时遇到了一些问题。
考虑人为设计的域,其中
所有者1:*公司
Company 1:\* Teams
Team 1:\* Players
Players 1:\* Equipment
我们为这些实体中的每个实体都有表,但是我们还想按所有者快速查询设备属性,因此似乎要做的是创建一个表(OwnerEquipment),该表将所有者id和设备id作为主键,所有者id作为分区键。这是有道理的,但是如果添加和编辑设备的UX场景不包括所有者的
我一直在评估Cassandra在我们的微服务环境中取代MySQL,因为MySQL是基础设施中唯一非分布式的部分。我们的需求是读写密集型的,因为它是一个交换原始数据的平台。一种“公交车”,因为缺乏更好的描述。我们的select相当简单,应该保持这种方式,但由于select查询的极端限制,我已经在努力通过一些基本的过滤。
例如,如果我需要过滤数据,它必须在key中。在这一点上,我不能更改字段中的数据,因为它们是键的一部分。我可以使用SASI索引,但是如果我需要过滤多个字段,我就会遇到麻烦。我希望物化视图能对此有所帮助,但在另一篇文章中,由于一些不稳定和有问题的行为,我被告知要避免使用物化视图。
C
我正在尝试对Cassandra中的列族进行部分搜索,类似于SQL查询: SELECT * FROM columnfamily WHERE col = ' val*‘,其中val*表示匹配至少前三个字符'val’的任何值。
我已经阅读了SELECT函数上的,但似乎找不到任何对部分WHERE条件的支持。有什么想法吗?
我有一个具有字段userid、name、gender、email、status的列族。其中,userid、email是主键。
我已经在类型为tinyint的status上创建了二级索引。
CREATE CUSTOM INDEX users_status_idx ON custom.users (status) USING 'org.apache.cassandra.index.sasi.SASIIndex';
状态值持续更新(每天2000万条记录)。
启动程序时,从数据库中检索数据需要0秒。随着时间的增加,检索数据所需的时间也会增加。
在这种类型的字段(状态)上建立索引的最佳方
我几天前听说了cassandra数据库引擎,正在搜索关于它的好文档。通过对cassandra的研究,我发现cassandra比其他数据引擎更具扩展性。我也在亚马逊SimpleDB上读过,但由于SimpleDB有10 as /表的限制,而且谷歌数据存储比亚马逊SimpleDB慢,所以我不喜欢使用它们(谷歌数据存储,亚马逊SimpleDB)。因此,为了使我们的站点具有特别高的写入速率和海量数据,我喜欢使用Cassandra作为我们的数据引擎。
但在开始使用cassandra之前,我对“如何使用cassandra处理复杂数据”感到困惑。我给你下面的MySQL数据库结构,请阅读这篇文章并给我一个好的建