jjzjj

sharding

全部标签

mysql - 我应该使用 mysql 还是 ssdb 来存储点赞/投票数据?

每个用户都可以为任何视频投票,目前我们使用的是mysql,但现在我们在一个表中有超过2亿行,包含这样的字段:iduser_id#thevotervideo_id#votedvideoauthor_id#authorofthevideostate#1fornormaland0forcancelled,maybeotherscreated_at最常见的查询是获取特定视频的选民,但也可能需要某个作者的视频选民,或者某个用户投票的视频,通常按时间排序。我应该将表分成100个碎片(按video_id)还是改用ssdb?如果选择前者,为了通过author_id或user_id查询,数据要存储多次。

memory - 同一台服务器上的数百个 Redis 实例

这是可行的还是会降低CPU性能?我想这样做的原因是预分片。我想将我的数据分片到多个(128个,也可能是256个)Redis实例,然后在同一台服务器上运行它们。然后,当我需要横向扩展时,我可以启动更多服务器并将实例轻松移动到其他服务器。我知道Redis本身的内存占用量很小,因此内存开销应该不是问题。但是如果我只有4个内核,它们能处理数百个Redis实例吗?还是我应该为每个内核最多保留一个实例? 最佳答案 Redis的工作方式类似于单线程应用程序,它会fork额外的线程,例如输入/输出。所以我会说它可以每个redis一个核心实例工作得很

ruby-on-rails - Mongoid 是否存在缩放方面的困难?

我正忙于设计一个Web应用程序,它有望变得非常大,有很多用户。我选择MongoDB作为数据存储,主要原因之一是它能够随着用户群的增长而水平扩展。有没有人有使用Mongoid与处理大量流量的高度分布式MongoDB交互的经验?有什么理由担心性能吗? 最佳答案 因此2.0之前的Mongodb遭受了全局锁定,这导致了严重的扩展问题。这已在2.0中更改为LockwithDynamicyieldThemongodprocessusesamodifiedreader/writerlockwithdynamicyieldingonpagefaul

mongodb - [MongoDB] :where is the incoming write operations saved in when the balancer is doing migration?

请参阅http://docs.mongodb.org/manual/core/sharding-internals/#balancing-internals.它有以下短语:“当MongoDB开始迁移block时,数据库开始将数据复制到新服务器并跟踪传入的写入操作。”我的问题是这些传入的写入操作保存在哪里?如果它在内存中,那么我需要如何调用getLastError并确保数据已同步到磁盘。谢谢! 最佳答案 首先,如果你想保证写入,无论你是否使用分片,你都应该调用getLastError(或使用你的驱动程序的等价物来实现安全写入)。就迁移

Mongodb 平衡器移动失败 : chunk too big to move. 但事实并非如此

我在mongos日志中发现:[Balancer]balancermovefailed:{chunkTooBig:true,estimatedChunkSize:33972400,ok:0.0,errmsg:"chunktoobigtomove"}from:rs2to:rs3chunk:min:{h:3074457345618258600}max:{h:3074457345618258600}~30兆字节。但是block不大于定义的block大小:mongos>useconfigswitchedtodbconfigmongos>db.settings.find({_id:"chunksi

MongoDB 分片未最佳分布

我正在研究一个测试MongoDB实现,我试图将1,000,000条记录批量插入到一个集合中,并让它在两个分片之间均匀分布。我最初的试验看到一个分片包含995760条记录,而另一个分片仅包含4251条记录。我试图预拆分,但这并没有改变任何东西。我是分片概念的新手,非常感谢有关该主题的任何帮助。更新:我在“数字”字段中的分片键是一个整数,范围从1到999,999状态:{"sharded":true,"ns":"test.test_collection","count":999999,"numExtents":21,"size":43982976,"storageSize":21024768

mongodb - 为 mongodb 分片标签定义动态范围

我有一个分片的mongodb数据库设置,我在其中使用分片标签将某些数据限制到某些分片。我想做的是为分片标签提供动态范围。我希望过去5天的数据始终位于一个分片标签中,而其他数据则位于另一个分片标签中。我无法在此处指定固定日期,因为它每天都在变化。一个例子是从过去5天到今天的分片标记“最新”数据从最短到最近5天的分片标记“OLD”数据我如何在分片标签上定义这样的范围而不是每天更改分片标签范围。提前致谢 最佳答案 在您的示例中,使用您的分片键分布,具有“最新”数据的分片将获得所有新写入,因为进一步的“最新”数据将是注入(inject)其中

mongodb - Mongos 计数项目不是真实的?

我在mongos实例中有一个count()函数的奇怪行为。一个多小时前,我更新了帖子集合中的大约8.000个项目,因为我需要将标签对象转换为数组。现在,当我查询mongos时:mongos>db.posts.find({blog:'blog1',tags:{$type:3}}).count()4139mongos>db.posts.findOne({blog:'blog1',tags:{$type:3}})null为什么count()显示4139项并且findOne返回空值,即使RS已同步?编辑:有4个RS(全部同步)。我还对所有PRIMARIES进行了相同的计数查询,结果始终为0。只

MongoDB - 从损坏的碎片中恢复?

当一个分片永久损坏时,如何拯救一个分片的MongoDB集群?我有一个包含48个分片的MongoDB集群。每个分片都是具有一个复制集的主分片。由于计划不周(tm),其中一个盒子用完了文件空间而死了。另一个已经很近了,然后也用完了空间。由于糟糕的情况(可能是当时正在进行的compact()或repairdb()操作,整个分片已损坏。我停止守护进程,尝试修复,但没有成功。那么,问题来了,如何接受一个分片的丢失,同时保留其他好的分片?48个分片,丢失一个分片只占我数据的2%。我可以接受丢失这些数据,但我必须达到正常的健康状态。我该怎么办? 最佳答案

mongodb - 多个 mongodb 服务器被视为一个和数据流管理

对于我的应用程序,我需要定期将旧数据从一个mongodb服务器移动到另一个服务器(即两个不同的服务器)。我还希望能够查询这些数据,就好像它们是同一个数据库。简而言之,我希望能够将两个mongodb实例(在两个不同的服务器上)视为一个实例,并能够控制数据存储的时间和位置。我阅读了有关分片和block的概念,并迅速看到了moveChunk可以轻松完成我想要的功能。问题是在mongodb中似乎无法配置这样的架构。我在这里遗漏了什么吗? 最佳答案 归档删除的文档对于保留已删除文档的问题,您无法通过分片或复制等内置功能/机制来实现。唯一的方法