當前位置:首頁 » 編程語言 » mangodb支持sql
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

mangodb支持sql

發布時間: 2022-08-23 21:16:20

㈠ mongodb怎麼支持hive-sql

當然不支持,mongodb是bjson格式的文檔數據,幾乎支持單表查詢,目前沒有連表查,支持正則表達式的查詢

㈡ 為什麼MongoDB可以替代MySQL

MongoDB是一個面向文檔的資料庫,目前由10gen開發並維護,它的功能豐富,齊全,完全可以替代MySQL。在使用MongoDB做產品原型的過程中,我們總結了MonogDB的一些亮點:使用JSON風格語法,易於掌握和理解:MongoDB使用JSON的變種BSON作為內部存儲的格式和語法。針對MongoDB的操作都使用JSON風格語法,客戶端提交或接收的數據都使用JSON形式來展現。相對於SQL來說,更加直觀,容易理解和掌握。Schema-less,支持嵌入子文檔:MongoDB是一個Schema-free的文檔資料庫。一個資料庫可以有多個Collection,每個Collection是Documents的集合。Collection和Document和傳統資料庫的Table和Row並不對等。無需事先定義Collection,隨時可以創建。Collection中可以包含具有不同schema的文檔記錄。 這意味著,你上一條記錄中的文檔有3個屬性,而下一條記錄的文檔可以有10個屬性,屬性的類型既可以是基本的數據類型(如數字、字元串、日期等),也可以是數組或者散列,甚至還可以是一個子文檔(embed document)。這樣,可以實現逆規范化(denormalizing)的數據模型,提高查詢的速度。圖1 MongoDB是一個Schema-free的文檔資料庫圖2是一個例子,作品和評論可以設計為一個collection,評論作為子文檔內嵌在art的comments屬性中,評論的回復則作為comment子文檔的子文檔內嵌於replies屬性。按照這種設計模式,只需要按照作品id檢索一次,即可獲得所有相關的信息了。在MongoDB中,不強調一定對數據進行Normalize ,很多場合都建議De-normalize,開發人員可以扔掉傳統關系資料庫各種範式的限制,不需要把所有的實體都映射為一個Collection,只需定義最頂級的class。MongoDB的文檔模型可以讓我們很輕松就能將自己的Object映射到collection中實現存儲。圖2 MongoDB支持嵌入子文檔簡單易用的查詢方式:MongoDB中的查詢讓人很舒適,沒有SQL難記的語法,直接使用JSON,相當的直觀。對不同的開發語言,你可以使用它最基本的數組或散列格式進行查詢。配合附加的operator,MongoDB支持范圍查詢,正則表達式查詢,對子文檔內屬性的查詢,可以取代原來大多數任務的SQL查詢。CRUD更加簡單,支持in-place update:只要定義一個數組,然後傳遞給MongoDB的insert/update方法就可自動插入或更新;對於更新模式,MongoDB支持一個upsert選項,即:「如果記錄存在那麼更新,否則插入」。MongoDB的update方法還支持Modifier,通過Modifier可實現在服務端即時更新,省去客戶端和服務端的通訊。這些modifer可以讓MongoDB具有和Redis、Memcached等KV類似的功能:較之MySQL,MonoDB更加簡單快速。

㈢ mongodb使用場景是什麼

使用場景:

(1)網站數據:MongoDB適合實時的插入,更新與查詢,並具備網站實時數據存儲所需的復制及高度伸縮性。

(2)緩存:由於性能很高,MongoDB也適合作為信息基礎設施的緩存層。在系統重啟之後,由MongoDB搭建的持久化緩存層可以避免下層的數據源過載。

(3)大尺寸,低價值的數據。

(4)高伸縮性的場景:MongoDB適合由數十或數百台伺服器組成的資料庫。

(5)用於對象及JSON數據的存儲:MongoDB的BSON數據格式適合文檔化格式的存儲及查詢。

mongodb設計特點:

