我要开始一个大的3D模型化项目,我需要选择一个系统来存储我的数据。在我的引擎处理之前,原始格式的3D模型由数十亿个彩色三角形组成。 输入: - 每个3d模型将包含大量的三角形(3个空间点(bigint x,y,z)和颜色(rgb))。 - 如果INSERT速度慢,这不是什么大问题,但是SELECT必须尽可能快(SELECT有一些线性的WHERE条件)。 - 数据一致性并不重要,如果我在模型中丢失了一个三角形或两个不太成问题的数据。 - 我可以为每个对象创建一个表,所以我可以使其成为只读,并且可以在其上放置一些列索引(RDMS)。选择NOsql或RDMS,以及哪个DataStructure?
有我的问题: 数据结构: 许多三角形将共享相同的点。我是否应该将三角形保存在一个表中,如id x1,y1,z1 x2,y2,z2 x3,y3,z3,r,g,b;或者一个用于点id,x,y,z和一个三角形表的表格,dot1Id,dot2Id,dot3Id,r,g,b(我认为在亿行上的连接会很慢,而且对于NOsql,我们甚至不能如果我的记忆力不错,请加入...)
RDMS或NOsql? 我认为NOSQL对我所需要的产品很好,它是否能够快速有条件地选择非常大的数据? RDMS可以很好,因为我的数据格式很好,由整数组成,索引可以在这里做魔术。
我的3D模型将适用于像房屋,酒店这样的大型环境......因此,我经常会加载模型的一些三角形(前者为公寓房间),这就是为什么我需要过滤数据这可以使用DMS更快地完成。有时我的服务器会接收数据来更新3D模型,那么我将不得不进行一些搜索来查找哪些三角形需要拆分或合并,在内存中加载500MB文件并每次搜索都会很痛苦。 – user2425133
啊,好吧,所以有更多的关系。房子,公寓,公寓的房间...然后是的,当然你可以使用dbms来存储这些关系。听起来像是个好主意:-)然而,三角形集仍然可以以二进制格式存储(在表格列或文件中)。至少在我看来,如果让数据库知道三角形的坐标是什么,那么它一无所获。 RDBMS可以完成这项任务。至于NoSQL,我不知道,没有经验。关于更新:加载一个房间的二进制数据,改变它,并再次存储新的二进制文件。 –
对不起,我没有详细解释结构。我的3D模型非常庞大,例如整个房子,但我不知道制造房间或起居室的部分,这是一切的一个大模型。我谈到了房间,因为最终用户将使用web界面在模型中导航,所以我的服务器不会仅仅将十亿个三角形发送给WebGl,它只会发送应该可见的部分,因此数据库需要知道协调,这样我可以,只需一个线性条件Where,选择可见的三角形通过网络发送。 – user2425133