偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

如何用MariaDB管理NoSQL數(shù)據(jù)

譯文
數(shù)據(jù)庫 其他數(shù)據(jù)庫 MariaDB
MariaDB的NoSQL偵聽器功能提供了與NoSQL數(shù)據(jù)庫的更多互操作性。本文將依次介紹如何進行環(huán)境設(shè)置,配置MaxScale,以及如何使用簡單的Web應(yīng)用,去管理NoSQL文檔數(shù)據(jù)。

[[437982]]

【51CTO.com快譯】不知您是否已注意到,MariaDB MaxScale 6的新功能中,已包含了針對NoSQL偵聽器(listeners)功能的技術(shù)預(yù)覽。而作為MaxScale的關(guān)鍵部分,偵聽器可用于定義接受客戶端連接服務(wù)所用到的端口協(xié)議對。

NoSQL協(xié)議模塊

作為新的NoSQL協(xié)議模塊,偵聽器使得MariaDB服務(wù)器或集群,能夠成為那些使用MongoDB客戶端庫的應(yīng)用的后端。也就是說,您可以將由MongoDB驅(qū)動程序提供的NoSQL文檔數(shù)據(jù),直接存儲到MariaDB數(shù)據(jù)庫中。在其內(nèi)部,所有文檔都存儲在一個包含了兩個列的表中。

如下圖所示,從高級別來看,當(dāng)MongoDB客戶端應(yīng)用程序直接或間接地通過客戶端庫,發(fā)出MongoDB協(xié)議命令時,它們會被透明地轉(zhuǎn)換為等效的SQL,并會在MariaDB后端被執(zhí)行。同樣,MariaDB的響應(yīng)也會依次轉(zhuǎn)換為MongoDB客戶端庫,以及應(yīng)用程序所需的格式。下面,我將向您展示其具體過程。

在開始之前,您需要在機器上事先安裝GitDocker。

我們可以通過多種方式,開始使用MaxScale、及其新的NoSQL偵聽器功能。在本次展示中,我創(chuàng)建了一個存儲庫。它可以通過Docker(https://www.docker.com/),在數(shù)分鐘之內(nèi)啟動、運行和測試新的功能。

具體而言,我將使用位于https://github.com/mariadb-corporation/dev-example-nosql-listener的GitHub存儲庫,來設(shè)置一個新的環(huán)境。該環(huán)境允許我們使用MaxScale、MariaDB Community服務(wù)器、以及一個示例應(yīng)用,來實現(xiàn)如何在MariaDB中管理NoSQL文檔數(shù)據(jù)。

下面,我將依次進行環(huán)境設(shè)置,配置MaxScale,以及使用簡單的Web應(yīng)用,通過MongoDB的Node.js驅(qū)動,去管理NoSQL文檔數(shù)據(jù)。

環(huán)境設(shè)置

通過創(chuàng)建和使用Docker容器,開發(fā)人員將能夠在任何環(huán)境下,輕松地運行可移植、輕量級和獨立(self-sufficient)的應(yīng)用程序,而無需擔(dān)心設(shè)置環(huán)境的依賴項。具體而言,我們可以使用Docker Compose,來定義和運行多的Docker容器應(yīng)用。當(dāng)然,您首先需要將存儲庫引入主機。 

  1. $ git clone https://github.com/mariadb-corporation/dev-example-nosql-listener  

請在新產(chǎn)生的根目錄下,打開一個dev-example-nosql-listener終端窗口,然后執(zhí)行如下命令:

  1. $ docker-compose up 

docker-compose up將使用名為docker-compose.yml的文件,來構(gòu)建、創(chuàng)建、啟動和加載容器。簡單而言,它將設(shè)置一組如下表所示的容器,并建立鏈接。

容器名稱描述

您可以通過執(zhí)行如下命令,來檢查系統(tǒng)上、當(dāng)前正在運行的活動容器是否有效:

  1. $ docker ps 

其輸出結(jié)果會顯示mxs、mdb、todo_client和todo_api容器的相關(guān)信息。

添加MaxScale數(shù)據(jù)庫用戶

為了讓MaxScale能夠訪問MariaDB Community服務(wù)器,您可以通過下面兩種方法,添加一個新的用戶。

1. 通過使用容器:

請連接到被包含在mdb容器中的MariaDB Community服務(wù)器實例上,并通過使用包含在Docker容器中的MariaDB命令行客戶端,來執(zhí)行add_maxscale_user.sql腳本。

  1. $ docker exec -i mdb mariadb --user root -pPassword123! < configuration/add_maxscale_user.sql 

2. 通過執(zhí)行本地系統(tǒng):

請連接到被包含在mdb容器中的MariaDB Community服務(wù)器實例上,并使用主機上的MariaDB命令行客戶端,來執(zhí)行add_maxscale_user.sql腳本。

  1. $ mariadb --host 127.0.0.1 --port 3307 --user root -pPassword123! < configuration/add_maxscale_user.sql 

配置MariaDB MaxScale

完成新用戶的添加后,我們便可以配置MaxScale與MariaDB數(shù)據(jù)庫服務(wù)器實例,以實現(xiàn)通信了。除了在MaxScale和MariaDB Community服務(wù)器之間設(shè)置典型的讀/寫通信,您還可以在MaxScale的配置文件中添加一塊代碼,利用新的nosqlprotocol直通端口17017,來設(shè)置NoSQL偵聽器。

  1. [MongoDB-Listener] type=listener service=Read-Write-Service protocol=nosqlprotocol nosqlprotocol.user=maxscale nosqlprotocol.password=Password123!port=17017 

對此,您同樣有兩個選擇:

1. 替換配置文件:

請?zhí)鎿QMaxScale配置文件并重啟MaxScale服務(wù)。

