问题标签 [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.
sharding - 我在哪里可以找到有关数据库分片的入门知识?
我有一个当前已分片的数据库。这是我第一次遇到分片数据库,并想了解更多关于它们的信息。
像:
- 什么时候对数据库进行分片是个好主意?
- 在多大的数据库大小下对数据库进行分片是个好主意?
- 删除分片有多容易?
sql - 是否可以重新创建许多 SQL 连接(SQL 2008)
在数据库中执行许多插入时,我通常会有这样的代码:
我现在想对数据库进行分片,因此需要根据插入的项目选择连接字符串。这将使我的代码运行得更像这样
这基本上意味着它正在为每个项目创建一个到数据库的新连接。这会起作用还是会为每个插入重新创建连接会导致可怕的开销?
sql - 使用分片表实现数据库冗余
我们希望通过在服务器集群中水平分片我们的表来实现负载平衡。如果服务器出现故障,有哪些选项可以实现实时冗余?
执行 (2) INSERTS 而不是一个 ... 一个到目标分片,另一个到辅助分片是否有效,如果主分片没有响应,则可以访问该辅助分片?或者,还有更好的方法?
谢谢。
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”中而不诉诸两阶段提交?
对于任何对其数据库进行分片的人来说,这一定是一个非常普遍的问题。你怎么处理它?
image - 图像分片以及如何避免浏览器缓存中的多个项目
为了提高页面渲染速度,我正在考虑实现图像分片,它为来自多个子域的图像提供服务。如何确保从同一服务器检索相同的图像?
我想避免像下面这样从多个域提供相同图像的情况:images1.domain.com/image1.gif images2.domain.com/image2.gif images2.domain.com/image3.gif images2.domain .com/image1.gif
我们正在运行 Java - 有什么方法可以校验和/指纹图像文件名并基于它总是将其分配给同一台服务器?
python - 组合两个数据库查询结果的有效方法
我在不同的服务器上有两个表,我需要一些帮助来找到一种有效的方法来组合和匹配数据集。这是一个例子:
从保存我们故事的服务器 1,我执行如下查询:
但是,我想从服务器 2 中获取有关每个 author_id 的一些信息:
现在我需要一些方法来组合这两个查询,所以我有一个包含故事以及 avatar_url 和 member_id 的字典。
如果此数据在一台服务器上,它会是一个简单的连接,如下所示:
但由于我们将数据存储在多个服务器上,这是不可能的。
最有效的方法是什么?我知道合并可能必须发生在我的应用程序代码中......任何能最大限度地减少 dict 循环数量的有效示例代码将不胜感激!
谢谢。
lucene - 使用 Hibernate Search 自定义 Lucene 分片
有没有人使用Hibernate Search进行自定义Lucene分片/分区的经验?
Hibernate Search的文档对 Lucene Sharding 进行了以下说明:
在某些情况下,需要将给定实体类型的索引数据拆分(分片)为多个 Lucene 索引。除非有迫切需要,否则不建议使用此解决方案,因为默认情况下,搜索速度会较慢,因为必须为单个搜索打开所有分片。换句话说,在遇到问题之前不要这样做:)
有没有人以这样的方式为 Hibernate Search 实现分片,使得查询也可以定位到其中一个分片?
在我们的例子中,我们有 Lucene 查询,每个查询应该只针对一个分片。
mysql - 从单台机器运行分片数据库
这听起来有点愚蠢,但我有一个分片数据库,我不再认为我需要在两台机器上运行,而是希望在一台机器上运行。
关于如何做到这一点的任何想法?关于如何实现相反的资源有很多资源,但关于如何做到这一点的资源很少
architecture - 如何设计一个可扩展的类似推特的服务?
有没有人有任何关于 twitter 架构的信息?
我特别感兴趣的一些具体项目:
我知道他们使用消息队列。但是他们到底用队列做什么呢?
他们是否“复制”推文?如果是这样,怎么做?例如,假设一个用户有 10,000 个关注者,他发布了一条推文“hello world”。twitter 是否只存储一次“hello world”并且这 10,000 名关注者中的每一个都需要从同一个数据库表中读取该推文,或者每个关注者都有自己的“我正在关注的推文”数据并且“hello world”被复制 10,000次,每个追随者一次?
与上述观点有些相关:他们如何按推文发件人、推文关注者、推文 ID、推文日期时间或其他方式对数据进行分片?
你知道他们使用什么技术吗?我阅读了有关 MySQL、RoR、Starling、Scala、memcached 的信息。不过那是前一阵子了,资料也不是很详细。任何更新的信息或更多细节?
database - 我们未能按自定义安装尝试数据库。计划恢复?
到目前为止,有一个 Web 应用程序处于生产模式 3 年左右。从历史上看,由于不同的原因,决定使用按客户安装的数据库。
现在我们遇到了这样一个事实,即现在的部署非常缓慢。
我们是否应该考虑将所有数据库移回单个数据库以降低环境复杂性?还是这个想法太冒险了?
我现在看到的问题是,很难将这些数据库与保存引用完整性进行合并(不同数据库表的主键不能明显区分)。
数据库并没有那么大,因此拥有多个数据库并没有太多减少负载的好处。