溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

uniCloud是什么

發(fā)布時間:2021-06-18 15:21:02 來源:億速云 閱讀:713 作者:chen 欄目:web開發(fā)

這篇文章主要介紹“uniCloud是什么”,在日常操作中,相信很多人在uniCloud是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”uniCloud是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

什么是Serverless

在介紹什么是Serverless的時候,希望通過回答一些問題幫助大家了解什么是Serverless。一個最好的問題就是——Serverless是不是就是FaaS?

  • “"功能即服務"(或稱為 FaaS)是一種在無狀態(tài)容器中運行的事件驅動型計算執(zhí)行模型,這些功能將利用服務來管理服務器端邏輯和狀態(tài)

下面是維基百科對“Serverless”的中文和英文的解釋:

uniCloud是什么

uniCloud是什么

中文解釋為Serverless就是FaaS;英文解釋就比較豐富了,它把Serverless分成Runtime和Databases,F(xiàn)aaS相當于是Runtime類別的產(chǎn)品,所以這方面的誤解還是挺多的。

現(xiàn)在市面上的一些Serverless服務,比如騰訊云和阿里云:

騰訊云 Serverless服務:

uniCloud是什么

阿里云Serverless服務:

uniCloud是什么

到這里就可以發(fā)現(xiàn)FaaS和Serverless有些區(qū)別了,整體來看FaaS服務,是Serverless計算服務的一部分。

目前來講,提供無需關注底層基礎設施的服務可以稱為Serverless,那么無需關注底層基礎設施可以怎么理解呢?

首先是我們不去維護這下面的底層基礎設施;其次是不關心它的資源的擴展情況,就像DB,我們知道它是可能運行在K8S集群上,也知道它有內存有CPU有磁盤,但我們并不需要關心這些資源的情況。

什么是uniCloud

uniCloud 是 DCloud 聯(lián)合阿里云、騰訊云,為開發(fā)者提供的基于 serverless 模式和 js  編程的云開發(fā)平臺。

到底是怎么一回事?聽我給你簡單說一下

對架構演進有了解的同學都知道,很早之前一般是單體架構,前后端代碼寫在一起,一般一個人單甩一個項目。后來隨著技術的演進,工種演化為前端開發(fā)人員和后端開發(fā)人員,前后端分離架構應運而生。

近幾年,隨著云計算的流行,國外有人就提出了Serverless思想。既然后端這么重,那我直接不要你了,我js編程直接搞定。前端收集到的數(shù)據(jù)不用往后端傳,直接js操作入庫,前端要展示數(shù)據(jù),直接js查詢數(shù)據(jù)庫獲取數(shù)據(jù)。聽起來都很牛逼!

uniCloud就是這樣的一個平臺,如何實現(xiàn)我們上面所說的操作,就需要談一談uniCloud的基本概念。

“更多介紹,可以看這里什么是uniCloud - uni-app官網(wǎng) (dcloud.io)

uniCloud的基本概念

服務空間

一個服務空間對應一整套獨立的云開發(fā)資源,包括數(shù)據(jù)庫、存儲空間、云函數(shù)等資源。服務空間之間彼此隔離。

每個服務空間都有一個全局唯一的space ID,至于在云服務器怎么隔離的,我們就不需要關注了

目前阿里云和騰訊云都是免費開通,騰訊云有些功能已經(jīng)收費,不用多想,未來一定收費。

uniCloud是什么

云數(shù)據(jù)

uniCloud同時支持阿里云和騰訊云,它們的數(shù)據(jù)庫大體相同,有細微差異。阿里云的數(shù)據(jù)庫是mongoDB4.0,騰訊云則使用自研的文檔型數(shù)據(jù)庫(兼容mongoDB  4.0版本)。uniCloud基本抹平了不同云廠商的差異,有差異的部分會在文檔中單獨標注。所以熟悉mongoDB的同學就很容易上手了!

那么如何操作數(shù)據(jù)庫?

云函數(shù)操作數(shù)據(jù)庫是較為傳統(tǒng)的開發(fā)方式,使用nodejs寫云函數(shù)、使用傳統(tǒng)的MongoDB的API操作云數(shù)據(jù)庫。

客戶端訪問云數(shù)據(jù)庫,稱為clientDB。這種開發(fā)方式可大幅提升開發(fā)效率,避免開發(fā)者開發(fā)服務器代碼,并且支持更易用的jql語法操作數(shù)據(jù)庫,是更為推薦的開發(fā)方式。clientDB有單獨一套權限和字段值控制系統(tǒng),無需單獨數(shù)據(jù)庫安全。其實就是把MongoDB的API封裝了一層,待會給大家演示