A. 將MaxScale默認(rèn)配置文件替換為dev-example-nosql-listener存儲庫中包含的配置文件

  1. $ docker cp configuration/maxscale.cnf mxs:etc/maxscale.cnf 

B. 重新啟動mxs容器內(nèi)的MaxScale服務(wù)。

  1. $ docker exec -it mxs maxscale-restart 

2. 使用MaxScale GUI進行配置:

我們可以通過打開瀏覽器窗口,導(dǎo)航到http://localhost:8989,來訪問MaxScale的GUI界面。請使用默認(rèn)用戶名admin和密碼maxscale,登錄到GUI的儀表板中。在儀表板的右上角有一個名為“新建”的按鈕。

單擊“新建”按鈕后,MaxScale會通過模式提示,允許您創(chuàng)建新的服務(wù)器、服務(wù)、監(jiān)視器、過濾器、以及偵聽器。

您輸入到界面中的數(shù)據(jù),將會被保存到MaxScale的配置文件中。同時,您也可以將存儲庫中的配置文件作為設(shè)置各個必要組件的指南。

在MariaDB中使用MongoDB驅(qū)動程序

完成了將MaxScale配置為通過端口17017接收NoSQL通信之后,我們便可以使用兩個剩余的容器todo_client和todo_app,進行測試了。

首先,請打開一個瀏覽器窗口,并導(dǎo)航至http://localhost:3000。它將加載一個方便您管理任務(wù)列表(即:待辦事項列表)的Web應(yīng)用。

在該應(yīng)用的Web界面上,您可以對數(shù)據(jù)執(zhí)行創(chuàng)建、讀取、更新和刪除(即CRUD)操作。在其后臺,這是由一個帶有React.js Web應(yīng)用的todo_client容器,與帶有todo_api容器的后端應(yīng)用程序編程接口(API)通過通信實現(xiàn)的。

具體而言,托管在todo_api容器中的Node.js應(yīng)用程序公開了四個端點,客戶端應(yīng)用和解決方案可以使用這些端點,來執(zhí)行CRUD四項操作。Node.js應(yīng)用使用MongoDB的Node.js驅(qū)動程序,與底層數(shù)據(jù)庫(在本例中為MariaDB)進行通信。這些都發(fā)生在app/api/db.js文件中。如下代碼段展示了其具體內(nèi)容。

  1. // Import the MongoDB Node driver module const { MongoClient } = require('MongoDB');  
  2. // MongoDB connection string const connectionUrl = 'mongodb://mxs:17017';  
  3. let db;  
  4. // Connect to the database and return a MongoClient object const getDatabaseInstance = async(name)=> {     if(db){       return db;    }    try {       const client = await MongoClient.connect(connectionUrl);       db = client.db(name);   } catch(err){       throw err;   } finally {       return db;   } } 
  5.  module.exports = getDatabaseInstance; 

注意:TODO客戶端和API應(yīng)用程序源,都被包含在存儲庫中的app文件夾內(nèi)。如果您有興趣在自己的主機上直接從源代碼運行客戶端和API應(yīng)用程序的話,請參考存儲庫的README里的操作說明。

發(fā)現(xiàn)數(shù)據(jù)

