【问题标题】:How to model data using Cassandra and Ignite together?如何一起使用 Cassandra 和 Ignite 对数据进行建模?
【发布时间】:2019-03-28 06:32:45
【问题描述】:

我正在研究如何对同时使用 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. 每个 Cassandra 表可能应该有一个缓存。

    2. 如果您的原始钥匙是复合钥匙,那么点燃钥匙也应该是复合钥匙。

    3. 您将需要在 Ignite 中使用二级索引来查询多个字段,这意味着您必须在 Ignite 中保存所有数据(这对于纯缓存场景不是必需的)。这意味着启用readThroughwriteThrough,执行loadCache 并始终通过Ignite 执行所有更新。您将不得不在“Ignite 作为 Cassandra 的缓存”(坚持 Cassandra 的数据布局,可以保存部分数据)和“Ignite 作为 Cassandra 支持的数据库”(您可以使用最适合 Ignite 的布局,二级索引)之间进行选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-26
      • 2016-03-17
      • 1970-01-01
      • 2021-06-29
      • 1970-01-01
      • 2020-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多