问题标签 [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.
mongodb - 将查询 MongoDB 集合限制为仅非活动块
我正在构建一个将执行 2 个阶段的应用程序。
- 执行阶段 - 第一阶段非常
INSERT
密集(硬件可以在一秒钟内执行尽可能多的插入)。这本质上是执行工作的日志记录。 - 验证阶段 - 下一阶段将查询阶段 1 生成的日志,并与外部源进行比较,
UPDATE
并对记录执行一次以存储一些统计信息。此过程是阶段 1 的第二优先级。
我正在尝试查看并行执行它们是否可行,并将执行阶段的写锁定保持在最低限度。我认为做到这一点的一种方法是将我的验证阶段限制为仅查询不在执行阶段当前插入的块中的旧记录。MongoDB 中是否有某些东西限制find()
只从在可配置的时间内未访问的块中查询?
amazon-ec2 - 对 EC2 EBS 卷进行分片是否会提高性能?
我正在考虑将 EBS 用于大量邮件目录。许多小文件分布在许多目录中。与一个大型 EBS 卷相比,将我的 EBS 存储分片到多个较小的容器中会产生读/写性能提升吗?
scalability - RavenDB - 规划可扩展性
我最近一直在学习 RavenDB,并想使用它。
我想知道人们对以可扩展的方式构建系统有什么建议或建议,特别是跨服务器分片数据,但这可以在单个服务器上开始,并且只能根据需要增长。
在单个实例上创建多个数据库并在它们之间实现分片是否可取,甚至可能。然后扩展它只是将这些数据库分布在机器上的问题?
我的第一印象是这种方法会奏效,但我很想听听其他人的意见和经验。
更新1:
我一直在思考这个话题。我认为我对“稍后整理”方法的问题是,在我看来,在这种情况下很难将数据均匀地分布在服务器之间。我不会有一个可以在(AE,FM ..)范围内的字符串键,它将用数字完成。
这留下了我可以看到的两个选项。要么在边界处打破它,所以 1-50000 在分片 1 上,50001-100000 在分片 2 上,但是对于一个老化的网站,比如这个,你的原始分片将做更少的工作。或者,如果您需要将文档移动到新的分片,循环分片并将分片 id 放入键中的策略将受到影响,它会更改键并破坏已使用该键的 url。
所以我的新想法,我再次提出来征求意见,就是从第一天开始创建一个分桶系统。这就像将分片 id 填充到密钥中一样,但你从一个大数字开始,比如 1000,你在它们之间平均分配。然后,当需要将负载拆分为分片时,您可以说将存储桶 501-1000 移动到新服务器并编写分片逻辑,即 1-500 进入分片 1,501-1000 进入分片 2。然后当一个第三台服务器上线,您选择另一个范围的存储桶并进行调整。
在我看来,这使您能够拆分成与最初创建的存储桶一样多的分片,从而在数量和年龄方面平均分配负载。无需更改密钥。
想法?
mongodb - 可以将 mongos 配置为与多个 mongo 集群通信吗?
经验法则是让“mongos”进程在每个应用程序服务器上运行。这使您的应用程序可以快速与 localhost 通信,并且您的 mongos 进程可以随您的应用程序扩展。
假设我们有 2 个不同的 mongo 集群(分片),是否可以配置一个 mongos 进程来与两个不同的集群通信?抽象出数据库位于不同地方的事实会很棒。
或者您是否必须在不同的端口上启动两个不同的 mongos 进程?如果这是可能的,我仍然担心让两个不同的 mongos 进程争夺资源可能会很危险。
还是完全不同的东西?想法?
google-app-engine - Google AppEngine 分片问题
我的背景是关系数据库,我正在用 Google AppEngine 做一些实验,主要是为了学习。我想构建一个“选举”应用程序,其中用户属于一个州(加利福尼亚州、纽约州、德克萨斯州等),他们选择一个政党(共和党、民主党等)并为特定年份投票(目前为 2012 年,但该应用程序可以在 2016 年重复使用)。
我希望用户能够查看他们的投票历史记录,并可能在当前选举中更改一次。此外,我将要求用户指定他们的邮政编码,并认为按州和/或邮政编码运行一些报告会很好。
使用关系数据库,您似乎会创建一些像这样的表:
然后使用 SQL 运行报表。对于 AppEngine 数据存储,运行汇总报告似乎有些困难。
我最初的想法是User
在每个用户可以包含一个列表的位置进行分片Votes
,然后可能会将聚合双重保存在其他地方。
有什么建议么?
PS 我已经看过AppEngine-MapReduce项目,但不确定这是否是矫枉过正。
sharding - Apache Zookeeper 如何用于分片?
我们正在考虑集中 cfg 信息,看起来 zookeeper 是一个不错的选择。我们也对分片感兴趣并且有一个方案。在 poweredBy[1] 中看到 Rackspace 和 Yahoo 正在使用 Zookeeper 进行分片。将不胜感激指针和细节。
[1] https://cwiki.apache.org/confluence/display/ZOOKEEPER/PoweredBy
sql-server - 如何在不重复分片的情况下扩展数据库中的写入?
您将如何在不重复分片的情况下扩展写作(特别是使用 SQL Server 2008)?
mysql - 在 MySQL 中查询分片数据
我正在处理 MySQL 数据库中的大量数据,我想使用分片来横向扩展。我了解分片的原理,我什至知道我想如何分片我的数据。
当我查找数据库分片时,我找不到任何关于如何实际管理和查询分片数据库的全面示例。
具体来说,假设我已将数据拆分为多个表/数据库(分片),查询该数据的最佳方法是什么?我认为没有办法让 mysql 智能地知道使用哪个分片。
是否有可以管理分片和我的查询的 3rd 方软件?或者我是否必须更改我的代码(用 php 编写)才能与分片数据交互?
hibernate - 使用 JPA 进行哈希分区/分片的库
我的部门已决定对我们的一些大型 Oracle 数据库进行散列分区/分片。我们将在不同的模式中拆分我们的实体。我的任务是评估不同 JPA 实现对此的适用性。
我告诉过要关注的两个是EclipseLink和 Apache OpenJPA/Slice。我们过去只使用过 Hibernate,但Hibernate Shards处于测试阶段,似乎不再积极开发(最后一个版本是 2007 年),所以我们不考虑它。
我将进行自己的评估和试验实施,但我不相信我会在给定的时间内对这些实施的整体质量有很好的感觉。如果您在生产环境中使用 OpenJPA 和/或 EclipseLink,特别是如果您的数据库是共享的,我想听听您的经验(正面和负面),您对它们的整体质量的看法,以及您是否愿意这样做有机会再选择。
php - 如何使用 PHP 配置 MongoDB 分片?
我正在努力在 EC2 上设置 MongoDB 副本集。我想配置自动分片,以便我的节点可以轻松上下。
是否可以使用原生 PHP 驱动程序来触发分片和添加/删除节点?如果是这样,怎么做?