成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何用MariaDB管理NoSQL數據

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

[[437982]]

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

NoSQL協議模塊

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

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

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

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

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

下面,我將依次進行環境設置,配置MaxScale,以及使用簡單的Web應用,通過MongoDB的Node.js驅動,去管理NoSQL文檔數據。

環境設置

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

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

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

  1. $ docker-compose up 

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

容器名稱描述

您可以通過執行如下命令,來檢查系統上、當前正在運行的活動容器是否有效:

  1. $ docker ps 

其輸出結果會顯示mxs、mdb、todo_client和todo_api容器的相關信息。

添加MaxScale數據庫用戶

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

1. 通過使用容器:

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

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

2. 通過執行本地系統:

請連接到被包含在mdb容器中的MariaDB Community服務器實例上,并使用主機上的MariaDB命令行客戶端,來執行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數據庫服務器實例,以實現通信了。除了在MaxScale和MariaDB Community服務器之間設置典型的讀/寫通信,您還可以在MaxScale的配置文件中添加一塊代碼,利用新的nosqlprotocol直通端口17017,來設置NoSQL偵聽器。

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

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

1. 替換配置文件:

請替換MaxScale配置文件并重啟MaxScale服務。

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

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

B. 重新啟動mxs容器內的MaxScale服務。

  1. $ docker exec -it mxs maxscale-restart 

2. 使用MaxScale GUI進行配置:

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

單擊“新建”按鈕后,MaxScale會通過模式提示,允許您創建新的服務器、服務、監視器、過濾器、以及偵聽器。

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

在MariaDB中使用MongoDB驅動程序

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

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

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

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

  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應用程序源,都被包含在存儲庫中的app文件夾內。如果您有興趣在自己的主機上直接從源代碼運行客戶端和API應用程序的話,請參考存儲庫的README里的操作說明。

發現數據

一旦您設置好了環境,并使用TODO應用添加了幾項任務,那么就可以發現那些被添加到MariaDB中的數據了。實際上,auto_create_databasesauto_create_tables設置是默認開啟的,因此通過TODO應用程序,不僅系統添加了任務數據,而且還自動在數據庫中創建了一個新的數據庫todo和表tasks。

使用SQL

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

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

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

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

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

在成功連接上MariaDB后,您便可以執行SQL命令了。首先,您可以羅列出服務器上的數據庫,以確認已創建好了名為todo的數據庫。

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

然后進入todo數據庫,您可以看到已被創建的、用于存儲文檔數據的數據表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: 用于保存文檔數據對象的id
  • doc: 用于保存文檔數據本身

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

  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)提供了發現數據的方式。

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

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

  • 查詢編輯器:在左側導航中,您可以選擇“查詢編輯器”的菜單選項。

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

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

Mongo Shell

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

  • 連接MariaDB

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

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

再通過命令:> use todo進入TODO數據庫。

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

  • 基本查詢

您可以通過執行如下命令,來選擇所有已完成的任務,或查詢tasks表內的數據:

  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用于選擇數據的所有等效SQL,以及前面我們提到的所有已完成任務的命令。

  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的部分功能。您可以通過查看官方文檔,以了解更多有關如何使用帶有NoSQL偵聽器功能的mongo shell的知識。

展望

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

原文標題:How to Manage NoSQL Data With MariaDB,作者:Rob Hedgpeth

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

 

責任編輯:華軒 來源: 51CTO
相關推薦

2019-10-11 15:10:09

GVMGoLinux

2020-07-10 09:49:53

數據清理數據分析查找異常

2024-03-28 09:00:00

NoSQL數據庫

2012-02-16 09:20:19

NoSQL

2020-06-15 14:31:26

Google容器Kubernets

2019-07-23 11:41:45

數據庫SQLDocker

2020-12-21 15:39:59

大數據機器學習數據湖

2021-03-18 10:21:45

數據科學大數據機器學習

2022-06-27 17:40:14

大數據數據科學

2016-02-17 15:15:01

2022-09-03 15:03:36

AndroidGerrit代碼審核

2022-08-29 08:00:00

容器Portainer工具

2010-05-25 13:47:53

MySQL 命令

2012-05-15 10:28:29

NoSQL數據庫建模技術

2016-12-04 16:36:18

NoSQL數據庫大數據

2014-09-22 19:30:02

大數據軟件分析金融數據

2024-03-05 10:03:17

NoSQL數據庫算法

2010-06-30 10:52:12

snmp服務Cacti

2019-10-23 14:51:49

大數據存儲技術

2017-10-27 22:03:35

javascrip
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久爱综合| 在线观看三级av | 午夜精品久久久久久久久久久久久 | 精品国偷自产在线 | 久久精品综合 | 久久不卡 | 精品久久久久久亚洲精品 | 午夜男人天堂 | 国产一区二区在线播放 | 国产精品成人久久久久 | 98成人网| 欧美国产精品久久久 | 久久久久久久久精 | 国产一级黄色网 | 日韩精品1区2区3区 爱爱综合网 | 一级中国毛片 | 亚洲免费一区二区 | 亚洲精品国产电影 | 在线一区二区三区 | 欧美一区二区三区 | 亚洲成人三级 | 国产真实乱全部视频 | 国产精品高潮呻吟久久 | 女人精96xxx免费网站p | 久久这里只有精品首页 | 国产高清无av久久 | 国产一区二区免费在线 | 亚洲高清成人 | 午夜在线免费观看 | 日本特黄特色aaa大片免费 | 亚洲精品99| 国产精品久久久av | 在线天堂免费中文字幕视频 | 精品久久国产老人久久综合 | 激情影院久久 | 一区二区三区四区五区在线视频 | 欧美一区二区三区视频在线播放 | 午夜影院 | 久久福利| 日日碰狠狠躁久久躁婷婷 | 成人免费视频 |