一旦您設(shè)置好了環(huán)境,并使用TODO應(yīng)用添加了幾項任務(wù),那么就可以發(fā)現(xiàn)那些被添加到MariaDB中的數(shù)據(jù)了。實際上,auto_create_databasesauto_create_tables設(shè)置是默認(rèn)開啟的,因此通過TODO應(yīng)用程序,不僅系統(tǒng)添加了任務(wù)數(shù)據(jù),而且還自動在數(shù)據(jù)庫中創(chuàng)建了一個新的數(shù)據(jù)庫todo和表tasks。

使用SQL

您可以使用MariaDB命令行客戶端,在本地計算機上通過執(zhí)行如下命令,直接連接到包含在mdb容器中的MariaDB Community服務(wù)器實例上:

  1. $ mariadb --host 127.0.0.1 --port 3307 --user root -pPassword123! 

值得注意的是,為了簡單起見,我在此只介紹MariaDB命令行客戶端的流程。您可以使用各種第三方工具或客戶端,去連接到MariaDB上。您可以在官方文檔中找到通過MariaDB測試的第三方客戶端和工具列表。

當(dāng)然,如果您的主機上沒有MariaDB命令行客戶端的話,則可以通過執(zhí)行如下命令,通過Docker去訪問包含在mdb容器中的MariaDB命令行客戶端:

  1. $ docker exec -it mdb mariadb --user root -pPassword123! 

在成功連接上MariaDB后,您便可以執(zhí)行SQL命令了。首先,您可以羅列出服務(wù)器上的數(shù)據(jù)庫,以確認(rèn)已創(chuàng)建好了名為todo的數(shù)據(jù)庫。

  1. MariaDB [(none)]> show databases;  
  2. +--------------------+ | Database           | +--------------------+ | information_schema | | mysql              | | performance_schema | | sys                | |TODO              | +--------------------+ 

然后進入todo數(shù)據(jù)庫,您可以看到已被創(chuàng)建的、用于存儲文檔數(shù)據(jù)的數(shù)據(jù)表tasks。

  1. MariaDB [(none)]> use todo; MariaDB [todo]> show create table tasks; +-------+--------------------------------------------------------------------+ | Table | Create Table                                                       | +-------+--------------------------------------------------------------------+ | tasks | CREATE TABLE `tasks`(            `id` varchar(35)GENERATED ALWAYS AS                               (json_compact(json_extract(`doc`,'$._id')))VIRTUAL,            `doc` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT                NULL CHECK(json_valid(`doc`)),            UNIQUE KEY `id`(`id`),            CONSTRAINT `id_not_null` CHECK(`id` is not null)         )ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 | +-------+--------------------------------------------------------------------+ 

請注意,tasks表包含了兩個列:

  • id: 用于保存文檔數(shù)據(jù)對象的id
  • doc: 用于保存文檔數(shù)據(jù)本身

事實上,id和doc列都包含有可以使用MariaDB的預(yù)定義函數(shù),訪問到的JSON數(shù)據(jù)。

  1. MariaDB [todo]> select json_value(doc, '$.description')description, json_value(doc, '$.completed')completed from tasks;  
  2. +-------+------------------+ | description | completed  | +-------+------------------+ | Task 1      | 0          | | Task 2      | 1          | | Task 3      | 0          | | Task 4      | 1          | +-------+------------------+  

MaxScale GUI

MaxScale的圖形用戶界面(GUI)提供了發(fā)現(xiàn)數(shù)據(jù)的方式。

  • 登錄:首先根據(jù)MaxScale的配置,請打開瀏覽器窗口并導(dǎo)航到http://localhost:8989。系統(tǒng)會提示您輸入登錄信息(默認(rèn)用戶名為admin,密碼是maxscale)。

  • 儀表板:完成登錄后,您將看到一個儀表板,上面提供了有關(guān)MaxScale的各種信息,其中包括服務(wù)和偵聽器配置等信息。

  • 查詢編輯器:在左側(cè)導(dǎo)航中,您可以選擇“查詢編輯器”的菜單選項。

  • 然后系統(tǒng)會提示您輸入連接信息。據(jù)此,您可以直接連接到MariaDB中的服務(wù)器和/或架構(gòu)上。您也可以在后期隨時更新或修改這些信息。

  • 完成連接后,您便可以使用查詢編輯器,來執(zhí)行SQL查詢、顯示數(shù)據(jù)集,甚至通過圖形或圖表來可視化數(shù)據(jù)。

Mongo Shell

Mongo Shell是一個針對MongoDB的互動式JavaScript接口。您可以通過鏈接https://www.mongodb.com/try/download/shell,下載 mongo shell。類似MariaDB的命令行客戶端,您可以使用mongo shell,來查詢和更新數(shù)據(jù),以及執(zhí)行各項管理操作。

  • 連接MariaDB

