问题标签 [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 回答
772 浏览

php - 处理键值存储中对象的拆分和连接?

获得有关如何测量 memcached 对象的实际/实际大小以防止它们变得太大的帮助之后,我考虑了下一步 - 实现一个分片/拆分功能,该功能在存储时透明地将大对象拆分为更小的部分并粘合它们在请求它们时将它们一起作为一个大对象。基本上它应该自动在幕后完成所有需要做的事情来让 memcached 满意。

处理数组、对象或任何类型的对象拆分的合适方法是什么?

我在我的 web 应用程序中使用 PHP,但对于这种情况,我会很高兴使用一些伪代码的通用方法来为我指明正确的方向。

非常感谢!

0 投票
2 回答
276 浏览

grails - grails 支持分片吗?

grails 支持分片吗?

我想要一个多租户数据库解决方案,我目前正在研究 grails。

0 投票
3 回答
2175 浏览

google-app-engine - Google App Engine 分片计数器中有多少个分片?

我今天读到了 Google App Engine 中的分片计数器。文章说,您应该期望数据存储中每个实体每秒最多更新约 5 次。但在我看来,除非您有某种方式知道您每秒进行了多少更新,否则该解决方案不会“扩展”。例如,您可以分配 10 个分片,但随后会以每秒 50 次更新开始阻塞。

那么,您如何知道更新的速度有多快,以及如何将该数字反馈到分片数量中?

我的猜测是,与计数器一起,您可以保留一些最近活动的记录,如果您检测到峰值,您可以增加分片的数量。一般是这样处理的吗?如果是这样,为什么不在示例代码中完成?(最后一个问题可能无法回答。)是否更常见的做法是监控网站活动并在流量增加时更新分片计数,而不是在代码中自动执行?

更新:碎片太少和窒息的实际后果是什么?这是否仅仅意味着网站变得无响应,或者是否有可能因为超时而丢失计数器更新?


顺便说一句,这个问题谈到了在没有分片的情况下实现计数器,但其中一个答案暗示,如果流量很高,即使 memcache 也需要分片。所以这个分片分配和调整问题似乎很重要。

0 投票
1 回答
2638 浏览

replication - 有没有办法对 neo4j 数据进行分片和复制?

我正在考虑为我正在工作的一些新项目选择 neo4j。对于给定的数据需求(本质上基于图形),neo4j 非常适合,快速原型为我提供了良好的响应时间。我想了解的是如何扩展 neo4j 部署。具体来说:

  • 我如何在 neo4j 部署中分片我的数据。由于 neo4j 部署在单台机器上,我可以在单台机器上存储多少数据是有限制的,因此我想知道如何分发它。显然,如果我将其拆分为用户,那么断开连接的用户(跨分片)之间的关系将无法维持。
  • 如何复制 neo4j 数据?我可能正在考虑建立一个类似 sql 的设置,其中 master 用于写入,slave 用于读取,以便我们既可以扩展潜在的读取器和写入器,又可以实时备份我们的数据。我知道所有 neo4j 数据都存储在一个文件系统中——它本质上是不可复制的。有什么办法可以在这里做到吗?也许,类似于 mysql bin 日志?
0 投票
3 回答
3314 浏览

php - 分片/分发的功能(一致的散列)?

我已经考虑过制作一个有点轻量级的类似一致性哈希的 PHP 函数来在不同服务器之间对上传的文件进行分片。

显然, rand() 可以在服务器之间稍微均匀地分配文件,但是在请求文件时,没有人会知道哪个文件位于哪个服务器上......

我知道有一些广泛的库可以创建一致的哈希,但我想知道这些是如何工作的,以及如何推出我自己的、非常轻量级的库?

注意:我没有考虑到服务器将被删除,而是更多的服务器被添加到池中。

更新:

这是伪代码的快速行:

0 投票
3 回答
12596 浏览

nosql - 为什么 NoSQL 说传统 RDBMS 不擅长扩展

我读过一些文章说MySQL等RDBMS不擅长扩展,但MongoDB等NoSQL可以很好地分片。 我想知道 RDBMS 提供的哪个特性使自己不能很好地分片。

0 投票
4 回答
2168 浏览

php - php:创建自动数据库分片逻辑?

我确实提出了以下想法,但我不知道它是否适用于生产应用程序。

我们有一个基于 PHP/mySQL 构建的 Web 应用程序,使其变得简单。数据库中的表很容易变大 - 几百万条记录很容易,因此表分片可能是这里的一种选择。

这是我想象的工作过程的方式:

缓存文件包含数据库中可用表的列表。每个表最多包含一百万行,当达到这一点时,在构建新表后重新创建缓存列表。

显然,检查每次写入表时的行数并不是一个好主意,因此可以在设定的时间间隔内完成,例如一周或每天 - 取决于每百万数据的创建速度。

这是处理大量数据并保持索引大小相当低的好方法吗?

谢谢

0 投票
2 回答
306 浏览

google-app-engine - 使用分片计数器时如何按计数器排序

我有一个应用程序,其中主要实体是 a Story,用户可以为每个故事投票。每次投票都会vote_count为故事增加一个。

我担心关于故事的写作争论,所以我计划为每个故事使用分片计数器来跟踪投票。

现在我的问题是:如何获得按票数排序的故事列表?例如:显示 50 个最高票数的故事。

我最初的想法是定期运行一个任务来读取计数器值并更新实际故事的属性。可以通过投票查询的结果稍微过时。

0 投票
2 回答
823 浏览

mysql - 如何通过从数据库分区演变为分片来进行横向扩展?

假设我有一个 MySQL 表:

一切都很好。该表位于单个服务器 - Server1 上。但最终我可能想扩大规模。因此,我想对表进行分片并将 12 个分区中的 6 个移动到新服务器 - Server2 上。

我想要:

  • Server1 包含奇数推文:分区 1、3、5、7、9、11
  • Server2 包含偶数推文:分区 2、4、6、8、10、0

1) 将这些分区从 Server1 移动到 Server2 的最佳方法是什么?我需要确保自动增量 tweet_id 的值在迁移过程中保持不变。

