伊人99re_av日韩成人_91高潮精品免费porn_色狠狠色婷婷丁香五月_免费看的av_91亚色网站

中培偉業(yè)IT資訊頻道
您現(xiàn)在的位置:首頁(yè) > IT資訊 > 數(shù)據(jù)庫(kù) > 數(shù)據(jù)庫(kù)多租戶最終指南

數(shù)據(jù)庫(kù)多租戶最終指南

2020-09-14 16:22:19 | 來(lái)源:中培企業(yè)IT培訓(xùn)網(wǎng)

如今數(shù)據(jù)庫(kù)對(duì)于這個(gè)時(shí)代的我們來(lái)說(shuō),并不陌生了吧。最近,一個(gè)新的數(shù)據(jù)庫(kù)項(xiàng)目顯示,經(jīng)過(guò)身份驗(yàn)證的用戶屬于特定租戶,應(yīng)僅允許其從自己的數(shù)據(jù)庫(kù)中提取數(shù)據(jù)。本文是實(shí)現(xiàn)數(shù)據(jù)庫(kù)多租戶這一目標(biāo)的方法。本文將選擇了以提供簡(jiǎn)單測(cè)試代碼為起點(diǎn)的策略,并使它逐層工作。它提供了具有測(cè)試,遷移和特定于租戶的小功能的完整解決方案。

  1.每個(gè)故事都始于測(cè)試:PostsTest

讓測(cè)試驅(qū)動(dòng)我的代碼成為了我的激情。多租戶不應(yīng)有所不同。首先,我們確定我們希望測(cè)試的外觀,然后使代碼發(fā)生。

這是一個(gè)非常簡(jiǎn)單且公平的測(cè)試。為了使其工作,首要要求是TenantTestCase設(shè)置租戶。但是在深入探討之前,讓我們快速編寫我們的create助手。

  2.TenantTestCase

通過(guò)測(cè)試,我們可以預(yù)期TenantTestCase該類將負(fù)責(zé)創(chuàng)建一個(gè)新公司,一個(gè)新用戶并對(duì)該用戶進(jìn)行身份驗(yàn)證。還應(yīng)設(shè)置特定于數(shù)據(jù)庫(kù)的連接。

通過(guò)使用RefreshDatabase,應(yīng)該自動(dòng)遷移主數(shù)據(jù)庫(kù)。調(diào)用actingAs將建立身份驗(yàn)證。至于用戶工廠,由于用戶屬于公司,因此應(yīng)遞歸解決該依賴關(guān)系。

  3.工廠

該UserFactory會(huì)負(fù)責(zé)為我們創(chuàng)建新用戶。Laravel的默認(rèn)UserFactory幾乎足夠好,我們只需要向其中添加company_id字段即可。

一旦需要?jiǎng)?chuàng)建新用戶,Laravel將嘗試解析CompanyFactory。讓我們接下來(lái)寫。

這CompanyFactory是一家新公司通過(guò)我們的測(cè)試而生的時(shí)刻,因此我決定利用它來(lái)按期望的那樣自動(dòng)設(shè)置承租人數(shù)據(jù)庫(kù)連接PostsTest。

最后一個(gè)工廠是PostFactory。出于組織目的,我決定將所有主要工廠遷入database/factories/main并為的租戶工廠騰出空間database/factories/tenant。PostFactory非常簡(jiǎn)單。

  4. tenant_connect()和tenant_migrate()幫助器

顧名思義,tenant_connect()它將與租戶數(shù)據(jù)庫(kù)建立數(shù)據(jù)庫(kù)連接。由于這是測(cè)試階段,因此我們應(yīng)確保租戶數(shù)據(jù)庫(kù)接收到它自己的遷移,例如posts表。

該文件可以放在下database/helpers.php。不要忘記將其添加到作曲家自動(dòng)加載中。

“ autoload”:{

“ classmap”:[

“數(shù)據(jù)庫(kù)/種子”,

“數(shù)據(jù)庫(kù)/工廠”

],

“文件”:[

“ database / helpers.php”

],

“ psr .4”:{

“ App \”: “ app /”

}

}

這將我們帶入下一個(gè)主題:遷移。

  5.主要遷移

默認(rèn)的database / migrations文件夾將保存主要連接的數(shù)據(jù)庫(kù)結(jié)構(gòu)。我們需要?jiǎng)?chuàng)建“ 公司”遷移并調(diào)整“ 用戶”以適應(yīng)某個(gè)company_id字段。

使用名稱手動(dòng)創(chuàng)建公司遷移2014_10_12_000000_create_companies_table.php會(huì)將其放置在users遷移之前,這將防止任何外鍵沖突,因?yàn)橐獎(jiǎng)?chuàng)建用戶表的公司表應(yīng)該已經(jīng)存在。

  6.租戶遷移

在第(3)項(xiàng)中,我們建立了一種tenant_migrate()方法,該方法將使用文件夾database/migrations_tenant作為承租人數(shù)據(jù)庫(kù)結(jié)構(gòu)的源。讓我們create_posts_table在那里創(chuàng)建遷移。

