我们正在为验证系统开发生物特征匹配解决方案。正如您可能知道的,生物特征数据的一个主要问题是它们是非结构化的二进制文件,每个生物特征细节都必须与整个细节数据库匹配。
因此,我们正在寻找一种快速和适当的解决方案,以消除物理硬盘上的二进制检索(I/O)延迟,并通过使所有二进制记录都可用于新的匹配请求来减少开销。
目前,我们的解决方案是使用内存中的数据库,比如带有缓存机制的Redis。这个解决方案的问题是,如果生物特征二进制位的数量如此之多,内存(RAM)的大小就会变得非常大。我们正在寻找一种解决方案,使所有二进制文件都可以用于我们的匹配应用程序。
请注意,通常每一个生物特征细节都小于5KB,我们有数百万的生物特征细节记录。
发布于 2020-07-23 13:18:41
您可以使用内存中的数据库和基于磁盘的DB组合来存储数百万的细节.
您可以将所有细节存储在任何基于磁盘的DB中,如MySQL、PostgreSQL或任何其他。
细节数据将分布在三个不同的数据存储区。
本地cache)
)
假设在您的设置中使用了Redis和MySQL。
您的代码应该首先搜索应用程序缓存中的细节,如果找不到它,则应该在Redis中搜索,以查看它是否可用,如果您在那里找到了,那么获取它,并将其存储在本地缓存中,其中包含过期。
即使Redis中没有可用的数据,您也应该在MySQL数据库中搜索并带回它。如果您发现了,那么您应该将相同的数据存储在带到期的Redis 中。
使用期满时,您可以避免同时将所有对象存储在内存中。
假设现在你不想使用到期,因为你总是需要所有的细节。在这种情况下,可以增加Redis实例的大小,也可以使用Redis集群。作为替代,IMDG (内存中的数据网格)(如Hazelcast、Apache等)可用于存储所有细节。如果您不喜欢使用这样复杂的设置,那么您应该考虑使用内存中的数据库,如Sap、MemSQL等。
https://stackoverflow.com/questions/63039204
复制相似问题