日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

云开发数据库VS传统数据库丨云开发101

發布時間:2023/12/10 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 云开发数据库VS传统数据库丨云开发101 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

云開發數據庫與傳統數據庫的不同

在小程序·云開發中,最核心的便是三大組件:數據庫、云存儲和云函數,從今天開始,我們將開始隔日更的專欄文章,云開發101,在第一周,我們將從最最核心的數據庫開始說起。

云開發數據庫簡介

首先,我們先來了解一下云開發的數據庫,云開發數據庫是由云開發團隊提供給云開發用戶的數據庫服務,開發者可以在小程序、云函數等環境中,通過簡潔易懂的函數調用,來獲取到對應的數據,方便開發者快速完成業務邏輯中關于數據庫的部分。

在開發過程中,你可以使用諸如 wx.cloud.database().collection('data').where({"age":10}).get() 這樣的方法獲取到數據庫中的信息,而無需再通過服務端提供的 API 完成數據庫請求,將數據查詢的權力下放到小程序端,加快應用的迭代效率。

云開發數據庫底層技術簡介

云開發數據庫所使用的是 NoSQL (Not Only SQL)數據庫方案中的 MongoDB 數據庫。MongoDB 數據庫是目前業界發展的最好的 NoSQL 數據庫,可以讓開發者以 SQL 和 NoSQL 兩種方式完成數據庫結構的建設,快速完成應用的開發。

NoSQL 與 SQL

我們在傳統的 Web 應用開發過程中,大多使用的是 SQL 數據庫,如 Oracle、SQLite、MySQL、MSSQL 等,但云開發所使用的 MongoDB 則是完全不同的數據庫方案,因此,在進行數據庫結構設計時,也有所不同。錯誤的思考模型,會使得你在后續的應用開發過程中,給自己帶來無盡的麻煩。因此,也就有了我們這篇文章,向你介紹 NoSQL 世界的魅力。

Schemaless 帶來的特性

在我們使用 SQL 數據庫開發時我們需要先行設計好數據庫的結構、數據表的結構等,而 NoSQL 型數據庫,因此,讓我們在開發的時候,也會有了不同的開發模式。我們無需在進行應用開發時,先行添加表結構,我們只需要根據我們自己的使用情況,隨時增加、刪除新的字段,完成自己的業務需求,也正是這種自由,使得云開發有了快速開發、快速迭代的特性。

云開發數據庫結構設計思路

由于云開發所使用的數據庫類型與我們所熟悉的數據庫類型不同,因此,在開發的時候,我們也要相應的修改我們的數據庫結構,以適配 NoSQL 數據庫的各項特性,從而降低編程時的復雜度,又好又快的滿足自己的業務需求。

和 SQL 數據庫不同, MongoDB 數據庫由于其存儲結構從設計之初便是考慮分布式、多節點存儲,其 Best Practice 是「以空間換時間」,因此,在設計應用數據結構時,不要考慮應用的數據存儲空間,而是更多思考,如何以更快的速度將數據查詢出來。

但是,數據庫的設計不能完全追求時間,也要思考編程的復雜程度,平衡時間、空間與編程復雜度,以一個更好的方式完成自己的數據庫設計。

舉個例子,因為極度追求數據的空間換時間,整個數據系統的多種數據僅設計一個集合,所有的數據都掛在一個集合中,顯然是不合理的,這種存儲會導致應用后續的迭代造成麻煩。

同樣的,極度的不追求空間換時間,也是一種錯誤的選擇,如果你將所有的數據都放在各自的獨立集合中,則會造成沒有很好的利用 NoSQL 數據庫的特性,也會使得你的后續編程變得麻煩。

因此,在使用云開發數據庫時,我們需要思考我們的業務發展方向,將可能會用到的場景進行割離,思考應用的數據庫結構,從而確保自己的應用在后續開發的時候不出問題。

云開發數據庫使用常見問題

在實際的應用中,我們也看到,不少人因為不熟悉 NoSQL 的數據庫設計理念,在實際開發過程中,出現了不少的問題,這里我們一一討論一下。

自建主鍵屬性

