您在這裡

單一資料庫,多重網站

Cassell's 的頭像
Cassell 在 2009-05-04 (週一) 22:50 發表

小弟最近有個想法,就是集合各個CMS之較好的功能來製作一個網站(Drupal mix XOOPS mix Joomla mix...........)
可是目前就自己所知,由於不能一個資料庫對應多個網站(因為網站在開啟時會鎖定資料庫)
我想問請教一下各位有沒有類似這方面的經驗可以分享呢?

還有就是如果說我只是想使用Drupal建立很像很多個不一樣的網站要如何建立呢?
例如:這篇→https://drupaltaiwan.org/forum/20070705/1379
可是我目前只進行到複製資料夾(就是把資料夾命名為你要的網址,並且改成根Default不同名)
在進行Settings.php修改時不是很順利,因為不知道要修改哪個欄位,所以看到很像的就把它寫進去了(當然失敗XD)

還有就是在下面要先從Views建立Vocabulary,這裡的Vocabulary是什麼意思呢?請問要從何操作?

問題有點多有點雜,望各位多多包含

Mix n 個CMS 有點無謂, 浪費自己的時間
再者, 你純用不同CMS mix, Mix 後優勢都會變惡了
實在想像不出Joomla, Xoops 有什麼較好的功能, 有必要到這個地步
實在的說, 不是自找麻煩的話, 新建立網站的人, 不論是新手還是高手, 一般情況都不會這樣做

"由於不能一個資料庫對應多個網站(因為網站在開啟時會鎖定資料庫)"
這點陳述一般來說不正確

多網站看這:
http://drupaltaiwan.org/forum/20090112/2982

嗯嗯,目前只是構想,還沒實行。

謝謝你阿:D

那請問就是"不能一個資料庫對應多個網站"這句話的錯誤點是哪個部分...因為我跟別人講述這部份的時候別人也聽不懂,要更詳細解釋才會了解我想表達的內容

謝謝Kay.L的解惑:D

應該說你不能使用「鎖定」資料庫這樣的敘述方式。
在資料庫的專門術語中,「鎖定」指的是在一段 SQL 指令的執行過程,為了保證資源獨占所使用的方法,主要有表鎖定跟列鎖定兩種。
一般不需要作資料庫的「鎖定」,所以一般在說資料庫的鎖定,指的都是上述的意思。

而各系統間如果要共用一個資料庫,通常會在使用的資料表名稱中指定前綴字串作為分別,為的就是避免使用到同一張資料表。
因此在系統設計上,各系統都的設計是朝資料表獨占的方式進行。
這是由於在程式執行過程中,如果要不斷檢查所使用的資料表結構是否有異動,實在是太浪費效能的緣故。

所以結論就是,如果 A 系統想用 B 系統的某個功能,通常的作法就是會去拆解 B 系統該功能的運作方式,然後為 A 系統「重新」寫一個模組給 A 系統來使用,很少會發生你說的情況。
最多就是分成主從系統,然後在兩個系統間提供橋接的模組,讓兩方可以共用帳號資料等等,或是利用 OpenID、OAuth 等方式作到多方系統可以使用同一組使用者帳號或單一認證登入等。

即便如此,上述的情況在使用上仍有諸多限制。但是多方系統截長補短到「功能」層級,恕小弟學藝不精、創意不足、未曾聽聞有此異事。

在大型的 AP 層次考量下,的確會有這種設計,
但 drupal 的資料庫設計並沒有這層次的考量。
一般都會多一個欄位叫 node 的,就是你所謂的 for 某個網站專用,
如果要照您說的方式,那核心資料庫必需打掉重做,
而且全部的模組都必需遵照此規距,應該是不可能。

畢竟實際狀況下,這種需求是不多的。

再從另一個角度來看,共用同一個資料庫,
勢必資料庫資料大增,對mysql也未必是好事。

如果你推動 drupal for oracle ,我想會更有看頭,
還可以重新改掉核心資料庫。

小弟的愚見啦,參考參考。