问题标签 [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 投票
1 回答
644 浏览

django - 如何对 Django 用户模型/表进行分片?

您如何对 DjangoUser模型进行分片,以便用户记录位于不同的数据库/表中?

哪些模块、模型和视图需要修改?我是否需要创建自定义身份验证后端?有没有相对无痛的方法来做到这一点?

谢谢。

0 投票
2 回答
3108 浏览

nginx - 应用程序级别的分片

我正在设计一个多租户系统,并且正在考虑在应用层级别而不是数据库上按租户进行分片。

假设,这应该工作的方式是,对于传入请求,路由器进程具有包含主要属性的租户的全局集合,以确定此请求的租户以及虚拟分片 ID。此虚拟分片 ID 进一步映射到实际分片。

实际的分片既包含应用程序的代码,也包含此租户的全部数据。这些分片将是 LNMP(Linux、Nginx、MySQL/MongoDB、PHP)服务器。

路由器进程应该充当代理。它应该能够运行一些代码来根据存储在某些本地数据库或文件中的集合来确定传入请求的目标分片。为了能够更好地扩展,我正在考虑让分片本身也充当路由器,以便它们可以运行反向代理,将请求转发到适当的分片。也许在 shard 上运行的 nginx 实例也可以充当那个反向代理。但是它将如何执行将请求与适当的分片匹配所需的应用程序逻辑。

我将不胜感激有关此路由器实施的任何想法和建议。

谢谢

0 投票
6 回答
56901 浏览

mysql - MySQL sharding approaches?

What is the best approach for Sharding MySQL tables. The approaches I can think of are :

  1. Application Level sharding?
  2. Sharding at MySQL proxy layer?
  3. Central lookup server for sharding?

Do you know of any interesting projects or tools in this area?

0 投票
1 回答
1815 浏览

mongodb - MongoDB setShardVersion 失败,仅 mongodump

我正在使用分片(通过副本集)并尝试转储数据库。通过 key files_id 为 mycms-prod.fs.chunks 启用分片。附加信息:http ://groups.google.com/group/mongodb-user/browse_thread/thread/a8f05cbf495d6487 我已阅读此说明:http ://www.mongodb.org/display/DOCS/Backing+Up+Sharded+集群 (用于小型集群)。

在 mongos.log 中:

然后我要去server1.domain.com。

我认为 mongos 不应该与这台计算机联系。因为它是副本集的 SECONDARY。

这是一个错误?

1.8.1 版的所有组件。

有细微差别。这个数据库是在 mongorestore 的帮助下恢复的。

我认为转储可能有问题。我刚刚创建了一个新的数据库分片测试,将 500 个文件(在 gridfs 中)复制到其中并激活了分片。

等到所有数据都分布在服务器上。并试图转储数据库。令人惊讶的是,它成功了!来自不同的 mongos 也可以工作。这是什么意思?

注意到另一个细微差别。

如果我这样做:

tracking_pagevisit 集合发生错误。

那么......让我们尝试单独转储这个集合。

这个功课!!!发生了什么?

我的系统:

我有 6 个 mongos。实际上总是只使用 2 个。用于 2 个应用程序。每个应用程序都有自己的 mongos。

总共我有 9 台服务器。在每次使用参数运行 mongod 时:shardsvr = true replSet = rs1(rs2 和 rs3)。三个复制品。每个副本由一个 3-mongod 组成。和三个配置服务器(server4.domain.com:28001,server6.domain.com:28001,server1.domain.com:28001)。

Mongos 参数 bind_ip = 127.0.0.1,123.456.789.12 端口 = 30000 fork = true configdb = server4.domain.com:28001,server6.domain.com:28001,server1.domain.com:28001

我重新启动了使用过的mongos。这有帮助。数据库现在是相同的。但是转储仍然无法正常工作。我写了上面的错误。

谢谢。

0 投票
2 回答
4026 浏览

mongodb - 多个分片键是否有助于 mongodb 的性能?

由于分片数据库使用分片键来拆分块和路由查询,所以我认为更多的分片键可能有助于使更多的查询有针对性

我试图像这样指定多个键

但我不知道它是否有效以及这样做的缺点是什么

0 投票
1 回答
1877 浏览

java - Elasticsearch - 分配分片

我最近发现了 Elasticsearch,我决定试一试。不幸的是,我在添加索引时遇到了麻烦。

用于添加索引的代码如下,每次尝试添加新索引时都会运行:

似乎没有添加任何索引,并且我的 Cluster helath 目前是红色的(因为其中一个分片是红色的),但我不知道如何解决这个问题。我收到确认每次都添加了我的索引,但在搜索或在 es-admin 中时它们没有显示。

非常感谢所有帮助或想法。

0 投票
2 回答
264 浏览

mysql - 计划优化对一个非常大的 InnoDB 表的访问

我是一个社交游戏的开发者,我们有将近 200 万玩家(而且这个数字还在增长)。

主 MySQL DB 服务器有 24 Gb RAM,如果不是一个非常大的表,数据库可以放入内存中。目前它有近 10 亿条记录,其大小为 33Gb。它具有以下架构:

我正在考虑如何优化它的以下计划:

  1. 添加带有“archive_”前缀的类似表

  2. 通过哈希对这个新表进行分区

  3. 找出没有玩游戏的不活跃玩家,比如一个月。

  4. 将他们的记录从大表复制到存档表

  5. 标记正在存档的玩家并在他/她登录时使用存档表而不是原始表

  6. 也可以选择通过哈希对原始表进行分区(可选,因为它可能会导致大量停机)

  7. 如果没有什么有助于考虑分片

你怎么看待这件事?这听起来像是一个好计划吗?

0 投票
2 回答
4039 浏览

indexing - 索引和分片有什么区别

索引和分片有什么区别。两者的作用是什么?

0 投票
2 回答
351 浏览

mysql - 需要帮助选择正确的 mysql 数据库分片、集群或分区方法

我正在开发一个将使用三个表的应用程序。1 - 100 万行产品。2 - 5 亿行用户。3 - 100 亿行用户喜欢的产品。这些表格会随着时间的推移而增长,但会保持在这些数字附近。我想为这种数据库选择正确的方法。我真的不太了解分片、集群或分区,但如果你们中的一些人能告诉我这个问题的最佳解决方案,我将专注于它,这将是一个巨大的帮助。我只想要支持 mysql 的方法,如果我需要多台服务器用于这种数据库?谢谢。

0 投票
1 回答
1605 浏览

mongodb - YCSB - 为什么我在互联网上的任何地方都找不到分片配置

我看到各种参考 MongoDB 作为 YCSB 基准测试的客户端,以测试 NoSQL 数据库服务器的可伸缩性/弹性。

https://github.com/brianfrankcooper/YCSB

但是,很明显,基准测试需要某种分片设置,因为测试旨在在 6 到 10 台服务器机器上运行,以显示可扩展性和弹性。

我在 Internet 上找不到任何关于 MongoDB 配置的参考资料。我找不到任何发布结果的人也发布了他们的配置。

这件事真的成功了吗?与 Cassandra、HBase 等原始 YCSB 客户端相比,结果如何?

我特别困惑,因为在 MongoDB 客户端的代码中,它读取......“每个客户端线程有一个数据库实例”......见片段。

然而,在 Brian Cooper YCSB 结果论文中,它指出他们将工作负载运行到多达 500 个线程。

6.1 实验装置

对于大多数实验,我们使用六台服务器级机器(双 64 位四核 2.5 GHz Intel Xeon CPU、8 GB RAM、6 个磁盘 RAID-10 阵列和千兆以太网)来运行每个系统。我们还在 47 个服务器集群上运行 PNUTS,以成功证明 YCSB 可用于对更大的系统进行基准测试。PNUTS 需要两台额外的机器作为配置服务器和路由器,而 HBase 需要一台额外的机器,称为“主服务器”。这些服务器负载很轻,我们在此报告的结果主要取决于六台存储服务器的容量。YCSB 客户端在单独的 8 核机器上运行。客户端运行多达 500 个线程,具体取决于所需提供的吞吐量。我们在测试中观察到客户端机器不是瓶颈;尤其是,

有谁知道这个基准的分片配置在哪里,是否有任何真实的结果可以通过分片配置或详细解释为什么不需要分片来支持。

谢谢,-罗伯特