草庐IT

Sharding

全部标签

mongodb - 位置坐标作为 MongoDB 中的分片键

是否可以将纬度和经度坐标作为mongoDB中具有地理空间索引的集合中的分片键?如果没有,您能否建议任何有效的方法来根据位置在应用程序服务器上计算分片键? 最佳答案 不可能使用地理空间索引作为分片键索引。请参阅此处的“重要”注释:http://docs.mongodb.org/manual/core/2d/#d-indexesImportant;Youcannotusea2dindexasashardkeywhenshardingacollection.However,youcancreateandmaintainageospatia

mongodb - db.collection.count() 为 MongoDB 中的分片集合返回更多文档

我有2个带有复制集的分片(每个分片3个实例)。当我在分片集合上执行count()时,我得到的文档数量远远超过实际数量(超过250万个文档差异)。当我在forEach()循环中执行find()和递增计数器时也是如此。我怎么知道文件的真实数量?首先,我知道增加的趋势,即不能增加得那么猛。其次,当我使用以下M/R脚本对文档进行计数时,我得到了真实数量的文档(正如我所假设的)。我使用这个脚本来查看重复的文档。重复的数量是几千而不是几百万。test_duplicate_collection减去重复项的计数为我提供了真实数量的文档。varmap=function(){emit(this.doc_i

Mongodb - 分片和非分片集合

我对它的工作原理有点困惑。在对MySQL进行分片时,我们在每个分片中都有一些表,通常是带有引用数据的小表。这是为了启用连接。如果我们在MongoDB中有小集合,我们不在分片设置中分片,它们会怎样?它们是被发送到每个分片,还是只留在第一个分片中?如果具有许多应用程序服务器的高度分片系统中的所有进程都在一台服务器上运行,我认为这可能是一个潜在的瓶颈。 最佳答案 在具有自动分片功能的MongoDB中,分片集合将以某种方式均匀分布在您拥有的所有分片上。对于那些您不太可能分片(未分片)的集合,您可以指定primaryshard他们将居住在哪个

超出 MongoDB 副本心跳请求时间

我有副本集(托管在亚马逊上),其中有:主要中学仲裁者它们都是3.2.6版本,这个副本正在我的分片集群中创建一个分片(如果这很重要,尽管我认为它不重要)。当我在primary上键入rs.status()时,它说无法到达secondary(同样的事情在仲裁器上):{"_id":1,"name":"secondary-ip:27017","health":0,"state":8,"stateStr":"(notreachable/healthy)","uptime":0,"optime":{"ts":Timestamp(0,0),"t":NumberLong(-1)},"optimeDate

mysql - 使用 Amazon RDS 的 DIY 分片策略

我正在尝试构建自己的分片策略,如下所示。假设我有一个BOXES和ITEMS表,每个盒子可以有几个项目。我将与同一个BOX相关的项目放在一台机器上。box_id主键包含:server_type(例如100)+shard_id+total_amount_of_boxes_per_usertotal_amount_of_boxes_per_user存储在每个用户的用户数据库中,每次用户插入一个新盒子时我都会将它递增1。服务器类型100将与存储box+items数据的服务器列表对齐。这个server_type->shard关系的列表应该放在一个中心位置,我想把它作为一个文档存储在DynamoD

mysql - 使用 LIKE 进行搜索的大型 MySQL 表的分区

我有一个包含8000万条记录的表。表的结构:id-自动递增,代码-5到100个字符的字母数字代码,其他领域。最常用的查询是SELECT*FROMtableWHEREcodeLIKE'%{user-defined-value}%'查询的数量和记录数都在增长。很快我就会遇到性能问题。有什么办法可以把表格分成几部分?或者也许还有其他一些优化表格的方法? 最佳答案 搜索中领先的%是这里的killer。它否定了任何索引的使用。我唯一能想到的就是根据代码长度对表进行分区。例如,如果输入的代码是10个字符长,则先搜索10个字符代码的表,不带前导百

mysql - 在现有的 mysql 表上创建分区

下面是我的表结构,150k条记录CREATETABLE`employees`(`id`mediumint(8)unsignedNOTNULLAUTO_INCREMENT,`name`varchar(255)DEFAULTNULL,`city`varchar(255)DEFAULTNULL,`emailid`varchar(255)DEFAULTNULL,`join_date`dateNOTNULLDEFAULT'0000-00-00',PRIMARYKEY(`id`,`join_date`))ENGINE=InnoDB我正在使用mysql版本:5.5.41数据报告:+---------

用于数据库分片的 MySQL 代理替代方案

有没有MySQL代理的替代品。我不想使用它,因为它仍处于alpha阶段。我将有10个MySQL服务器,table_1table_2table_3table_4...table_10分布在10个服务器上。每个表的结构都是相同的,它们只是具有不同数据集的分片。是否有MySQL代理的替代方案,我可以让我的客户端应用程序连接到单个SQLServer(代理),它查看查询并代表它获取数据。例如,如果客户端从代理请求“SELECT*FROMtable_5WHEREuser=123”,代理连接到容纳table_5的第5个SQLServer并获取数据? 最佳答案

mysql - 跨分片的增量 ID

我正在构建自己的分片解决方案。每个ID的构造如下:分片ID(小整数)表类型id(小整型)增量数(大整数)例如。00001000010000000015我使用虚拟分片,所以我可以将所有分片指向一个服务器,当我需要更多容量时,我只需添加另一台服务器并将一些虚拟分片指向该服务器,这样下次数据将被写入到新服务器而不是第一个服务器上,尽管读取将转到两个服务器,至少在我移动数据并在配置文件中更改它之前是这样。我的问题是递增的数字。我希望它们是独一无二的。在mysql中为特定表使用buildintincrementalid并不好,因为我可能会将数据移动到另一台服务器,并且在那里我可能有另一个数据使用

mysql - 自动分片 MySQL?

现在,我正在处理大量需要实时可用的数据(相信我),以便快速读取和写入客户。我们使用的后端存储系统是Oracle,但我们想用更精简的系统替换我们的大而结实的机器。由于各种原因,我们不能使用Cassandra,我们正在测试(但我很害怕)MongoDB(它真的很年轻并且缺少一些关键功能),所以我在考虑分片一堆MySQL实例。是否有一个好的系统来管理这个,还是我必须自己动手?我发现了一些项目,但我不清楚它们是否支持动态添加/删除分片。 最佳答案 您绝对可以非常有效地使用MySQL实现数据库分片。如果你的分片方案很简单,它可以在你的应用程序层