(1)面向集合存儲,容易存儲對象類型的數據。在MongoDB 中數據被分組存儲在集合中,集合類似RDBMS 中的表,一個集合中可以存儲無限多的文檔。

(2)模式自由,採用無模式結構存儲。在MongoDB 中集合中存儲的數據是無模式的文檔,採用無模式存儲數據是集合區別於RDBMS 中的表的一個重要特徵。

(3)支持完全索引,可以在任意屬性上建立索引,包含內部對象。MongoDB的索引和RDBMS 的索引基本一樣,可以在指定屬性、內部對象上創建索引以提高查詢的速度。除此之外,MongoDB 還提供創建基於地理空間的索引的能力。

(4)支持查詢。MongoDB 支持豐富的查詢操作,MongoDB 幾乎支持SQL中的大部分查詢。

(5)強大的聚合工具。MongoDB 除了提供豐富的查詢功能外,還提供強大的聚合工具,如count、group 等,支持使用MapRece 完成復雜的聚合任務。

㈣ mongodb mysql 優勢

Mongodb是非關系型資料庫(nosql ),屬於文檔型資料庫。文檔是mongoDB中數據的基本單元,類似關系資料庫的行,多個鍵值對有序地放置在一起便是文檔,語法有點類似javascript面向對象的查詢語言,它是一個面向集合的,模式自由的文檔型資料庫。
存儲方式:虛擬內存+持久化。
查詢語句:是獨特的Mongodb的查詢方式。
適合場景:事件的記錄,內容管理或者博客平台等等。
架構特點:可以通過副本集,以及分片來實現高可用。
數據處理:數據是存儲在硬碟上的,只不過需要經常讀取的數據會被載入到內存中,將數據存儲在物理內存中,從而達到高速讀寫。
成熟度與廣泛度:新興資料庫,成熟度較低,Nosql資料庫中最為接近關系型資料庫,比較完善的DB之一,適用人群不斷在增長。
優勢:
快速!在適量級的內存的Mongodb的性能是非常迅速的,它將熱數據存儲在物理內存中,使得熱數據的讀寫變得十分快。高擴展性,存儲的數據格式是json格式!
MySQL是關系型資料庫。
優勢:
在不同的引擎上有不同 的存儲方式。
查詢語句是使用傳統的sql語句,擁有較為成熟的體系,成熟度很高。
開源資料庫的份額在不斷增加,mysql的份額頁在持續增長。

㈤ mongodb 怎麼執行sql

  1. 互動式 mongo shell

    mongo 127.0.0.1:27017

    use test

    db.users.findOne()

  2. mongo --eval 運行一段腳本

    mongo 127.0.0.1:27017/test --eval "printjson(db.users.findOne())"

  3. 在OS命令行下,運行一個js文件

    mongo127.0.0.1:27017/test userfindone.js

    userfindone.js 的內容:

    printjson(db.users.findOne());

  4. 在mongo shell 交互模式下,運行一個js文件

    mongo test

    load("/root/mongojs/userfindone.js")

    load() 參數中的文件路徑,既可以是相對路徑,也可以是絕對路徑。

    在mongo shell下查看當前工作路徑的方法: pwd( )

    當前工作路徑就是我們啟動mongo shell時,當前用戶所處的路徑。

    例如:

    [root@cgl-centos-dev mongojs]# pwd

    /root/mongojs

    [root@cgl-centos-dev mongojs]# mongo

    MongoDB shell version: 2.6.12

    connecting to: test

    > pwd()

    /root/mongojs

    >

  5. MongoDB 查詢數據的語法格式如下:

    db.collection.find(query, projection)

    query:可選,使用查詢操作符指定查詢條件

    projection:可選,使用投影操作符指定返回的鍵。查詢時返迴文檔中所有鍵值, 只需省略該參數即可(默認省略)。

  6. 如果你需要以易讀的方式來讀取數據,可以使用 pretty() 方法,語法格式如下:>db.col.find().pretty()

    pretty() 方法以格式化的方式來顯示所有文檔

    以下實例我們查詢了集合 col 中的數據:

    > db.col.find().pretty(){
    "_id" : ObjectId("56063f17ade2f21f36b03133"),
    "title" : "MongoDB 教程",
    "description" : "MongoDB 是一個 Nosql 資料庫",
    "by" : "菜鳥教程",
    "url" : "http://www.runoob.com",
    "tags" : [
    "mongodb",
    "database",
    "NoSQL"
    ],
    "likes" : 100}

    除了 find() 方法之外,還有一個 findOne() 方法,它只返回一個文檔。

