mongodb圖片上傳
1. 存儲海量圖片數據用mongoDB還是Hbase呢
我所知道的FackBook、Instagram、Twitter 都是用的Redis,國內的新浪微博、騰訊微博、搜狐等也是用的它
2. 10個頂級Mongodb GUI工具,以圖形方式管理資料庫
MongoDB是一個面向文檔的資料庫,屬於Nosql資料庫,它使用類似JSON的文檔和schemata。
MongoDB的默認介面是(CLI)命令行,新用戶很難像專業人員那樣處理資料庫。因此,有一些MongoDB管理工具來提供GUI界面以提高生產力。就像phpmyadmin為MySQL/MariaDB資料庫提供基於HTTP網路的GUI界面一樣。但是,此處包含的所有工具都不是基於HTTP的,只有少數工具為MongoDB提供Web界面。以下是使用GUI的比較流行的MongoDB管理工具列表:
要從具有圖形用戶界面的MongoDB開始,MongoDB是最好的方法之一。MongoDB Compass Community由MongoDB開發人員開發,這意味著更高的可靠性和兼容性。它為MongoDB提供GUI mongodb工具,以 探索 資料庫交互;具有完整的CRUD功能並提供可視方式。藉助內置模式可視化,用戶可以分析文檔並顯示豐富的結構。為了監控伺服器的負載,它提供了資料庫操作的實時統計信息。就像MongoDB一樣,Compass也有兩個版本,一個是Enterprise(付費),社區可以免費使用。適用於Linux,Mac或Windows。
NoSQLBooster是MongoDB CLI界面中非常流行的GUI工具。它正式名稱為MongoBooster。NoSQLBooster是一個跨平台,它帶有一堆mongodb工具來管理資料庫和監控伺服器。這個Mongodb工具包括伺服器監控工具,Visual Explain Plan,查詢構建器,SQL查詢,ES2017語法支持等等......它有免費,個人和商業版本,當然,免費版本有一些功能限制。NoSQLBooster也可用於Windows,MacOS和Linux。
ClusterControl是另一個MongoDB工具,具有管理資料庫基礎結構的GUI。它還有兩個版本 - 社區和企業版。不用說,ClusterControl社區版可以免費使用,而企業則是付費的。它不僅限於MongoDB,還支持MySQL,MySQL復制,MySQL NDB集群,Galera集群,MariaDB,PostgreSQL,TimescaleDB,Docker和ProxySQL。
ClusterControl為資料庫基礎架構提供全自動安全性,該基礎架構具有單個圖形用戶界面,可操作和自動化MongoDB和MySQL資料庫環境。它可通過YUM/APT提供回購,適用於Linux平台(RedHat,Centos,Ubuntu或Debian)。
Nosqlclient是一個免費的開源MongoDB管理工具,基於Web的GUI意味著不再需要命令行來管理資料庫。我們可以使用Nosqlclient在MongoDB中插入,刪除或更新數據,而無需使用查詢。它可作為桌面應用程序,Docker和Web應用程序使用。Web使用HTTP為MOngoDB提供基於瀏覽器的界面。
Robo 3T由MongoDB客戶端Studio 3T的開發人員維護和提供。以前,Robo 3T被稱為Robomongo。它也是適用於Windows,MacOS和Linux的跨平台MongoDB GUI管理工具。它具有相同的引擎和環境,是MongoDB shell(3.2)的一部分。
上面提到的Robomong被3T收購並更名為Robot 3T;現在是Studio 3T的一部分。那麼,Studio 3T是什麼?與其他提到的MongoDB管理GUI工具一樣,Studio 3T也是一個基於GUI的工具,用於管理資料庫,但在付費類別中。但是,此工具的30天免費試用版允許用戶在投入資金之前使用並了解其功能。與免費和開源Robot 3T相比,Studio 3T具有更多功能並提供企業支持。與Robo 3T相同,它也適用於Windows,Linux(Ubuntu和CentOS)和MacOS。
Mongo Management Studio是一個用於資料庫管理的免費MongoDB GUI工具。它輕巧,界面清晰,易於開發基於MongoDB的項目。它使用nodeJs,Electron框架,MongoDB和AngularJs開發。MMS與MongoDB 3.0/3.2/3.4兼容。
與上述所有MongoDB管理工具一樣,用戶可以輕松安裝它,但免費版僅適用於Windows;而企業和個人則適用於Linux,Windows和MacOS。企業版(Web伺服器)支持MongoDB Web界面HTTP GUI,這意味著我們可以在主伺服器上安裝,之後可以在本地或遠程使用瀏覽器的任何系統上訪問。但是,個人版和免費版只能在已安裝它們的本地系統上使用。
它是面向關系,NoSQL和雲平台的資料庫開發人員的通用集成開發環境(IDE)。因此,支持各種資料庫來開發,訪問,管理和可視化分析數據。
對於MongoDB,Aqua Data Studio使用具有管理和資料庫查詢功能的圖形用戶界面作為管理工具。Aqua Data studio的Visual界面允許用戶瀏覽和修改資料庫結構,包括模式對象和集合,以及維護資料庫安全性。
它提供了一個MongoDB資料庫工具包,包括各種工具,如Visual Analytics,MongoSQL查詢參考,MongoJS查詢分析器,MongoShell MongoShell,FluidShell,查詢和分析工具,網格和數據透視圖,表數據編輯器,導入和導出工具,實體關系建模;Visual Query Builder;比較工具:架構比較,文件比較;SQL 歷史 記錄,Open API腳本環境,集成安全Shell(SSH)和版本控制:Subversion(SVN),Git,CVS,Perforce。
MongoJS查詢分析器Javascript編輯器允許執行JavaScript命令並支持自動完成和語法突出顯示。結果可以在樹層次結構,網格結果和文本中看到。
作為付費產品,Aqua Data Studio的試用版提供14天,具有所有企業功能。所以,如果你正在尋找一些付費產品,那麼你可以在花錢之前免費試用它。它適用於Windows,Linux和MacOS。
這聽起來像phpMyAdmin工具。但是,phpMoAdmin也是PHP編寫的但是可用於MongoDB。它基於Vork PHP框架。很輕巧,易於安裝。它只有115KB的moadmin.php文件,用戶可以放在網站的任何地方開始工作。
它是一個跨平台的MongoDB管理工具,在Open Source許可下發布,使用Electron框架和Angular JS構建。可在GitHub上找到。
以上談到了Windows,Linux和MacOS MongoDB管理客戶端,所以那些正在尋找智能手機和平板電腦的用戶mongoDB管理可以試試Mongolime。它為MongoDB移動客戶端提供了輕松連接和訪問MongoDB伺服器的功能。它具有內置的SSH隧道,可以通過SSL輕松驗證和連接遠程伺服器。MongoLime是免費增值MongoDB客戶端應用程序,支持iOS和Android平台。
使用Node.js,Express和Bootstrap3編寫的基於Web的MongoDB管理界面。它允許連接多個資料庫;查看/添加/刪除資料庫,集合和文檔;預覽音頻/視頻/圖像資產;GridFS支持 - 添加/獲取/刪除難以置信的大文件;在文檔中使用BSON數據類型,Mobile / Responsive - Bootstrap以及更多功能。
3. 如何保證文檔內容唯一 mongodb
在MongoDB中,如果不特別指定,每個文檔都會生成一個唯一的ObjectId作為其主鍵_id的值。這個值是一個看似隨機的串。這個串到底是什麼值?為什麼MongoDB要使用這個值作為默認主鍵?它內部又包含了什麼樣的信息?如果你還不了解,就請看下面文章吧。
MongoDB中數據的基本單元稱為文檔(Document)。文檔是MongoDB的核心概念,多個鍵極其關聯的值有序的放置在一起便是文檔。
在一個特定集合內部,需要唯一的標識文檔。因此MongoDB中存儲的文檔都由一個」_id」鍵,用於完成此功能。這個鍵的值可以是任意類型的,默認試ObjectId對象。ObjectId對象的生成思路是本文的主題,也是很多分布式系統可以借鑒的思路。
為了考慮分布式,「_id」要求不同的機器都能用全局唯一的同種方法方便的生成它。因此不能使用自增主鍵(需要多台伺服器進行同步,既費時又費力),因此選用了生成ObjectId對象的方法。
ObjectId使用12位元組的存儲空間,其生成方式如下:
0 1 2 3 4 5 6 7 8 9 10 11
時間戳 機器ID PID 計數器
前四個位元組時間戳是從標准紀元開始的時間戳,單位為秒,有如下特性:
時間戳與後邊5個位元組一塊,保證秒級別的唯一性;
保證插入順序大致按時間排序;
隱含了文檔創建時間;
機器ID是伺服器主機標識,通常是機器主機名的散列值。
同一台機器上可以運行多個mongod實例,因此也需要加入進程標識符PID。
前9個位元組保證了同一秒鍾不同機器不同進程產生的ObjectId的唯一性。後三個位元組是一個自動增加的計數器(一個mongod進程需要一個全局 的計數器),保證同一秒的ObjectId是唯一的。同一秒鍾最多允許每個進程擁有(256^3 = 16777216)個不同的ObjectId。
總結一下:時間戳保證秒級唯一,機器ID保證設計時考慮分布式,避免時鍾同步,PID保證同一台伺服器運行多個mongod實例時的唯一性,最後的計數器保證同一秒內的唯一性(選用幾個位元組既要考慮存儲的經濟性,也要考慮並發性能的上限)。
「_id」既可以在伺服器端生成也可以在客戶端生成,在客戶端生成可以降低伺服器端的壓力。