问题标签 [sharding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
57 浏览

ruby-on-rails - 当我使用 datafabric gem 时,如何为某些模型使用标准活动记录?

我正在使用 data-fabric gem,在两台机器之间进行分片。

但是,我想对某些表使用标准的 activerecord 函数。

任何人都有类似的经历来实现这一目标?

0 投票
1 回答
778 浏览

mysql - InnoDB 中的 MySQL 分片和主键性能

我经营一个歌词网站,我有一个基本上保存歌曲索引的表格;本质上是具有自动增量 (song_id)、艺术家和歌曲标题的主键。

歌词本身存储在 10 个分片中,每个分片基于 song_id MOD 10。有两列:song_id 和 song_lyrics。song_id 字段是主键,但不是自增,存储的整数与索引表中相同。

我的问题是,从我所读到的关于 InnoDB 和主键的内容来看,它是否会对性能造成任何影响,例如在分片 0 上,song_id 行变为 10、20、30 等并且不是连续的?我担心在主键中跳过数字会影响性能。

即使使用 memcached,现在也没有太大的压力,但我将在歌词之外添加一些新功能,所以如果我要更改架构,现在是比任何时候都更好的时机。我很欣赏任何见解。谢谢!

0 投票
2 回答
332 浏览

mysql - 数据库分片策略

我想将产品表拆分为许多较小的表,并将表放在不同的服务器中。但我有一些问题:如果我使用产品 ID 对数据库进行分片。当有人列出一个产品类别时,我怎样才能让所有产品都属于某些类别。有人有好的理想吗?

0 投票
1 回答
1033 浏览

mongodb - 如果master宕机了如何连接到slave——复制

我正在使用 MongoDb 中的数据复制,目前我有一个主节点和几个从节点。所有这些都在不同的端口上运行,但它们也可以在不同的机器上(我正在测试 atm)。

我的问题是,我将如何从我的代码中连接到这些?目前,我只有一个 db 类的实例,它连接到 localhost 上的 x 端口。显然,如果这个节点失败了,我想在 localhost 上的 y 端口使用 slave,如果失败,则在 localhost 上的 z 端口使用。我应该为不同的连接使用单独的数据库对象吗?

0 投票
4 回答
3657 浏览

mongodb - 2台服务器上的mongoDB复制+分片合理吗?

考虑以下设置:

有 2 个物理服务器被设置为常规的 mongodb 复制集(包括一个仲裁进程,因此自动故障转移将正常工作)。

现在,据我了解,大多数实际工作将在主服务器上完成,而从服务器主要只是做工作以保持其数据集同步。

将分片引入此设置是否合理,以便在相同的 2 台服务器上设置另一个复制集,以便每个服务器都有一个 mongod 进程作为主进程运行,一个进程作为辅助进程运行。

预期的结果是两台服务器都将共享实际查询/插入的工作负载,而两者都已启动。在一个服务器失败的情况下,整个设置应该优雅地故障转移以继续运行,直到另一台服务器恢复。

除了设置的总体开销和进程数量(mongos/configservers/arbiters)之外,此设置是否有任何缺点?

0 投票
1 回答
1691 浏览

mongodb - Mongo 分片无法在分片之间拆分大型集合

我在 mongo 中似乎是一个简单的分片设置有问题。

我有两个分片、一个 mongos 实例和一个配置服务器,如下所示:

机器 A - 10.0.44.16 - 配置服务器,mongos
机器 B - 10.0.44.10 - 分片 1
机器 C - 10.0.44.11 - 分片 2

我有一个名为“Seeds”的集合,它有一个分片键“SeedType”,它是集合中每个文档上都存在的一个字段,包含四个值之一(查看下面的分片状态)。其中两个值的条目明显多于其他两个(其中两个分别有 784,000 条记录,两个大约有 5,000 条记录)。

我期望看到的行为是,带有 InventoryPOS 的“种子”集合中的记录最终会出现在一个分片上,而带有 InventoryOnHand 的记录会出现在另一个分片上。

但是,似乎两个较大的分片键的所有记录最终都在主分片上。

这是我的分片状态文本(为清楚起见,删除了其他集合):

我做错什么了吗?

半无关的问题:

在不阻塞整个 mongo 服务的情况下以原子方式将对象从一个集合传输到另一个集合的最佳方法是什么?

在此先感谢,-蒂姆

0 投票
2 回答
1046 浏览

mongodb - 是否有任何 RDBMS 进行自动缩放、分片、重新平衡?

我认为 MongoDB 这样的 no-sql 的优点之一是它可以自动水平扩展:只需添加一台便宜的机器,数据就可以“传播”到新机器上。

对于 RDBMS,是否有任何 RDBMS 也会自动执行此操作?

0 投票
3 回答
5880 浏览

mongodb - 删除无法访问的 Mongo 分片

我有一个带有 3 个分片的 MongoDB 分片设置:shard0000、shard0001 和 shard0002。运行 shard0002 的机器现在宕机了,这导致我所有的查询都失败了。我想暂时从我的设置中删除 shard0002 并继续使用前两个分片。假设我只使用位于前两个分片中的非分片集合,这应该是可行的,对吧?

我首先尝试的是:db.runCommand({removeshard: 'IP:PORT'})这显然没有帮助,因为它只是将分片置于排空模式,这将永远不会结束(因为它已关闭)。然后我尝试连接到我的配置服务器并db.shards.remove({_id: 'shard0002'})在配置数据库上进行操作,然后重新启动 mongos 以便重新加载配置。现在,每当我尝试做任何事情时,我都会得到“找不到分片:shard0002”。

有什么方法可以让 Mongo 知道我现在不关心那个分片,然后在它可用时重新启用它。

0 投票
3 回答
2255 浏览

mysql - 自动分片 MySQL?

现在,我正在处理大量需要实时提供的数据(相信我),以便快速读取和写入客户。我们使用的后端存储系统是 Oracle,但我们想用更精简的系统替换我们的大型、强大的机器。

由于各种原因,我们不能使用 Cassandra,并且我们正在测试(但我很害怕)MongoDB(它真的很年轻,并且缺少一些关键功能),所以我正在考虑对一堆 MySQL 实例进行分片。

有没有一个好的系统来管理这个,还是我必须自己动手?我找到了一些项目,但我不清楚它们是否支持动态添加/删除碎片。

0 投票
1 回答
2394 浏览

mysql - wordpress 分片:使用哪个多数据库插件?

我有一个 wordpress 多站点安装,它托管了足够多的博客,我需要对数据库进行分片。我看到有三个插件可用于跨多个数据库传播 wordpress:

我正在尝试决定使用哪一个,但我并没有真正找到太多比较它们的信息[1]。

有没有人有部署这三个工具中的任何一个的经验?或者更好的是,体验其中的一个以上,并简要说明您切换的原因。

谢谢,贝瑟尼

[1] http://mu.wordpress.org/forums/topic/16244