有关设置mongodb以进行分片/可伸缩性的建议读数吗?
我正在寻找最佳实践.我不太了解分片或扩展数据库解决方案.有实际的现实世界的例子吗?
如果我使用错误的条款,我道歉.
我正在为一个非常受欢迎的游戏的新版本编写后端.(500万+玩家,每月超过5000万游戏).
SQL是一个很好的选择作为存储系统来保存玩家的个人资料和他们的游戏吗?也就是说,我害怕加入这样大桌子的表现.
这是我们想要做的:
我正在构建一个调查应用程序,用户可以在其中创建调查.我正在寻找有关如何存储每项调查数据的建议.
我可以以数据库表的形式保存调查结果,如下所示:
像mongodb这样的nosql数据库更适合这种情况吗?
我从来没有使用过nosql数据库,也不知道学习曲线来完成这项工作.
有资源吗?
谢谢你的帮助.
在过去的两天里,我一直在阅读和学习NoSQL和MongoDB,CouchDB等,但我仍然无法判断这是否适合我.
让我担心的是最终的一致性.在使用集群时,这种一致性是否只会起作用?(我在一个专用服务器上托管我的网站,所以我不知道我是否可以从NoSQL中受益)对于哪种应用程序可以最终保持一致(而不是ACID),以及哪些应用程序不是T' 你能举个例子吗?在应用程序中可能发生的最糟糕的事情是什么,以确保最终的一致性?
我读到的另一件事是MongoDB在内存中保留了很多东西.在文档中,它描述了一些有2GB数据限制的32位系统.那是因为32位系统的ram限制吗?
我如何写两个日期范围的查询?唯一的条件是必须通过一个查询检索此数据.谢谢.
UPD:或如何在一个集合中结合2个查询?不是数组
我正在寻找关于如何最好地实现MongoDB外键ObjectId字段的建议.似乎有两种可能的选项,包括嵌套_id字段或不包含嵌套字段.
看看下面的fkUid字段.
{'_id':ObjectId('4ee12488f047051590000000'), 'fkUid':{'_id':ObjectId('4ee12488f047051590000001')} }
Run Code Online (Sandbox Code Playgroud)
要么
{'_id':ObjectId('4ee12488f047051590000000'), 'fkUid':ObjectId('4ee12488f047051590000001')} }
Run Code Online (Sandbox Code Playgroud)
任何建议将不胜感激.
频繁的Compaction和Memtable Flushing是否会影响群集的写入延迟?
在我们的实现中,我们有一堆计数器列系列[大约30],它们会非常积极地更新.对我们系统的每个请求都会进行大约15-20次更新[所有差异CF].
我们能够在交通繁忙的cassandra系统日志中经常发现Compaction和Flushing发生的情况.当我们在负责密钥的节点上遇到高负载时[日时间戳,分钟时间戳,小时时间戳]和群集的写入延迟比平时增加[0.6 ms到26 ms]
我们没有触及cassandra的任何默认设置,我们运行cassandra的机器配置相当不错[32G ram和16 Core] 4G到cassandra
我们尝试禁用durable_writes来知道它是否有帮助,但它没有像我们预期的那样做得那么好
我有一个生产数据库服务器上的MySQL 5.1中运行,现在我们需要建立报告将从生产数据库服务器获取数据,因为通过整个数据库报告查询可能会减慢应用程序,因此规划要切换到NoSQL的.整个系统正在运行aws堆栈规划以使用DynamoDb.请建议我将生产nosql服务器中的数据同步到nosql数据库服务器的方法.
据我所知,许多nosql商店都是用java编写的,例如HBase,Cassandra.但根据我的经验,许多高性能服务器程序都是用c/c ++编写的(例如Apache,Opensips等),为什么这样的java实现程序在生产中运行良好呢?是因为Java代码易于阅读并维护和分布式系统在java中实现好吗?
顺便说一句,我知道用Java编写代码肯定会更有效率,但正如有人所说,实现速度不是大公司的问题,因为一旦实施和重构几轮,程序运行得很好,所以时间成本从长远来看并不高.
我是NoSQL的新手,对不起,如果这是非常基本的话.假设我有以下集合:
{
a: 1,
b: 2,
c: 'x'
},
{
a: 1,
b: 2,
c: 'y'
},
{
a: 1,
b: 1,
c: 'y'
}
Run Code Online (Sandbox Code Playgroud)
我想对匹配的任何内容运行"重复数据删除"查询:
{
a: 1,
b: 2
... (any other properties are ignored) ...
},
Run Code Online (Sandbox Code Playgroud)
因此,在运行查询后,集合中的以下任何一个都可以正常:
{
a: 1,
b: 2,
c: 'y'
},
{
a: 1,
b: 1,
c: 'y'
}
Run Code Online (Sandbox Code Playgroud)
要么
{
a: 1,
b: 2,
c: 'x'
},
{
a: 1,
b: 1,
c: 'y'
}
Run Code Online (Sandbox Code Playgroud)
只要只剩下一个== 1和b == 2的文档.
nosql ×10
mongodb ×5
cassandra ×2
database ×2
c ×1
c++ ×1
couchdb ×1
duplicates ×1
foreign-keys ×1
java ×1
mongoid ×1
mysql ×1
performance ×1
pymongo ×1
scalability ×1
sql ×1
survey ×1