《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 業界動態 > 為開發播種數據庫

為開發播種數據庫

2021-07-26
來源:CSDN
關鍵詞: 播種數據庫

  什么是數據播種以及為什么我們需要它

  流線型開發過程對于任何軟件公司來說都至關重要,尤其是像Rise這樣快速增長的公司。使用生產數據作為應用程序初始數據集的工程師可能會嚴重影響性能。他們可能正在處理敏感的客戶信息,這些信息可能需要增加額外的清洗步驟而延長處理時間。此外,由于各自國家的潛在限制性法律,生產數據可能會阻止位于其它地區的工程師訪問數據。最后,當其他工程師需要為其功能添加新的SQL語句時,他們可能很難更新數據庫備份文件。因此,管理初始數據集變得非常困難,而且非常耗時。

  擁有數據播種機制可以使性能測試和數據庫管理更加準確、高效和可管理。作為一名工程師,你可能希望應用程序從已經裝載并清洗的最小數據集開始,或者你可能需要一組特定的數據來進行測試。無論哪種情況,你都已經到達了一個稱為數據播種的過程。從長遠來看,一組易于管理的合成數據肯定會改善你的開發過程。

  如何填充數據庫

  在研究Rise的解決方案時,我們發現了一些有趣的方法來填充數據庫以進行開發。最常見的方法是直接從生產環境檢索數據。但這并不是一個理想的開發體驗,因為可能會涉及PII(個人身份信息)數據。

  另一種方法是使用SQL備份文件,其中包含表結構的記錄和數據庫中的數據——但該方法也不夠理想,而且可能難以管理。例如,當你的服務具有多個微服務時,由于表之間的復雜關系,你的數據庫可能會以出現數據完整性問題而告終。

  現在,一些簡單的可選方法是使用第三方庫(如“Faker”)來生成虛擬數據,或者僅通過調用API調用來創建數據庫。

  為了使開發過程更具效率,數據播種應該是可讀的、可共享的、易修改的,并且需要生成沒有PII的真實數據。為了滿足這些需求,我們最終使用typeScript創建了一個框架,混合使用了SQL語句和API。

微信圖片_20210726092443.jpg

  數據播種架構

  通過這種方法,我們可以使用“引導 SQL語句”為每個服務保留最少的引導數據,并且可以發送多個HTTP請求來生成特定數據集的記錄。

  使用此過程為開發團隊提供了三個主要益處:

  因為我們指向的是真實的API端點,所以不需要關心數據庫約束或表關系(與在SQL中添加語句的做法截然不同)。

  只需簡單地創建一個新的API函數來生成初始數據,就可以更容易地更新新特性。腳本也變得具有很高的可讀性,尤其是與一個SQL文件中的無數行相比,這些行讀起來可能很乏味。

  腳本是從命令行運行的,只要一個命令可以隨時運行。

  1. 引導SQL語句

  引導語句做什么?這個裝載器是在所有服務啟動時運行的第一段代碼,負責生成發送給API請求所需的最小數據集。因此它充分依賴于你的服務或業務邏輯。例如,在Rise中,為了進行API調用以生成組織和用戶表,支持提供者的授權標記應該與數據一起傳遞。所以,引導包含一個用于創建支持提供者用戶的語句。

  2. 對應編碼

  這個簡單的代碼片段將清空組織表,并且創建一個具有組織的支持提供者用戶。

  TRUNCATE organizations RESTART IDENTITY CASCADE;

  — Insert a Organization into Organization table

  — Insert Support Role User into User table

  — Insert a Role into that user

  — Code is needed below

  3. API請求

  我們目前使用Axios產生HTTP請求。Axios是一個基于promise的HTTP客戶端,用于瀏覽器和Node.js,可以簡單發送異步請求并執行CRUD操作。它通過在發送這些請求時提供自動JSON字符串化來實現這一點,而“Fetch API”沒有提供這種功能。總之,axios是一個輕量級庫,提供了許多有用的功能。

  4. 對應編碼

  在本節中,你將向項目中添加Axios,并生成可以創建組織的API函數。

  要將Axios添加到項目中,運行以下命令以安裝Axios:

  $ npm install axios

  在TypeScript項目的src文件夾中,創建一個名為organization.ts的新組件。

  將以下代碼添加到該組件中:

微信圖片_20210726092446.jpg

  首先,要導入axios和env,以便兩者都可以在組件中使用。然后創建一個名為createOrganization的異步函數來執行POST請求。

  之后使用axios.post(url、data、option)獲得一個promise,該promise返回一個響應對象。第二個參數“data”應該包含創建Organization記錄所需的實際數據。這里好處是,當作為第二個參數傳遞給POST函數時,axios會自動將JavaScript對象序列化為JSON,因此我們就不需要再做處理了。

結論

  總而言之,擁有數據播種管理工具對于開發高質量軟件非常重要,因為它有助于提高數據安全性,增加組織對數據的可訪問性,減少數據冗余,并提供更好的數據完整性和數據一致性。通過實施這個相對簡單的過程,大大提高了我們在Rise的效率和生產力。




電子技術圖片.png

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 性夜影院爽黄a爽免费看网站 | 国产区一区 | 日本九九视频 | 我们2018在线完整免费观看 | 日韩不卡一区二区三区 | 欧美一级高清视频在线播放 | 美女一级片 | 亚洲日韩视频 | 精品国产香蕉在线播出 | 无限观看社区在线视频 | 99视频在线永久免费观看 | 成人福利网站在线看视频 | 日韩精品在线免费观看 | 亚洲综合性 | 欧美三级真做在线观看 | 成人免费xxx色视频 成人免费大片a毛片 | 99久久免费中文字幕精品 | 国产三级精品在线观看 | 久久中文字幕乱码免费 | 久久久美女视频 | 久久精品免观看国产成人 | 理论片免费午夜 | 精品久久看 | 亚洲a免费 | 亚洲国产高清视频在线观看 | 中文字幕在线永久 | 国产五区 | 亚洲欧美精品一区 | 亚洲综合成人网 | 国产在线一区在线视频 | 亚洲一区成人 | 国产精品一区二区手机在线观看 | 欧美大片无尺码在线观看 | 成人毛片在线视频 | 在线看国产视频 | 在线播放国产真实女同事 | 久久久国产精品免费看 | 一区二区三区在线播放 | 久久精品视频在线播放 | 国产大片免费天天看 | 亚洲美女在线观看 |