在 MongoDB 數據庫中,數據存儲使用的是 ObjectID,因此,其數據的 ID 并非 1 ,2 ,3 ,4 ,而是一個類似于 a718a0f318d76 hash 值,不少人在開發時,因為認為沒有自增的數據,無法完成數據排序,就自行實現了一個自增的 ID,每次新增的時候,都重新查詢一遍,獲取最新的值以后, 再重新新增數據。

但實際上,我們可以有一種更加優雅和方便的工具來完成這種需求,那就是新增一個字段 created_at,這個字段的值設置為當前時間的時間戳 Timestamp。當你后續需要進行數據按新增的數據進行排序時,可以使用這個字段進行逆序排序,同時,因為這個數據使用的是當前的時間數據,你還可以將其用于數據的「創建于XX年XX月XX日」的功能,完成自己的業務需求。這個數據除了能進行直接的排序,還可以用于后續按日期導出數據,比如篩選出某一個特定時間段的數據。

相比于一個自增的 ID,created_at 更加的簡單易用,同時,因為不需要提前獲取上一條記錄中這個字段的值,可以有效的降低數據的查詢次數。

時間存儲問題

在我們進行業務邏輯開發時,時間數據的獲取是不可或缺的,不少人習慣于使用一個可視化的日期數據,便會將數據庫中的日期字段設置為 2019-09-09,以便于在使用時直接輸出到數據庫中,但實際上在開發過程中,建議大家存儲時間戳 Timestamp 來作為具體的時間。

這是因為 2019-09-09 的數據并非一個可以用于排序的字段,在后續開發的過程中,因為你使用的是字符串作為時間,如果你需要將數據進行排序,將會無法排序或出現排序錯誤的情況;此外,因為你存儲的是字符串類型的時間,那么后續如果你的業務需求發生了展示形式的變化,會導致你花費大量的時間去修改所有數據的時間,或者在數據的讀取和存儲時進行多次格式轉換,徒增麻煩。

因此,對于時間存儲有需求的,我們一貫建議大家使用時間戳來存儲,因為時間戳是一個數字類型的數據,因此可以直接進行大小的比對,同時,因為時間戳的數據是全球統一的,如果你的應用后續有全球化的需求,也可以很好的支持。

無法區分是否要拆分為獨立的數據集合存儲

在進行云開發的數據應用開發的時候,我們發現,不少開發者的疑問是,我所使用的數據,是否有必要進行獨立拆分出一個 Collection 來進行數據存儲。

這個問題我們可以以一些簡單的問題來判斷:

  • 你所使用的數據是否有排序的需求?
  • 你所使用的數據是否有修改的需求?
  • 你所使用的數據除了在此處使用,是否還在其他地方使用?
  • 這里我們舉幾個例子來說明一下,比如說,我們有一個需求,是為一個內容發布系統的文章新增評論功能,那么我們應該如何完成這部分呢?

    如果你的評論數據沒有排序、修改,也僅在此處使用,你可以考慮將評論數據放在文章數據中的一個子屬性中,這樣可以有效的完成數據查詢,你在文章進行查詢的時候,直接將評論數據查詢出來,并進行顯示,十分的方便。

    如果你的評論數據有排序、修改以及其他地方使用的需求,那么就建議你將評論數據單獨存放在一個集合中,以便在后續完成排序、更新和調用,如果此時你將其放在文章數據中,在后續查詢時就會有很多問題,操作起來極為不便,給自己徒增煩惱。

    當然,具體情況具體分析,如果你在分析完成后,依然沒有答案,可以在公眾號后臺提出你的問題,我們將盡快給您回復。

    總結

    在本次的文章中,我們分享了云開發所使用的 NoSQL 數據庫與傳統的 SQL 數據庫的區別,以及因為這種區別所帶來的開發體驗上的不同,理解這些基礎內容,將會幫助你更好的應用云開發數據庫開發你自己的產品。

    如果你對于云開發有任何問題,都歡迎你在文章留言出留下你的疑問,我們將一一解答。

    如果你想要了解更多關于云開發CloudBase相關的技術故事/技術實戰經驗,請掃碼關注【騰訊云云開發】公眾號~

    轉載于:https://www.cnblogs.com/CloudBase/p/11510498.html

    總結

    以上是生活随笔為你收集整理的云开发数据库VS传统数据库丨云开发101的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。