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

sharding - 我在哪里可以找到有关数据库分片的入门知识?

我有一个当前已分片的数据库。这是我第一次遇到分片数据库,并想了解更多关于它们的信息。

像:

  • 什么时候对数据库进行分片是个好主意?
  • 在多大的数据库大小下对数据库进行分片是个好主意?
  • 删除分片有多容易?
0 投票
3 回答
120 浏览

sql - 是否可以重新创建许多 SQL 连接(SQL 2008)

在数据库中执行许多插入时,我通常会有这样的代码:

我现在想对数据库进行分片,因此需要根据插入的项目选择连接字符串。这将使我的代码运行得更像这样

这基本上意味着它正在为每个项目创建一个到数据库的新连接。这会起作用还是会为每个插入重新创建连接会导致可怕的开销?

0 投票
1 回答
287 浏览

sql - 使用分片表实现数据库冗余

我们希望通过在服务器集群中水平分片我们的表来实现负载平衡。如果服务器出现故障,有哪些选项可以实现实时冗余?

执行 (2) INSERTS 而不是一个 ... 一个到目标分片,另一个到辅助分片是否有效,如果主分片没有响应,则可以访问该辅助分片?或者,还有更好的方法?

谢谢。

0 投票
1 回答
433 浏览

database - 您如何处理数据库分片中的非规范化/二级索引?

假设我有一个带有 2 个二级索引的“消息”表:

  • “收件人 ID”
  • “发件人ID”

我想按“recipient_id”对“消息”表进行分片。通过这种方式检索发送给某个收件人的所有消息,我只需要查询一个分片。

但同时,我希望能够进行查询,询问某个发件人发送的所有消息。现在我不想将该查询发送到“消息”表的每个分片。一种方法是复制数据并有一个由“sender_id”分片的“message_by_sender”表。

这种方法的问题在于,每次发送消息时,我都需要将消息插入“message”和“message_by_sender”表中。

但是如果在插入“message”之后插入“message_by_sender”失败了怎么办?在这种情况下,消息存在于“message”中,但不存在于“message_by_sender”中。

我如何确保如果一条消息存在于“消息”中,那么它也存在于“message_by_sender”中而不诉诸两阶段提交?

对于任何对其数据库进行分片的人来说,这一定是一个非常普遍的问题。你怎么处理它?

0 投票
1 回答
702 浏览

image - 图像分片以及如何避免浏览器缓存中的多个项目

为了提高页面渲染速度,我正在考虑实现图像分片,它为来自多个子域的图像提供服务。如何确保从同一服务器检索相同的图像?

我想避免像下面这样从多个域提供相同图像的情况:images1.domain.com/image1.gif images2.domain.com/image2.gif images2.domain.com/image3.gif images2.domain .com/image1.gif

我们正在运行 Java - 有什么方法可以校验和/指纹图像文件名并基于它总是将其分配给同一台服务器?

0 投票
4 回答
2095 浏览

python - 组合两个数据库查询结果的有效方法

我在不同的服务器上有两个表,我需要一些帮助来找到一种有效的方法来组合和匹配数据集。这是一个例子:

从保存我们故事的服务器 1,我执行如下查询:

但是,我想从服务器 2 中获取有关每个 author_id 的一些信息:

现在我需要一些方法来组合这两个查询,所以我有一个包含故事以及 avatar_url 和 member_id 的字典。

如果此数据在一台服务器上,它会是一个简单的连接,如下所示:

但由于我们将数据存储在多个服务器上,这是不可能的。

最有效的方法是什么?我知道合并可能必须发生在我的应用程序代码中......任何能最大限度地减少 dict 循环数量的有效示例代码将不胜感激!

谢谢。

0 投票
1 回答
1014 浏览

lucene - 使用 Hibernate Search 自定义 Lucene 分片

有没有人使用Hibernate Search进行自定义Lucene分片/分区的经验?

Hibernate Search的文档对 Lucene Sharding 进行了以下说明:

在某些情况下,需要将给定实体类型的索引数据拆分(分片)为多个 Lucene 索引。除非有迫切需要,否则不建议使用此解决方案,因为默认情况下,搜索速度会较慢,因为必须为单个搜索打开所有分片。换句话说,在遇到问题之前不要这样做:)

有没有人以这样的方式为 Hibernate Search 实现分片,使得查询也可以定位到其中一个分片?

在我们的例子中,我们有 Lucene 查询,每个查询应该只针对一个分片。

0 投票
1 回答
92 浏览

mysql - 从单台机器运行分片数据库

这听起来有点愚蠢,但我有一个分片数据库,我不再认为我需要在两台机器上运行,而是希望在一台机器上运行。

关于如何做到这一点的任何想法?关于如何实现相反的资源有很多资源,但关于如何做到这一点的资源很少

0 投票
2 回答
2754 浏览

architecture - 如何设计一个可扩展的类似推特的服务?

有没有人有任何关于 twitter 架构的信息?

我特别感兴趣的一些具体项目:

  • 我知道他们使用消息队列。但是他们到底用队列做什么呢?

  • 他们是否“复制”推文?如果是这样,怎么做?例如,假设一个用户有 10,000 个关注者,他发布了一条推文“hello world”。twitter 是否只存储一次“hello world”并且这 10,000 名关注者中的每一个都需要从同一个数据库表中读取该推文,或者每个关注者都有自己的“我正在关注的推文”数据并且“hello world”被复制 10,000次,每个追随者一次?

  • 与上述观点有些相关:他们如何按推文发件人、推文关注者、推文 ID、推文日期时间或其他方式对数据进行分片?

  • 你知道他们使用什么技术吗?我阅读了有关 MySQL、RoR、Starling、Scala、memcached 的信息。不过那是前一阵子了,资料也不是很详细。任何更新的信息或更多细节?

0 投票
2 回答
77 浏览

database - 我们未能按自定义安装尝试数据库。计划恢复?

到目前为止,有一个 Web 应用程序处于生产模式 3 年左右。从历史上看,由于不同的原因,决定使用按客户安装的数据库。

现在我们遇到了这样一个事实,即现在的部署非常缓慢。

我们是否应该考虑将所有数据库移回单个数据库以降低环境复杂性?还是这个想法太冒险了?

我现在看到的问题是,很难将这些数据库与保存引用完整性进行合并(不同数据库表的主键不能明显区分)。

数据库并没有那么大,因此拥有多个数据库并没有太多减少负载的好处。