我正在研究如何对同时具有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混淆了。不幸的是,我找不到任何有用的示例或以下问题的答案:
CREATE TABLE users (
id uuid PRIMARY KEY,
username text,
email text,
age int
)
答案 0 :(得分:1)
每个Cassandra表可能应该有一个缓存。
如果您的原始密钥是复合密钥,那么Ignite密钥也应该是复合密钥。
您将需要在Ignite中使用二级索引来按多个字段进行查询,这意味着您将必须在Ignite中保存所有数据(这对于纯缓存方案而言不是必需的)。这意味着启用readThrough
和writeThrough
,执行loadCache
,并始终通过Ignite进行所有更新。您将不得不在“将点燃作为Cassandra的缓存”(遵循Cassandra的数据布局,可以保存部分数据)和“点燃作为由Cassandra支持的数据库”之间进行选择(您可以对Ignite的二级索引使用最佳布局)。