Sqlite和浮点数组



对关系数据库和sqlite相当陌生。但是我很好奇,在SQLite中,什么是最好的方法来表示每个项目/行的真实列表。

我有几个项目X;包含100 -100,000个项目。x中的每个项x都有一个核心属性,它是一个浮点数对列表(例如{{100,1.2},{101.1,234.3},…, {20000, 90}};通常包含10s-1000s对浮点数)。

我的第一个想法是使用blob。但是这使得读取这些浮点数对变得很困难(使用一些通用的sqlite查看器,我还没有意识到)。我还想通过这些浮点数对的值来查询。是否有一种方法来解析blob并在查询期间使用它们?我还怀疑使用blobs进行大/小端二进制编码会有问题。X = [prim_key, blob]

第二个想法是将它们表示为字符串。这使得它更容易阅读,但可能不那么紧凑。X = [prim_key, " 100,1.2, 101.1, 234.3,…]"]

第三种方法是"规范化"并在一个单独的表中表示这些浮点数,参照主键。这看起来很尴尬,为特定x收集这些浮点数的速度较慢,并且空间浪费,因为每个浮点对必须与引用主键值相关联。但是这将允许我使用浮点数对进行查询。

x_float_pairs = [prim_key_ref, 100,1.2;Prim_key_ref, 101.1, 234.3;…]

第四个是创建一个表来包含每个项x的浮点数对;可能是最糟糕的主意,对吧?

有什么建议吗?

如果您决定使用SQLLite,我倾向于使用规范化方法。当你有索引时,查找行是非常快的。这就是SQL数据库所支持的范式。

如果你有更多的灵活性,那么你可能会考虑使用blob存储,这将允许你作为一个集合检索行。在不了解更多关于如何访问数据的计划的情况下,很难推荐一个在所有情况下都有效的策略。

相关内容

  • 没有找到相关文章

最新更新