我知道有几个类似的问题,但我找不到能解决我特定问题的问题:
我需要在服务器中为我正在开发的游戏保存一些数据 每个用户将在请求后保存一个二进制文件并保留一段时间 该文件可以是一堆字节到大约50kb之间的东西。
许多问题(主要是关于图像)都说使用文件系统,因为该文件可以作为静态内容提供。在这种情况下,这是不可能的,因为我将不得不检查我正在将该文件发送给正确的用户,并且我还需要一些逻辑只有当用户已经拥有的文件时才返回该文件。
我应该将该文件保存在数据库中还是文件系统中?
注意:服务器将托管在Linux上,而DB可能会由MySQL托管。
谢谢!
答案 0 :(得分:3)
我担心你没有提供足够的信息来正确回答你的问题。如果我“天真地”阅读你的问题,你所要做的就是编写一个保存游戏系统。
在这种情况下,文件系统就是您所需要的。 DB适用于存储您要搜索,求和,组合和索引的结构化数据,而不是用于存储任意一堆小blob。
现在,如果还有其他要求,例如,你正在编写一个基于网络的游戏,将所有玩家的数据存储在一个中心位置,答案可能会有所不同(同样,你需要提供更多细节)关于你在做什么,但是)
答案 1 :(得分:1)
我建议通过Microsoft研究阅读this whitepaper(对BLOB或不对BLOB:数据库或文件系统中的大对象存储)(它处理SQL Server 2005)。
结论是 - 如果文件低于250kb,请使用DB存储它们
实质上, 文件系统似乎有更好的碎片处理 而不是数据库,这推动了盈亏平衡点 从大约1MB到大约256KB。
当然,您应该测试自己的数据库和操作系统。
答案 2 :(得分:0)
我认为您可以使用某种数据库。文件系统很慢,导致它进入硬盘,移动头找文件。使用db,访问速度更快。如果您的服务器托管在Windows上,则可以使用微软数据库访问,这种操作很少而且速度很快。