1. 程式人生 > >[mongodb翻譯]分片的限制(sharding limit)

[mongodb翻譯]分片的限制(sharding limit)

安全

2.0版本程式將會支援sharding狀態下面的認證模式。

與沒有分片配置的區別

  • 2.0版本以前,分片必須執行在可信任的安全模式,沒有明確的安全策略。
  • 在當前版本中,shard key一旦選定後就不能再更改了。
  • 所有的(不是操作多個)更新、更新插入和插入操作必須包含完整的shard key。這會對使用對映庫有些影響,因為此時你無法控制更新操作。

$where

$where在sharding下面可以使用。但是不要在$where函式中引用資料庫物件(db object)。

db.eval

db.eval()不能在分片的集合上面使用。當然,你可以在未分片的集合上面使用db.eval().在分片環境可以使用map/reduce.

getPrevError

getPrevError在分片的資料庫上面是不支援的,而且在將來的發行版本可能也不支援。如果這會給你帶來麻煩,請告訴我們。

Unique Indexes

對於一個分片的集合,你可以為shard key指定唯一的條件約束。你也可以擁有其他的唯一索引當且僅當shard key是他們的屬性的字首。換句話說,mongodb不保證在多shard環境下的唯一性。只要沒有唯一性的限制,你可以建立其他的非唯一性的索引。

規模限制

目標是支援最多1000個shards。到目前為止的對叢集測試限制在一定數目的shards(比如100)。如果以後遇到規模上的限制,更多的資訊將來會更新到這裡。

對集合的大小沒有硬編碼的限制,但是請記住前面章節的描述。你可以建立一個分片的集合,然後向裡面新增資料,相應的資料會新增到相應數量的shard中。當然,只要你的查詢可以很快的查詢到。

查詢速度

包含了shard key的查詢可以很快返回,查詢速度和以前在未分片的環境做查詢相當。

沒有包含shard key的查詢使用了分散/收斂的方法,它會將查詢發給所有的shards。當你有10個shard時效能表現還不錯,但當你有1000個shards,效能可能會很差勁(如果查詢很少的話,效能也會表現的不錯)。

對一個已經存在的集合分片

你可以對一個已經存在的集合進行分片,但是這裡有一些限制。換一種說法,如果你有一個單節點(或者單一複製組),你想把它升級到分片配置,這是可能的。

目前的限制有大小和時間。

  1. 大小:在1.6版本我們設定原始集合最大大小固定在25GB(在1.8版本增大到256GB)。這個限制將來會增大也可能會取消。如果你的應用超過了這個限制,並且你也對集合做了分片,那麼它可以工作。但是所有你的資料都會從一個數據塊開始,導致初始的分發非常慢。在實際應用中,如果你的集合中包含了很多大的文件,這個限制可能會更大一些(由於統計分裂計算點的方法)。一個變通的方案,是可以在db.config.settings中增大預設資料塊大小(比如512M或者1GB),這樣就使能了初始的分裂和遷移。這樣當資料插入時,大的資料塊就自然的分裂了。
  2. 時間:當對一個已經存在的集合做分片時,請知曉這個過程會花費一些時間。分片是在後臺進行的,所以其他操作不會被明顯的受到影響。無論如何,將一個大的集合中的資料進行遷移/平衡會佔用很多時間。例如一個擁有10個shard的系統中,集合中90%的資料需要遷移到其他地方以達到平衡(提醒只對大的集合做資料均衡,如果集合比較小(比如少於400MB)我們建議就不要對它分片了)。

相關推薦

[mongodb翻譯]分片限制(sharding limit)

安全 2.0版本程式將會支援sharding狀態下面的認證模式。 與沒有分片配置的區別 2.0版本以前,分片必須執行在可信任的安全模式,沒有明確的安全策略。在當前版本中,shard key一旦選定後就不能再更改了。所有的(不是操作多個)更新、更新插入和插入操作必須包含完整

Linux下Mongodb的分散式分片群集(sharding cluster)配置