uniCloud是什么

云函數(shù)

云函數(shù)是運行在云端的 JavaScript 代碼,和普通的Node.js開發(fā)一樣,熟悉Node.js的開發(fā)者可以直接上手。

就是這一部分直接代替了后端,讓不熟悉后端的前端人員直接可以上手,降低了學習了成本。那后端人員干嘛去?如果真有那么一天,可能會去搞云計算開發(fā)吧,只是對業(yè)務的關注度會降低吧!

uniCloud的開發(fā)模式

通過上面的介紹,我們大致了解了什么是uniCloud,接下來我們通過一些代碼片段來直觀的看一看在前端如何直接和數(shù)據(jù)庫交互。

//首先我們要獲取db對象,用它來操作云數(shù)據(jù)庫 const db = uniCloud.database();

新增數(shù)據(jù)

//數(shù)據(jù)對象 formData: {     "colony_house_name": "",         "colony_house_area": "",             "describe": "" }  db.collection('table_name').add(formdata).then((res) => {     uni.showToast({         icon: 'none',         title: '新增成功'     })     // 處理數(shù)據(jù)      }).catch((err) => {     uni.showModal({         content: err.message || '請求服務失敗',         showCancel: false     }) }).finally(() => {     uni.hideLoading() })

修改數(shù)據(jù)

db.collection(dbCollectionName).doc("5f79fdb337d16d0001899566").update(formdata).then((res) => {   uni.showToast({    icon: 'none',    title: '修改成功'   })   // 處理數(shù)據(jù)   }).catch((err) => {   uni.showModal({    content: err.message || '請求服務失敗',    showCancel: false   })  }).finally(() => {   uni.hideLoading()  })

刪除數(shù)據(jù)

const db = uniCloud.database(); db.collection("table1").doc("5f79fdb337d16d0001899566").remove()

查詢數(shù)據(jù)

單表查詢

db.collection('list')   .where('name == "hello-uni-app"')   .get()   .then((res)=>{     // res 為數(shù)據(jù)庫查詢結果   }).catch((err)=>{     // err.message 錯誤信息     // err.code 錯誤碼   })

聯(lián)表查詢

table_name_a是主表,table_name_b是副表,關聯(lián)查詢時候,需要將主表放到第一位。需要在主表的主鍵字段增加映射關系,就是下面的foreignKey,表示這個字段映射到table_name_b表的_id字段

  1. "plant_breed_classify_code": { 

  2.    "bsonType": "string", 

  3.    "description": "養(yǎng)殖類型編碼", 

  4.    "trim": "both", 

  5.    "foreignKey": "table_name_b._id" // 使用foreignKey表示,此字段關聯(lián)s-plant-breed-classify表的_id。 

  6.   }, 


db.collection('table_name_a,table_name_b')  .where({   create_by:userId  })  .field('plant_breed_classify_code{classify_name}')  .groupBy('plant_breed_classify_code')  .groupField('count(*) as total')  .get()  .then((res) => {      const data = res.result.data;      if (data) {          //處理數(shù)據(jù)      }  }).catch((err) => {      uni.showModal({          content: err.message || '請求服務失敗',          showCancel: false      })  }).finally(() => {      uni.hideLoading()  })

 uniCloud的優(yōu)缺點

結合我最近使用的情況,來談談我認為的uniCloud的優(yōu)缺點

優(yōu)點

  • 簡化了傳統(tǒng)開發(fā)模式,提高了輕應用的開發(fā)效率

  • 一定程度上降低了企業(yè)的人工成本,后端可以少招人....

  • 降低了前端人員學習壓力,實現(xiàn)某一部分的全棧夢

  • 由于目前serverless處于免費階段,可以為企業(yè)剩下服務器和運維方面的成本

缺點

  • 官方文檔太亂,案例太少,不利于快速上手

  • 多表關聯(lián)查詢場景下不理想,尤其你正在開發(fā)一個統(tǒng)計頁面

  • 云數(shù)據(jù)目前不支持刪除數(shù)據(jù),需要api調用才可以

  • 假如你習慣了關系型數(shù)據(jù)庫,習慣了navicat,你會發(fā)現(xiàn)在這里搞數(shù)據(jù)會非常別扭

  • 沒有類似MySQL的分析器,不太容易發(fā)現(xiàn)你的查詢語句哪里出錯

到此,關于“uniCloud是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI