最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php多數(shù)據(jù)庫支持的應(yīng)用程序設(shè)計第1/2頁

 更新時間:2008年08月12日 12:26:47   作者:  
以前做PHP應(yīng)用,多數(shù)是單數(shù)據(jù)庫數(shù)據(jù)查詢和更新,頂多也是主從數(shù)據(jù)庫的支持,實現(xiàn)起來相對簡單。主從數(shù)據(jù)庫的問題在于,當(dāng)會話存儲在數(shù)據(jù)庫的時候,同步將可能出現(xiàn)問題,也就是說有可能出現(xiàn)會話的中斷。
所以我想在主從數(shù)據(jù)庫設(shè)計上,應(yīng)該將所有會話相關(guān)表進(jìn)行特殊對待。即:所有的會話數(shù)據(jù)表都可以更新和查詢,當(dāng)一個用戶訪問站點的時候,即將此用戶綁定到指定數(shù)據(jù)庫,所有會話訪問和查詢操作都對此數(shù)據(jù)庫進(jìn)行。會話表不做同步,其他非會話類更新也從主數(shù)據(jù)庫更新。這樣做其實也逃脫不了會話更新時候的數(shù)據(jù)庫切換,所以如果不想麻煩,還是將會話存放在文本中進(jìn)行的好。
  分?jǐn)?shù)據(jù)庫設(shè)計,將可能從壓力性能上會提升幾個檔次,當(dāng)然單次執(zhí)行效率不會比單數(shù)據(jù)庫來的高的,畢竟存在著數(shù)據(jù)庫切換的效率問題。分庫以及主從數(shù)據(jù)庫搭配是可以比較好改善數(shù)據(jù)庫并發(fā)瓶頸的方案。原則:大數(shù)據(jù)量,分庫;大訪問量,主從。很多時候,都是這兩者并行(本文不討論cache)。
  我想,如果要實現(xiàn)分庫以及主從關(guān)系,那么數(shù)據(jù)庫服務(wù)器數(shù)量將是非常可觀,在應(yīng)用程序中隨時切換到某一臺服務(wù)器,將是非常頭痛的問題,配置更換,變量名稱,是不是會有一大堆呢?如何尋找更好的解決方案將是本文談?wù)摰脑掝}。
  首先是分庫使得數(shù)據(jù)庫頗多的問題。什么情況下分庫?或許有些人還搞不明白為什么要分庫,我就簡要說一下自己的經(jīng)驗猜測。比如一個博客程序,一般設(shè)計是將日志存放在一張日志表中。假設(shè)是一個多用戶博客,那么將會關(guān)聯(lián)一個uid,如果數(shù)據(jù)量不大,這樣設(shè)計是沒有問題的,但是當(dāng)日志量巨大,一天有幾十萬條日志記錄錄入的時候,而且訪問量也比較可觀的時候,我想不可能每個用戶來訪問日志列表,都去從這包含幾千萬條日志記錄的數(shù)據(jù)表中去找那么幾條,效率可見一斑。這個時候就該考慮到分庫的問題。如何分?有一個很簡單的分表方法,即,根據(jù)uid段,將日志記錄在各個數(shù)據(jù)庫中,當(dāng)然,這個分布還是需要根據(jù)以往統(tǒng)計結(jié)果做出調(diào)整的,因為用戶日志分布肯定不是均勻的。設(shè)置好uid段,然后根據(jù)uid索引到指定數(shù)據(jù)庫配置,創(chuàng)建一個數(shù)據(jù)庫對象即可。配置信息可能如下:
復(fù)制代碼 代碼如下:

$configs['db_info']['blog'][0] = array(
    'db_host' => '192.168.0.1',
    'db_name' => 'blog',
    'db_user' => 'root',
    'db_pass' => '',
);
$configs['db_info']['blog'][1] = array(
    'db_host' => '192.168.0.2',
    'db_name' => 'blog',
    'db_user' => 'root',
    'db_pass' => '',
);
$configs['db_info']['blog'][2] = array(
    'db_host' => '192.168.0.2',
    'db_name' => 'blog',
    'db_user' => 'root',
    'db_pass' => '',
);
//...還有很多

  至于選擇哪一臺服務(wù)器,只需要根據(jù)uid做一個簡單的匹配就可以了。
  再談到的就是主從數(shù)據(jù)庫了。什么情況下使用主從數(shù)據(jù)庫?比如某個名人博客,訪問量相當(dāng)?shù)拇?,已?jīng)沒有辦法把他的數(shù)據(jù)再進(jìn)行拆分了,這個時候就得考慮主從數(shù)據(jù)庫服務(wù)器了,使用多臺數(shù)據(jù)庫來分流。這樣要適用主從和分庫,可能上面配置信息得稍微改動一下。
復(fù)制代碼 代碼如下:

$configs['db_info']['blog'][0]['master'] = array(
    'db_host' => '192.168.0.1',
    'db_name' => 'blog',
    'db_user' => 'root',
    'db_pass' => '',
);
$configs['db_info']['blog'][0]['slave'][0] = array(
    'db_host' => '192.168.0.2',
    'db_name' => 'blog',
    'db_user' => 'root',
    'db_pass' => '',
);
$configs['db_info']['blog'][0]['slave'][1] = array(
    'db_host' => '192.168.0.3',
    'db_name' => 'blog',
    'db_user' => 'root',
    'db_pass' => '',
);
$configs['db_info']['blog'][1]['master'] = array(
    'db_host' => '192.168.0.4',
    'db_name' => 'blog',
    'db_user' => 'root',
    'db_pass' => '',
);
$configs['db_info']['blog'][1]['slave'][0] = array(
    'db_host' => '192.168.0.5',
    'db_name' => 'blog',
    'db_user' => 'root',
    'db_pass' => '',
);
$configs['db_info']['blog'][1]['slave'][1] = array(
    'db_host' => '192.168.0.6',
    'db_name' => 'blog',
    'db_user' => 'root',
    'db_pass' => '',
);
$configs['db_info']['session'][0]['master'] = array(
    'db_host' => '192.168.0.7',
    'db_name' => 'session',
    'db_user' => 'root',
    'db_pass' => '',
);
$configs['db_info']['session'][1]['master'] = array(
    'db_host' => '192.168.0.8',
    'db_name' => 'session',
    'db_user' => 'root',
    'db_pass' => '',
);

  寫到這里,我想都應(yīng)該知道如何分表和分配你的數(shù)據(jù)庫了吧,接下去我就來說一下如何輕松的讀取這樣的配置信息,如何將這些配置融入你的數(shù)據(jù)庫驅(qū)動中。

相關(guān)文章

  • php將時間差轉(zhuǎn)換為字符串提示

    php將時間差轉(zhuǎn)換為字符串提示

    通過傳入數(shù)據(jù)庫中存儲的文章發(fā)表時的UNIX時間戳,來轉(zhuǎn)化為例如 幾分鐘前,幾小時前,幾天前 這樣的提示。如微博
    2011-09-09
  • PHP編程一定要改掉的5個不良習(xí)慣

    PHP編程一定要改掉的5個不良習(xí)慣

    在項目的每一次提交之后,我都會進(jìn)行大量代碼審查,會經(jīng)??吹揭恍┲貜?fù)出現(xiàn)的錯誤。以下這五個錯誤應(yīng)該要及時糾正,這是糾正它們的方法。
    2020-09-09
  • PHP自定義函數(shù)獲取URL中一級域名的方法

    PHP自定義函數(shù)獲取URL中一級域名的方法

    這篇文章主要介紹了PHP自定義函數(shù)獲取URL中一級域名的方法,涉及字符串與數(shù)組相關(guān)操作技巧,需要的朋友可以參考下
    2016-08-08
  • PHP生成可點擊刷新的驗證碼簡單示例

    PHP生成可點擊刷新的驗證碼簡單示例

    這篇文章主要介紹了PHP生成可點擊刷新的驗證碼,結(jié)合簡單實例形式分析了php驗證碼的實現(xiàn)與調(diào)用顯示方法,涉及js動態(tài)調(diào)用驗證碼php文件的相關(guān)技巧,需要的朋友可以參考下
    2016-05-05
  • PHP實現(xiàn)的觀察者模式實例

    PHP實現(xiàn)的觀察者模式實例

    這篇文章主要介紹了PHP實現(xiàn)的觀察者模式,結(jié)合具體實例形式分析了php觀察者模式的定義與使用方法,需要的朋友可以參考下
    2017-06-06
  • PHP 采集心得技巧

    PHP 采集心得技巧

    今天給大家共享一下我的采集代碼! 思路: 采集程序的思路很簡單大體可以分為以下幾個步驟
    2009-05-05
  • PHP中使用grpc服務(wù)的教程詳解

    PHP中使用grpc服務(wù)的教程詳解

    這篇文章主要為大家詳細(xì)介紹了PHP中使用grpc服務(wù)的教程相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • php繪圖中顯示不出圖片的原因及解決

    php繪圖中顯示不出圖片的原因及解決

    php繪圖首先要確認(rèn)gd庫是否啟用,到php.ini文件中,找到extension=php_gd2.dll將前面的;去掉,重新啟動服務(wù)器
    2014-03-03
  • php下正則來匹配dede模板標(biāo)簽的代碼

    php下正則來匹配dede模板標(biāo)簽的代碼

    用正則來匹配dede的標(biāo)簽,對于以后想實現(xiàn)dedecms那樣的模板標(biāo)簽的朋友與想研究dedecms模板標(biāo)簽的朋友可以參考下。
    2010-08-08
  • 如何在PHP程序中防止盜鏈

    如何在PHP程序中防止盜鏈

    php下用cookes實現(xiàn)防盜鏈的效果代碼
    2008-04-04

最新評論

岗巴县| 乌鲁木齐县| 成武县| 汕尾市| 土默特右旗| 瑞安市| 谷城县| 钟山县| 福泉市| 日喀则市| 丹东市| 泰来县| 湘潭市| 高要市| 宜章县| 平邑县| 泗洪县| 汪清县| 东丽区| 永寿县| 文昌市| 涿州市| 合作市| 全州县| 家居| 石屏县| 慈利县| 浑源县| 毕节市| 寿光市| 肃北| 东阳市| 甘德县| 扶绥县| 桃园市| 太康县| 富裕县| 平度市| 板桥市| 丰宁| 海盐县|