㈥ mongodb中怎麼類似於jdbc一樣,執行自己寫得sql語句

mongodb是非關系型資料庫,並不支持sql語句,它執行的是類似json對象的語句,而且各個編碼語音不一樣驅動實現的也不一樣,可以實際看看具體例子。

㈦ MongoDB與MySQL:如何選擇

MongoDB和MySQL分別是領先的開源NoSQL和關系資料庫。哪個最適合您的應用程序?

在1990年代的互聯網泡沫時期,用於Web應用程序的一種通用軟體堆棧是LAMP,它最初代表Linux(OS),Apache(Web伺服器),MySQL(關系資料庫)和PHP(伺服器編程語言)。MySQL是首選的資料庫,主要是因為它是免費的開源代碼,並且具有良好的讀取性能,非常適合從資料庫動態生成網站的「 Web 2.0」應用程序。

之後,代表MongoDB(文檔資料庫),Express(Web伺服器),AngularJS(前端框架)和Node.js(後端JavaScript運行時)的MEAN堆棧開始流行。除其他原因外,MEAN堆棧很有吸引力,因為您需要了解的唯一語言是JavaScript。與等效的LAMP堆棧相比,它還需要更少的RAM。

MySQL AB的Monty Widenius和David Axmark最初於1994年開始開發MySQL。產品名稱中的「 My」是指Widenius的女兒,而不是英語單詞「 my」。MySQL旨在與mSQL(又名Mini)兼容。 SQL),並添加了SQL查詢層和開放源代碼許可(實際上是專有和GPL雙重許可)。MySQL的公共發行版於1996年底開始,並且每年或每兩年持續發行一次。MySQL是當前最受歡迎的關系資料庫。

Sun Microsystems於2008年以10億美元的價格收購了MySQL AB,Oracle於2010年收購了Sun。在Oracle收購MySQL的廣泛關注中,Widenius在收購Oracle之前就將MySQL 5.5合並到了MariaDB中。MariaDB努力維護與Oracle MySQL版本的兼容性。

與功能更強大的商業關系資料庫(例如Oracle資料庫,IBM DB / 2和Microsoft SQL Server)相比,MySQL最初是一個相當低端的關系資料庫,盡管它足以成為動態網站的後備存儲。多年來,它增加了您希望從關系資料庫獲得的大多數功能,包括事務,參照完整性約束,存儲過程,游標,全文索引和搜索,地理索引和搜索以及群集。

盡管MySQL現在支持「大資料庫」功能,例如主從部署,與Memcached一起使用以及水平分片,但它仍通常用於中小型部署。將MySQL擴展到多個從屬伺服器可以提高讀取性能,但是只有主伺服器才能接受寫請求。

AWS提供了兩種形式的MySQL即服務,即Amazon RDS和Amazon Aurora。後者具有更高的性能,可以處理TB級的數據,更新副本的延遲時間更短,並且可以直接與Oracle資料庫和SQL Server競爭。

MongoDB是高度可伸縮的操作文檔資料庫,可在開源版本和商業企業版本中使用,它可以在本地運行或作為託管雲服務運行。託管雲服務稱為MongoDB Atlas。

MongoDB無疑是NoSQL資料庫中最受歡迎的資料庫。它的文檔數據模型為開發人員提供了極大的靈活性,而其分布式體系結構則提供了很好的可伸縮性。因此,通常選擇MongoDB用於必須管理大量數據,得益於水平可伸縮性並處理不適合關系模型的數據結構的應用程序。