至此,所有必要的遷移就結(jié)束了。接下來(lái),我們需要處理應(yīng)用程序數(shù)據(jù)庫(kù)設(shè)置和模型的連接。

  7.應(yīng)用程序數(shù)據(jù)庫(kù)設(shè)置

對(duì)于數(shù)據(jù)庫(kù)連接,讓我們重用上一篇文章中應(yīng)用的相同策略:a main和tenant數(shù)據(jù)庫(kù)。特別注意指向的新默認(rèn)連接main。另一個(gè)有趣的地方是DB_DRIVER變量,它將允許我們?cè)跍y(cè)試和實(shí)時(shí)應(yīng)用程序之間在SQLite和MySQL之間進(jìn)行切換。

因?yàn)槲覀冊(cè)谡務(wù)摂?shù)據(jù)庫(kù)設(shè)置,所以讓我們花點(diǎn)時(shí)間設(shè)置phpunit.xml文件。該文件應(yīng)包含這些變量

  <env name =“ DB_DRIVER” value =“ sqlite” /> 

  <env name =“ DB_CONNECTION” value =“ main” /> 

  <env name =“ DB_DATABASE” value =“:內(nèi)存:” />

  8.模型

還需要在租戶模型和主要模型之間劃分模型。讓我們?cè)诿Q空間下創(chuàng)建MainModel和TenantModelApp/Models。

主連接上的表應(yīng)該擴(kuò)展MainModel,而“ Posts”表是特定于客戶的數(shù)據(jù)庫(kù)結(jié)構(gòu)的一部分,并且應(yīng)該擴(kuò)展TenantModel。就個(gè)人而言,我分別使用命名空間AppModelsMain和AppModelsTenant。

  9.路線

由于本文的重點(diǎn)是談?wù)撟馄冢晕覀儾灰速M(fèi)時(shí)間談?wù)撀酚伞y(cè)試現(xiàn)在應(yīng)該通過(guò)。

  10.總結(jié)

我們從創(chuàng)建帖子的測(cè)試開(kāi)始,然后點(diǎn)擊一個(gè)端點(diǎn)以查看是否返回。但是在執(zhí)行測(cè)試之前,將調(diào)用setUpon方法TenantTestCase。

租戶測(cè)試用例類將創(chuàng)建一個(gè)用戶,該用戶屬于公司。在創(chuàng)建該公司的過(guò)程中,將建立一個(gè)新的數(shù)據(jù)庫(kù)連接,并通過(guò)tenant_migrate()助手進(jìn)行遷移。完成所有這些操作后,“承租人測(cè)試用例”類將擁有一個(gè)經(jīng)過(guò)身份驗(yàn)證的用戶。

一旦/posts端點(diǎn)被調(diào)用,已創(chuàng)建了一個(gè)用戶數(shù)據(jù)庫(kù)和已建立連接。通過(guò)使用Post具有默認(rèn)連接的模型,該模型tenant將自動(dòng)從連接的數(shù)據(jù)庫(kù)中獲取記錄。

所有這些使我們成功實(shí)施了測(cè)試。但是實(shí)際應(yīng)用呢?

  11.租戶中間件

測(cè)試為綠色,但實(shí)際的應(yīng)用程序無(wú)法正常工作。這樣做的原因是因?yàn)闇y(cè)試正在建立租戶連接,但應(yīng)用程序卻沒(méi)有。我們可以通過(guò)實(shí)現(xiàn)租戶中間件來(lái)解決這個(gè)問(wèn)題。

上述就是關(guān)于數(shù)據(jù)庫(kù)多租戶最終指南的全部?jī)?nèi)容,想了解更多關(guān)于數(shù)據(jù)庫(kù)的信息,請(qǐng)繼續(xù)關(guān)注中培偉業(yè)。

主站蜘蛛池模板: 国产精品欧美在线视频 | 国产乱码精品一区 | 日韩在线播放第一页 | 亚洲精品视频专区 | 婷婷播放器 | 精品一久久香蕉国产线看观看古代 | 玩麻豆国产?片对白日逼视频 | 国产欧美成αⅴ人高清 | 色多多A级毛片免费看 | 开心五月激情综合婷婷色 | 掐住奶头用针扎进乳孔里小说 | 亚l州综合另中文字幕 | 伊人久久大香伊蕉在人线观看热v | a在线一区 | 鲁鲁鲁A片1级毛片免费看 | 99精品在这里 | 国产自在自线午夜精品 | 成人资源在线 | 亚洲国产精品久久久久久69 | 国产精品无码A∨麻豆 | 免费看色网站 | 日本乱人伦在线观看 | 亚洲AV无码成H人动漫无遮挡 | 久久久久久久穴 | 成人av天堂 | 国产精品无码午夜免费影院 | 久久婷婷五月综合色中文字幕 | 免费无码成人AV在线播放 | xxx69精品视频在线观看 | 亚洲中文字幕av每天更新 | 日本一区二区在线视频 | 国产日产精品一区二区三区四区介绍 | 伊人狠狠干 | 欧美xxxx性bbbbb喷水 | 91视频看污| 成人免费观看视频 | 久久亚洲国产精品一区二区 | 中文字幕与邻居少妇性刺激 | 韩国一级免费 | 76少妇精品导航 | 撕开奶罩揉吮奶头高潮av |