我有一个收集Posts和Users用户可以给予好评/ downvote每个岗位.将此存储在mongodb数据库中以确保用户不能多次为给定文档投票的最佳方法是什么?
我想出了被存储user_ids数组每个谁投里面最简单的NoSQL上下的解决方案Post的文件(甚至阵列的(user_id, vote)地方vote是+1或-1,这样用户就可以改变他们的投票).从表现的角度来看这是一个好主意,因为每个帖子都有数千张选票吗?
那些真正受欢迎的网站如Reddit,哪些热门帖子可以有数十万票?
我正在Groovy开发游戏,我正在考虑广泛使用闭包来使架构更清洁.例如,要实现状态效果(例如中毒),Player对象将具有执行每个游戏回合的闭包列表.保存游戏时必须将这些序列化.
将闭包存储在需要序列化的对象中通常是个好主意吗?或者我应该选择更传统的架构(例如存储StatusEffect对象列表)?
我有大约8000万个文档的集合,每个文档都在tags现场存储一系列标记,例如:
{text: "blah blah blah...", tags: ["car", "auto", "automobile"]}
Run Code Online (Sandbox Code Playgroud)
该字段tags已编入索引,因此像这样的查询几乎是即时的:
db.documents.find({tags:"car"})
Run Code Online (Sandbox Code Playgroud)
但是,以下查询都非常慢,需要几分钟才能完成:
db.documents.find({tags:{$all:["car","phone"]}})
db.documents.find({tags:{$in:["car","auto"]}})
Run Code Online (Sandbox Code Playgroud)
即使阵列只有一个项目,问题仍然存在:
db.documents.find({tags:{$all:["car"]}}) //very slow too
Run Code Online (Sandbox Code Playgroud)
我认为$ all和$ in应该能够非常快速地工作,因为它tags被编入索引,但显然事实并非如此.为什么?
假设我LuaRuntime使用register_eval=False和创建一个attribute_filter阻止访问除了一些python函数之外的任何东西.假设lua代码无法做到os.system("rm -rf *")或类似的事情是否安全?