> db.runCommand({shardcollection:"test.c1", key: {id: 1}});); > for (vari=0; i<=2000000; i++) {db.c1.save({id: i, value1: "1234567890",value2: "12

mongodb 3.4 配置sharding分片

摘抄mongodb官網: Sharding is a method for distributing data across multiplemachines. MongoDB uses sharding to support deployments with very

MongoDB分片sharding)/分割槽(partitioning)介紹

分片簡介   分片是指將資料拆分,將其分散存放在不同的機器上的過程。有時也用分割槽(partitioning)來表示這個概念。   幾乎所有資料庫軟體都能進行手動分片(manual sharding)。應用需要維護與若干不同資料庫伺服器的連線,每個連線還是完全獨立的。應用程

MongoDB分片

索引 第一篇 csdn 屬性 collect sso factor mar popu 本文介紹分片的思想和MongoDB中的實現方法。 首先須要介紹一些主要的概念。 分片 分片。也叫做分區。是一種經常使用的數據庫優化技術。其含義就是將數據拆

MongoDB 搭建分片集群

保存數據 img name 重要 過程 enables 範圍 cti eight 在MongoDB(版本 3.2.9)中,分片是指將collection分散存儲到不同的Server中,每個Server只存儲collection的一部分,服務分片的所有服務器組成分片集群。分片

mongodb分片+副本)集群

product idf targe res 數據庫 圖片 you 還需要 server2 mongodb是最常用的noSql數據庫,在數據庫排名中已經上升到了前五。這篇文章介紹如何搭建高可用的mongodb(分片+副本)集群。 在搭建集群之前,需要首先了解幾個概念:路由,分

MongoDB基礎教程系列--第五篇 MongoDB 對映與限制記錄

https://www.cnblogs.com/liruihuan/p/6670289.html 上一篇提到的 find() 的方法,細心的夥伴會發現查詢的結果都是顯示了集合中全部的欄位,實際應用中,顯然是不夠用的。那麼有沒有辦法指定特定的欄位顯示出文件呢?答案是肯定的,MongoDB 中用對映

mongodb實現分片儲存

mongodb分片介紹 分片是由副本集組成的系統 分片就是講資料庫進行拆分,將大型集合分割到不同伺服器上,比如:將原本有100G的資料,進行分割成10份儲存到不同的伺服器上,這樣每臺伺服器只儲存有10G的資料 mongodb通過一個mongos的(路由)程序實現分片後的資料儲存與訪問,也就是說mon

python mongodb建立分片指令碼

注意 建立分片需要在mongodb分片叢集模式下進行 開啟分片功能 #!/usr/bin/python3 import pymongo mongodbUrl = 'mongodb://test:[email protected]:27018,192.168.1.

mongoDB分片技術 shard

mongodb的分片技術 ,是把一個數據庫中的資料,分別儲存在不同的伺服器上,從而減小單個伺服器磁碟的壓力 下面 以一個圖來說明該技術的拓補結構 二.規化 這裡我們 用兩臺機來做 shard 伺服器 (分別是:127.0.0.1:27017和127.0.0.1:

Python3 操作 MongoDB 集合分片

因業務需要,使用 Python3 批量生成 MongoDB 集合、並對其做分片操作。 做分片之前需要登陸 Mongo 為要分片的集合所在的庫授權。 # 在 use 庫下對 test 庫進行 sharding 授權 use admin sh.enableS

MongoDB實戰-分片概念和原理

1. 什麼是分片            到目前為止,你都是把MongoDB當做一臺伺服器在用,每個mongod例項都包含應用程式資料的完整副本。就算使用了複製,每個副本也都是完整克隆了其他副本的資料。對於大多數應用程式而言,在一臺伺服器上儲存完整資料集是完全可以接受的。但隨

mongoDB——自動分片介紹及簡單實現

      分片,是指將資料拆分,將其分散到不同的機器上。這樣的好處就是,不需要功能強大的大型計算機也可以儲存更多的資料,處理更大的負載。       mongoDB的分片,是將collection的

13、MongoDB分片,以及分散式的實現(分片,拆分的是集合,不是單條資料)

 1、分片(sharding)        分片,是指將資料拆分,將其分散存在不同的機器上的過程。 有時也用分割槽(partitioning)來表示這個概念。將資料分散到不同的機器上,不需要功能強大的大型計算機就可以儲存更多的資料,處理更多的負載。 2、MongoDB分

mongoDB分片技術 shard

mongodb的分片技術 ,是把一個數據庫中的資料,分別儲存在不同的伺服器上,從而減小單個伺服器磁碟的壓力 下面 以一個圖來說明該技術的拓補結構   二.規化 這裡我們 用兩臺機來做 shard 伺服器 (分別是:127.0.0.1:27017和127.0.0.1

MongoDB實戰系列之五:mongodb分片配置

md01    10.0.0.11 md02    10.0.0.12 md03    10.0.0.14 2、啟動三臺機器的mongod例項 根據Replica Set、Sharding策略部署mongod。將兩個sharding組部署到三臺伺服器上,每個sharding

MongoDB DBA 實踐6-----MongoDB分片叢集部署(win單機)

                                          分片叢集部署圖如

MongoDB】在windows平臺下mongodb分片叢集(四)

前言:     今天週末卻學了一天,有點不想學習了,就在剛寫完前兩篇後,大概過了一個小時,我就在心裡說,如果剛才寫的那兩篇部落格閱讀量過了80我就些這篇部落格,如果不過,今晚就不再學習了。剛剛一看,一篇恰好80,另一篇是85.。所以在此謝謝網友給的動力。那這篇部落格繼續給大

Mongodb】aggregate限制返回欄位

使用$project即可 db.xx.aggregate({$project:{_id:1}}) db.xx.aggregate({$match:{opTime:{$gt:1475091390000}}},{$project:{_id:1}},{$skip:5},{$lim