MongoDB是一個基於文檔的存儲,在其之上還具有一個基於圖形的存儲。MongoDB實際上並不存儲JSON:它存儲BSON(二進制JSON),該擴展了JSON表示(字元串)以包括其他類型,例如int,long,date,浮點,decimal128和地理空間坐標。

MongoDB可以使用數據的類型生成正確的索引類型,從而在數據的單個副本上生成多模式圖形,地理空間,B樹和全文本索引。MongoDB使您可以在任何文檔欄位上創建索引。MongoDB 4具有多文檔事務,這意味著即使必須標准化數據設計,您仍然可以獲得ACID屬性。

默認情況下,MongoDB使用動態模式,有時稱為無模式。單個集合中的文檔不需要具有相同的欄位集,並且欄位的數據類型可以在集合中的不同文檔之間有所不同。您可以隨時使用動態模式更改文檔結構。

但是,可以使用架構治理。從MongoDB 3.6開始,MongoDB支持JSON模式驗證,您可以在驗證器表達式中將其打開。

在LAMP和MEAN堆棧上存在很多變化。例如,您可以在Windows(WAMP)或MacOS(MAMP)上運行而不是Linux OS。您可以運行IIS(WIMP),而不是Windows上的Apache Web伺服器。

您可以運行PostgreSQL或SQL Server,而不是LAMP堆棧中的MySQL關系資料庫。如果您需要全球分布,則可以運行CockroachDB或Google Cloud Spanner。可以使用Perl或Python代替PHP語言。如果要使用Java或C#進行編碼,則需要考慮單獨的堆棧系列。

您可以運行Couchbase或Azure Cosmos DB以獲得更好的全局分布,而不是MEAN堆棧中的MongoDB文檔資料庫。可以使用十二個Node.js Web伺服器框架中的任何一個來代替Express 。除了AngularJS前端框架,您還可以運行Angular 2或React。

選擇資料庫時要問的最重要的問題是:

這些問題中的幾個會趨於縮小資料庫的選擇范圍,但是與制定LAMP堆棧時相比,我們有更多選擇。如果您要構建一個應用程序,並且該應用程序必須在99.999%的時間內對全世界的用戶都具有高度的一致性,那麼只有少數幾個資料庫適合您。如果您的應用程序將在工作日的上午9點至下午6點在一個國家/地區使用,並且可以容忍最終的一致性,那麼幾乎所有資料庫都可以使用,盡管某些資料庫對於開發人員和操作員而言更容易,而某些資料庫則可以為您的主要使用場景提供更好的性能。

雖然LAMP和MEAN堆棧一次是Web應用程序的良好解決方案,但現在都不是最佳選擇。而不是盲目採用任何一種,您應該仔細考慮用例,並找到一種可在可預見的將來為您的應用程序服務的體系結構。

您什麼時候需要關系資料庫(例如MySQL)用於新應用程序?除了對標准SQL的明顯支持外,關系資料庫本身將數據強制為具有一致的強類型欄位的表格模式,並且只要您利用規范化就可以幫助您避免數據重復。

另一方面,如果您還需要偶爾的自由格式文檔,則MySQL和許多其他關系資料庫也支持RFC 7159定義的JSON數據。如果您還想使用XML文檔和XPath或XSLT,則大多數關系資料庫都可以提供這種能力。

您何時需要像MongoDB這樣的文檔資料庫?如果您的主要用例需要允許使用自由格式的數據,在文檔之間更改類型的欄位,隨時間變化的架構或嵌套的文檔,則NoSQL資料庫將滿足要求。另外,如果您的應用程序是用JavaScript編寫的,那麼文檔資料庫的JSON格式將很自然。

作者: Martin Heller是InfoWorld的特約編輯和審稿人。他曾擔任Web和Windows編程顧問,從1986年至2010年開發資料庫,​​軟體和網站。最近,他擔任Alpha Software技術和教育副總裁以及Tubifi董事長兼首席執行官。