如何使用Cassandra和Ignite一起建模数据?

问题描述 投票:0回答:1

我正在研究如何模拟同时具有Cassandra和Ignite的数据。到目前为止,Cassandra(来自this article)的数据建模的基本建议很明确:“围绕您的查询的模型数据”。作者给出了“用户查找”的示例。我们希望通过用户名或电子邮件查找用户,根据他的说法,最好的方法是使用两个表:

CREATE TABLE users_by_username (
    username text PRIMARY KEY,
    email text,
    age int
)

CREATE TABLE users_by_email (
    email text PRIMARY KEY,
    username text,
    age int
)

然而,事情让Cassandra顶部的Ignite感到困惑。很遗憾,我找不到任何有用的示例或以下问题的答案:

  1. 有多个存储用户信息的表意味着每个表都有Ignite缓存吗?
  2. 复合主键是否意味着为每个键引入新类型并将其用作Ignite缓存键?
  3. 拥有Ignite意味着没有从Cassandra直接读取。在NoSql最佳实践之后,它是否会使场景打扰建模数据?只有一个用户表并让Ignite通过用户名或电子邮件处理查询是否可以。
CREATE TABLE users (
    id uuid PRIMARY KEY,
    username text,
    email text,
    age int
)
cassandra nosql ignite key-value-store
1个回答
1
投票
  1. 每个Cassandra表可能应该有一个缓存。
  2. 如果你的原始密钥是复合的,那么Ignite键也应该是复合的。
  3. 您需要在Ignite中使用二级索引来通过多个字段进行查询,这意味着您必须在Ignite中保存所有数据(这对于纯缓存方案不是必需的)。这意味着启用readThroughwriteThrough,执行loadCache并始终通过Ignite进行所有更新。您必须在“Ignite as Cassandra缓存”(坚持使用Cassandra的数据布局,可以保存部分数据)和“Ignite as Cassand Cassandra”(您可以使用Ignite最佳布局,二级索引)之间进行选择。
© www.soinside.com 2019 - 2024. All rights reserved.