构造用于高速查询的cassandra表

nimxete2  于 2021-06-13  发布在  Cassandra
关注(0)|答案(1)|浏览(183)

我们正在研究使用cassandra存储临床试验数据。数据基本上是氧饱和度和呼吸率(以及其他一些东西)。我们还需要存储患者标识符、就诊代码和设备代码。我们希望只需要按唯一的患者/就诊检索数据。然而,每个病人可能有500000多个记录。可能有1000个病人和100个医疗设施。我的问题涉及表的设计,以确保快速检索数据:

Create table OxygenSats
    (
        facility int,
        visit text,
        pat_id text,
        probe_id text
        event timestamp,
        oxygen float,
        resp int,
        Primary key((facility, visit), pat_id)
    );

因此,我认为数据将聚集在pat\u id上,并在(facility,visit)上进行分区。是这样吗?阅读速度非常重要。我们需要按患者选择(基本上是设施、就诊、患者)并按日期筛选。
对于我们正在处理的数据类型,这是一种最佳的方法吗?感谢您的指导/建议。
我们需要的查询相当简单-我们只需要选择患者的所有数据(按日期筛选也很有用):

select oxygen, resp from OxygenSats where facility = '1', and visit = '1' and pat_id = '22'
vi4fp9gy

vi4fp9gy1#

您的想法是正确的,它是在(设施,就诊)的组合键上分区的,并在patïid上聚集的。这里就诊的唯一性是关键的,但没有指定,现在我们无法判断患者每次就诊的就诊是否是全局唯一的。有关select查询的更多详细信息也很有用,它们是包括范围查询还是只包括点查询?
您可以使用nosqlbench github repo和docs对其进行基准测试—这将使您在使用之前对性能有一个很好的了解。
建议的分区大小上限是100MB,因此可以围绕每个分区的数据大小和记录数进行一些计算,以确定密钥是否会导致分区大小问题。

相关问题