我正在为使用 Cassandra 作为数据库系统的 CMS 编写代码。
CMS 的优势之一是使用后端计算机预先计算各种事物,该后端计算机针对 CMS 中更改的数据永久运行。
例如,CMS 告诉列表系统页面已创建或更改。列表系统将该信息保存在名为 的表中list
。该信息只是一个衬里,它告诉我必须处理哪个页面。
Column family: list
Row: concerned website (i.e. http://www.example.com/)
Column: full URI (i.e. http://www.example.com/this/page)
Value: true (because you need something for the column to exist)
偶尔(通常在简单的页面编辑后不到一秒钟),该列表后端系统会唤醒并看到某个页面已更改并通过更新所有包含(或不再包含)的列表开始处理它该页面作为一个元素。这允许前端立即知道列表中的元素数量并非常快速地读取列表,而无需在需要列表时运行复杂的查询(与许多 CMS 使用 SQL 所做的相反......)
实际上,我使用该list
表作为 TODO 列表。我必须处理的一组页面。因此,前端将页面引用添加到该列表,而后端在完成后将其删除。list
结果,我可以在表中得到大量的墓碑。现实世界的影响:我有墓碑故障,系统开始随机出现故障。一旦列表停止工作,系统中的许多其他东西就会停止工作,网站就会变得无法使用。
我减少了 Cassandra 处理该特定表(以及其他一些表)中墓碑的时间,但我想知道我是否按预期使用 Cassandra。在这种环境中是否有更好的方法来处理这种 TODO 列表?
附带说明:TODO 列表可以在各种不同的后端计算机上处理。在小型系统上,您可能只有一个后端针对列表数据运行,而在拥有数千名用户的大型系统上,您不太可能有 2 或 3 个后端来处理列表。因此,在 Cassandra 中存储数据对于在计算机之间快速共享数据非常实用。