2)现在我有两台服务器,如何确保两台服务器生成的自动增量 tweet_id 的值不同?我还需要确保每个分区上的 tweet_id 保持一致,即在分区 k 上,每个 tweet_id 的模 12 等于 k。

3)理想情况下,我想继续这个向外扩展的过程。所以稍后我想添加第三台服务器 - Server3。我想重新平衡分区,以便每台服务器上有 4 个分区。同样,如何确保 3 个服务器生成的自动增量 tweet_id 是不同的,并且 tweet_id 的模 12 在每个分区内保持一致?

0 投票
1 回答
934 浏览

c# - C#、多核 solr、Lucene、分片、不区分大小写的“包含”搜索和一个巨大的偏头痛

我在执行过程中度过了一段愉快的时光。

我们有一个 solr 服务器正在运行。我们有 3 个核心,为了简单起见,我们称它们为“成员”、“企业”和“产品”

我试图使用 solrnet,但它不支持分片。所以,我担心我必须自己构建 url。

因此,当我发现问题时,我使用管理工具构建了一些示例 url 用于查询。Solr 执行“等于”而不是“包含”,并且区分大小写。我知道我可能做错了。

所以,我读过我需要将 qt 参数设置为“dismax”,只有当我只搜索会员的核心时,通过管理工具,我才得到“未定义的字段价格”....我的会员没有价格字段。我的产品可以。

我需要对我的查询执行以下操作。

  1. 跨多核搜索(分片)
  2. 不区分大小写
  3. 包含单词而不是等于单词
  4. 搜索多个字段
  5. 声明字段的优先级(首先搜索名称,然后是描述等)

我的查询可能全错了,但这就是它的样子(更改了服务器名以保护无辜者)名称字段实际上是用户的名字和姓氏的串联......所以我试图看看 dismax 是否会看到该名称包含单词 jim(不区分大小写)。

mysolrserver.mydomain.int:8080/solrQA/select?indent=on&version=2.2&q=名称:jim&fq=&start=0&rows=10&fl=*%2Cscore&qt=dismax&wt=standard&explainOther=&hl.fl=&shards=mysolrserver.mydomain.int:8080 /成员,mysolrserver.mydomain.int:8080/企业

任何帮助将不胜感激。