我想从C/C++代码中灵活地访问动作捕捉数据。我们目前有一堆独立的文件(.c3d格式)。我们预计完整的数据集将持续几个小时,每帧跟踪大约50个标记(每个标记4个浮点数),以60赫兹采样。因此,我们可能会处理几千兆字节的数据。
我希望有一个数据库能够存储这些数据,使其能够相对快速地检索、增强和修改。我希望能够为数据添加标签,并通过标签、时间索引(例如,第400到2000帧,或每30帧)或其他可能的标准来检索帧序列。
这样的东西已经存在吗?我可以用SQLite来实现吗?有人对可能的性能有直觉吗?
目前,我只是每次加载一个.c3d文件并处理它。我还没有开始对序列应用元数据/标签。我将访问这些序列用于可视化、统计分析和机器学习训练。
回答:
如果你需要存储多千兆字节的已知模式数据,你可能需要考虑使用二进制平面文件数据库。在可用的选项中,我推荐HDF5。它不是像SQLite那样的关系数据库,但为数组和矩阵数据提供了丰富的支持,性能也非常出色。它还包括MPI支持,如果你将来将机器学习扩展到集群上。