我一直在阅读一些关于数据库优化和最佳实践的指南,其中很多建议不要在数据库模式中使用布尔标志(例如http://forge.mysql.com/wiki/Top10SQLPerformanceTips).然而,他们从来没有提供任何理由说明为什么这是坏事.这是性能问题吗?是否很难正确索引或查询?
此外,如果布尔标志不好,您应该使用什么来在数据库中存储布尔值?将布尔标志存储为整数并使用位掩码是否更好?这似乎不太可读.
我在猫鼬中有以下架构:
UserSchema = new Schema
username: {type: String, required: true}
GameSchema = new Schema
identifier: String
users: [UserSchema]
Run Code Online (Sandbox Code Playgroud)
我想确保游戏中的每个用户都有一个唯一的用户名。但是,如果我添加
unique: true
Run Code Online (Sandbox Code Playgroud)
对于用户名定义,它似乎在所有游戏中强制执行唯一性,而不仅仅是在用户所在的游戏中。此外,如果我有 1 个以上没有用户的游戏,则会出现以下错误:
games.$users.username_1 dup key: { : null }
Run Code Online (Sandbox Code Playgroud)
我尝试向用户名字段添加自定义验证器以手动检查该用户名是否已在父游戏的范围内使用,但在猫鼬中,验证器功能仅接收用户名的实际字符串,所以我没有任何办法检查用户名在游戏中是否唯一,因为我无法在验证器函数中获得对父游戏文档的引用。
有没有办法在猫鼬中完成这种验证?
我有一个Android应用程序使用Robospice与Jackson + Spring来执行REST请求.这是有效的,除了Robospice似乎没有缓存响应.我还确保缓存密钥在请求之间保持一致.
我正在设置像这样的SpiceManager:
private SpiceManager mRestManager = new SpiceManager(JacksonSpringAndroidSpiceService.class);
Run Code Online (Sandbox Code Playgroud)
然后,我正在执行这样的请求:
mRestManager.execute(customSpiceRequest, requestCacheKey,
DurationInMillis.ALWAYS, new CustomRequestListener())
Run Code Online (Sandbox Code Playgroud)
我不知道它是否相关,但我的customSpiceRequest扩展了SpringAndroidSpiceRequest.我已经确定requestCacheKey在请求之间也是相同的.
我还需要做些什么才能在请求之间启用缓存吗?