3

由于我长期使用传统的关系数据库,迁移到 nosql,尤其是 Cassandra,是一个很大的变化。我通常设计我的应用程序,以便在启动时将数据库中的所有内容加载到应用程序的内部缓存中,如果数据库表有任何更新,其相应的缓存也会更新。例如,如果我有一个表Student,在启动时,该表中的所有数据都会加载到StudentCache中,当我想插入/更新/删除时,我会调用一个同时更新它们的服务。我设计的目的是防止直接从数据库中选择。

在 Cassandra 中,由于其想法是构建包含所有需要的数据的表,以便无需连接,我想知道我最喜欢的设计是否仍然有用,或者在需要时直接从数据库(即从一个表)查询数据是否更有效.

4

2 回答 2

3

根据您描述的用例,我会说根据需要查询数据可以防止存储您不需要的数据,如果您的数据集是 5Gb 怎么办?你还要加载整个数据集吗?

也许考虑一种设计,您不会在启动时加载所有数据,而是根据需要加载它,然后存储它并在再次查询之前检查这个存储,就像缓存一样

Cassandra 是为扩展而构建的,您的设计无法处理扩展,您将达到数据集太大的地步。基于此,您应该考虑权衡。大量即时查询与将所有内容存储在客户端中。我建议直接查询,但是在执行查询时存储数据,不要丢弃它然后再次执行相同的查询!

于 2013-07-08T08:15:39.550 回答
1

我建议直接查询数据,因为将所有数据保存到应用程序会使应用程序的性能基于输入。现在,如果您知道数据量永远不会超过目标机器的内存,这可能是一件好事。

但是,如果您决定更改此限制(更高!),您将面临问题。当涉及到搜索时,采用这种方法会很快(假设您在开始时对结果进行排序),但几乎会破坏可维护性。

但是,如果您为此选择,以前最喜欢的“方法”仍然有用。

于 2013-07-07T20:59:42.210 回答