您可以使用如下命令,讓mongo shell連接上MariaDB:

  1. $ mongo --host 127.0.0.1 --port 17017 

再通過命令:> use todo進入TODO數(shù)據(jù)庫。

而命令:> show collections能夠為您顯示當(dāng)前目標(biāo)數(shù)據(jù)庫中的集合,或是MariaDB中的數(shù)據(jù)表。當(dāng)然,在本例中,我們只能夠看到tasks表。

  • 基本查詢

您可以通過執(zhí)行如下命令,來選擇所有已完成的任務(wù),或查詢tasks表內(nèi)的數(shù)據(jù):

  1. > db.runCommand({ find:"tasks", filter: { completed: 1 }); {     "cursor" : {           "firstBatch" : [                {                       "description" : "Task 1",                       "_id" : ObjectId("612ad5859c58d2b2b46ca6fa"),                       "id" : "612ad5859c58d2b2b46ca6fa",                       "completed" : 1                },                {                       "description" : "Task 4",                       "_id" : ObjectId("612aec4b923b0597463743f0"),                       "id" : "612aec4b923b0597463743f0",                       "completed" : 1                }           ],           "id" : NumberLong(0),           "ns" : "todo.tasks"     },     "ok" : 1 } 
  • mxsDiagnose

MariaDB的NoSQL偵聽器有一項巧妙的功能,可以為處理命令提供診斷的能力。例如,mxsDiagnose能夠輸出MariaDB用于選擇數(shù)據(jù)的所有等效SQL,以及前面我們提到的所有已完成任務(wù)的命令。

  1. > db.runCommand({mxsDiagnose: {find:"tasks", filter: {completed: 1}}}); {       "kind" : "single",       "sql" : "SELECT doc FROM `todo`.`tasks` WHERE( JSON_EXTRACT(doc, '$.completed')= 1)",       "ok" : 1 } 

在此,我只是介紹了mongo shell和MariaDB的部分功能。您可以通過查看官方文檔,以了解更多有關(guān)如何使用帶有NoSQL偵聽器功能的mongo shell的知識。

展望

綜上所述,MariaDB的NoSQL偵聽器功能在很大程度上提供了,與NoSQL數(shù)據(jù)庫的更多互操作性。當(dāng)然,上面為您展示的只是其冰山的一角,您既可以去查看MariaDB的NoSQL偵聽器的官方文檔,也可以通過我們的新手開發(fā)者中心,了解有關(guān)如何使用MariaDB開發(fā)現(xiàn)代化方案和應(yīng)用程序的更多信息。

原文標(biāo)題:How to Manage NoSQL Data With MariaDB,作者:Rob Hedgpeth

【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】

 

責(zé)任編輯:華軒 來源: 51CTO
相關(guān)推薦

2019-10-11 15:10:09

GVMGoLinux

2020-07-10 09:49:53

數(shù)據(jù)清理數(shù)據(jù)分析查找異常

2024-03-28 09:00:00

NoSQL數(shù)據(jù)庫

2012-02-16 09:20:19

NoSQL

2020-06-15 14:31:26

Google容器Kubernets

2022-06-27 17:40:14

大數(shù)據(jù)數(shù)據(jù)科學(xué)

2016-02-17 15:15:01

2019-07-23 11:41:45

數(shù)據(jù)庫SQLDocker

2021-03-18 10:21:45

數(shù)據(jù)科學(xué)大數(shù)據(jù)機器學(xué)習(xí)

2020-12-21 15:39:59

大數(shù)據(jù)機器學(xué)習(xí)數(shù)據(jù)湖

2022-09-03 15:03:36

AndroidGerrit代碼審核

2022-08-29 08:00:00

容器Portainer工具

2010-05-25 13:47:53

MySQL 命令

2014-09-22 19:30:02

大數(shù)據(jù)軟件分析金融數(shù)據(jù)

2012-05-15 10:28:29

NoSQL數(shù)據(jù)庫建模技術(shù)

2016-12-04 16:36:18

NoSQL數(shù)據(jù)庫大數(shù)據(jù)

2024-03-05 10:03:17

NoSQL數(shù)據(jù)庫算法

2017-10-27 22:03:35

javascrip

2020-10-27 07:08:06

2019-10-23 14:51:49

大數(shù)據(jù)存儲技術(shù)
點贊
收藏

51CTO技術(shù)棧公眾號