Ⅰ 數據是如何存儲的
轉自網友文章: 大型網站資料庫優化
千萬人同時訪問的網站,一般是有很多個資料庫同時工作,說明白一點就是資料庫集群和並發控制,這樣的網站實時性也是相對的。這些網站都有一些共同的特點:數據量大,在線人數多,並發請求多,pageview高,響應速度快。總結了一下各個大網站的架構,主要提高效率及穩定性的幾個地方包括:1、程序
程序開發是一方面,系統架構設計(硬體+網路+軟體)是另一方面。軟體架構方面,做網站首先需要很多web伺服器存儲靜態資源,比如圖片、視頻、靜態頁等,千萬不要把靜態資源和應用伺服器放在一起。一個好的程序員寫出來的程序會非常簡潔、性能很好,一個初級程序員可能會犯很多低級錯誤,這也是影響網站性能的原因之一。
網站要做到效率高,不光是程序員的事情,資料庫優化、程序優化這是必須的,在性能優化上要資料庫和程序齊頭並進!緩存也是兩方面同時入手。第一,資料庫緩存和資料庫優化,這個由dba完成(而且這個有非常大的潛力可挖,只是由於我們都是程序員而忽略了他而已)。第二,程序上的優化,這個非常的有講究,比如說重要一點就是要規范SQL語句,少用in 多用or,多用preparestatement,另外避免程序冗餘如查找數據少用雙重循環等。另外選用優秀的開源框架加以支持,我個人認為中後台的支持是最最重要的,可以選取spring+ibatis。因為ibatis直接操作SQL並有緩存機制。spring的好處就不用我多說了,IOC的機制可以避免new對象,這樣也節省開銷。據我分析,絕大部分的開銷就是在NEW的時候和連接資料庫時候產生的,請盡量避免。另外可以用一些內存測試工具來做一個demo說明hibernate和ibatis誰更快!前台你想用什麼就用什麼,struts,webwork都成,如果覺得自己挺牛X可以試試用tapestry。用資料庫也未必不能解決訪問量巨大所帶來的問題,作成靜態文件硬碟的定址時間也未必少於資料庫的搜索時間,當然對資料的索引要下一翻工夫。我自己覺得門戶往往也就是當天、熱門的資料點擊率較高,將其做緩存最多也不過1~2G的數據量吧,舉個例子:◎ 拿網易新聞來說 http://news.163.com/07/0606/09/3GA0D10N00011229.html
格式化一下,方便理解:http://域名/年/月日/新聞所屬分類/新聞ID.html
可以把當天發布的、熱門的、流攬量大的作個緩寸,用hashtable(key:年-月-日-分類-ID,value:新聞對象),靜態將其放到內存(速度絕對快過硬碟定址靜態頁面)。通常是採用oracle存儲過程+2個weblogic,更新機制也幾乎一樣每簽發一條新聞,就會生成靜態頁面,然後發往前端的web伺服器,前端的web都是做負載均衡的。另外還有定時的程序,每5-15分鍾自動生成一次。在發布新聞的同時將數據緩存。當然緩存也不會越來越大,在個特定的時間段(如凌晨)剔除過期的數據。做一個大的網站遠沒有想像中那麼簡單,伺服器基本就要百十個的。這樣可以大大增加一台計算機的處理速度,如果一台機器處理不了,可以用httpserver集群來解決問題了。2、網路
中國的網路分南北電信和網通,訪問的ip就要區分南北進入不同的網路。3、集群通常會使用CDN與GSBL與DNS負載均衡技術,每個地區一組前台伺服器群,例如:網易,網路使用了DNS負載均衡技術,每個頻道一組前台伺服器,一搜使用了DNS負載技術,所有頻道共用一組前台伺服器集群。網站使用基於Linux集群的負載均衡,失敗恢復,包括應用伺服器和資料庫伺服器,基於linux-ha的服務狀態檢測及高可用化。
應用伺服器集群可以採用apache+tomcat集群和weblogic集群等;web伺服器集群可以用反向代理,也可以用NAT的方式,或者多域名解析都可以;Squid也可以,方法很多,可以根據情況選擇。4、資料庫因為是千萬人同時訪問的網站,所以一般是有很多個資料庫同時工作的,說明白一點就是資料庫集群和並發控制,數據分布到地理位置不同的數據中心,以免發生斷電事故。另外還有一點的是,那些網站的靜態化網頁並不是真的,而是通過動態網頁與靜態網頁網址交換做出現的假象,這可以用urlrewrite這樣的開源網址映射器實現。這樣的網站實時性也是相對的,因為在資料庫復制數據的時候有一個過程,一般在技術上可以用到hibernate和ecache,但是如果要使網站工作地更好,可以使用EJB和websphere,weblogic這樣大型的伺服器來支持,並且要用oracle這樣的大型資料庫。
大型門戶網站不建議使用Mysql資料庫,除非你對Mysql數據的優化非常熟悉。Mysql資料庫伺服器的master-slave模式,利用資料庫伺服器在主從伺服器間進行同步,應用只把數據寫到主伺服器,而讀數據時則根據負載選擇一台從伺服器或者主伺服器來讀取,將數據按不同策略劃分到不同的伺服器(組)上,分散資料庫壓力。
大型網站要用oracle,數據方面操作盡量多用存儲過程,絕對提升性能;同時要讓DBA對資料庫進行優化,優化後的資料庫與沒優化的有天壤之別;同時還可以擴展分布式資料庫,以後這方面的研究會越來越多; 如果我來設計一個海量資料庫,可能首先考慮的就是平行擴容性,原因很簡單,我沒有辦法預估將來的數據規模,那我也就沒有邊界可言,因此,基本上首選dbm類哈希型資料庫,甚至,對於實時性要求很高的資料庫,可能會自行設計庫。 當我們使用業務描述腳本、事務批處理機、目錄服務、底層存取來劃分一個資料庫系統之後,其實,所謂的海量數據需求,也就不是那麼難辦到了。 嗯,這樣還有一個額外的好處,就是由於平行擴容性很好,因此,前期可以以較低成本搭建一個簡單的架子,後期根據業務量逐出擴容。這對很多企業來說,就是入門門檻很低,便於操作,且商業風險也小。MySQL比起動輒幾十萬美金,搭建豪華的Oracle平台,成本低多了。
Ⅱ 怎麼存儲數據
【硬碟存儲數據方式】硬碟是在硬質碟片(一般是鋁合金,以前 IBM 也嘗試過使用玻璃)上塗敷薄薄的一層鐵磁性材料。硬碟儲存數據的原理和盒式磁帶類似,只不過盒式磁帶上存儲是模擬格式的音樂,而硬碟上存儲的是數字格式的數據。寫入時,磁頭線圈上加電,在周圍產生磁場,磁化其下的磁性材料;電流的方向不同,所以磁場的方向也不同,可以表示 0 和 1 的區別。讀取時,磁頭線圈切割磁場線產生感應電流,磁性材料的磁場方向不同,所以產生的感應電流方向也不同。
不論是什麼計算機文件,歌曲、視頻、圖片、文檔等等,都是以一個二進制的序列存在的,也就是很多個"10010001110011......"這樣的東西,硬碟上的存儲的文件實際上就是存儲著這些0和1的序列。硬碟的磁頭能夠按照指令讀取相應位置的信號,並且能夠改變指定位置的磁場方向,這就是數據的讀和寫。
Ⅲ 計算機是怎麼存儲數據的
數據結構為計算機存儲、組織數據的方式。數據結構指相互之間存在一種或多種特定關系的數據元素的集合。通常情況下,精心選擇的數據結構可以帶來更高的運行或者存儲效率。數據結構往往同高效的檢索演算法和索引技術有關。
數據存儲對象包括數據流在加工過程中產生的臨時文件或加工過程中需要查找的信息。數據以某種格式記錄在計算機內部或外部存儲介質上。數據存儲要命名,這種命名要反映信息特徵的組成含義。數據流反映了系統中流動的數據,表現出動態數據的特徵;數據存儲反映系統中靜止的數據,表現出靜態數據的特徵。
(3)如何存儲數據的擴展閱讀
磁碟和磁帶都是常用的存儲介質。數據存儲組織方式因存儲介質而異。在磁帶上數據僅按順序文件方式存取;在磁碟上則可按使用要求採用順序存取或直接存取方式。數據存儲方式與數據文件組織密切相關,其關鍵在於建立記錄的邏輯與物理順序間對應關系,確定存儲地址,以提高數據存取速度。
Ⅳ 硬碟是怎麼存儲數據的啊
【硬碟存儲數據方式】硬碟是在硬質碟片(一般是鋁合金,以前 IBM 也嘗試過使用玻璃)上塗敷薄薄的一層鐵磁性材料。硬碟儲存數據的原理和盒式磁帶類似,只不過盒式磁帶上存儲是模擬格式的音樂,而硬碟上存儲的是數字格式的數據。寫入時,磁頭線圈上加電,在周圍產生磁場,磁化其下的磁性材料;電流的方向不同,所以磁場的方向也不同,可以表示 0 和 1 的區別。讀取時,磁頭線圈切割磁場線產生感應電流,磁性材料的磁場方向不同,所以產生的感應電流方向也不同。
不論是什麼計算機文件,歌曲、視頻、圖片、文檔等等,都是以一個二進制的序列存在的,也就是很多個"10010001110011......"這樣的東西,硬碟上的存儲的文件實際上就是存儲著這些0和1的序列。硬碟的磁頭能夠按照指令讀取相應位置的信號,並且能夠改變指定位置的磁場方向,這就是數據的讀和寫。
Ⅳ 硬碟是怎麼來存儲數據的
硬碟不是直接存儲我們現在人看到的數據,計算機中,通過2進制,將數據轉化為可以用2進製表示的數字數據,再對應機器的高電平低電平等可以用兩種機器物理狀態的狀態。
硬碟儲存數據的原理和盒式磁帶類似,只不過盒式磁帶上存儲是模擬格式的音樂,而硬碟上存儲的是數字格式的數據。寫入時,磁頭線圈上加電,在周圍產生磁場,磁化其下的磁性材料;電流的方向不同,所以磁場的方向也不同,可以表示 0 和 1 的區別。
讀取時,磁頭線圈切割磁場線產生感應電流,磁性材料的磁場方向不同,所以產生的感應電流方向也不同。
(5)如何存儲數據的擴展閱讀
硬碟使用注意事項:
1、在工作時不能突然關機。
硬碟當硬碟開始工作時,一般都處於高速旋轉之中,如果我們中途突然關閉電源,可能會導致磁頭與碟片猛烈磨擦而損壞硬碟,因此要避免突然關機。關機時一定要注意麵板上的硬碟指示燈是否還在閃爍,只有在其指示燈停止閃爍、硬碟讀寫結束後方可關閉計算機的電源開關。
2、防止灰塵進入。
灰塵對硬碟的損害是非常大的,這是因為在灰塵嚴重的環境下,硬碟很容易吸引空氣中的灰塵顆粒,使其長期積累在硬碟的內部電路元器件上,會影響電子元器件的熱量散發,使得電路元器件的溫度上升,產生漏電或燒壞元件。
3、要防止溫度過高或過低。
溫度對硬碟的壽命也是有影響的。硬碟工作時會產生一定熱量,使用中存在散熱問題。溫度以20~25℃為宜,過高或過低都會使晶體振盪器的時鍾主頻發生改變。溫度還會造成硬碟電路元器件失靈,磁介質也會因熱脹效應而造成記錄錯誤。
Ⅵ 計算機中如何存儲數據
集中存儲數據的方法是以二進制存儲所有信息,並且以文件的方式來存取的
Ⅶ 數據結構如何存儲數據
存儲數據 是磁碟的技術
數據結構存儲 一般就是數組、 結構體、
結構體串起來 有用數組, 鏈表的形式
鏈表結構復雜化就出現了 樹和圖
所以數據結構 只管數據之間的關系
Ⅷ 數據在內存中是如何存儲的
計算機要處理的信息是多種多樣的,如數字、文字、符號、圖形、音頻、視頻等,這些信息在人們的眼裡是不同的。但對於計算機來說,它們在內存中都是一樣的,都是以二進制的形式來表示。
要想學習編程,就必須了解二進制,它是計算機處理數據的基礎。
內存條是一個非常精密的部件,包含了上億個電子元器件,它們很小,達到了納米級別。這些元器件,實際上就是電路;電路的電壓會變化,要麼是 0V,要麼是 5V,只有這兩種電壓。5V 是通電,用1來表示,0V 是斷電,用0來表示。所以,一個元器件有2種狀態,0 或者 1。
我們通過電路來控制這些元器件的通斷電,會得到很多0、1的組合。例如,8個元器件有 28=256 種不同的組合,16個元器件有 216=65536 種不同的組合。雖然一個元器件只能表示2個數值,但是多個結合起來就可以表示很多數值了。
我們可以給每一種組合賦予特定的含義,例如,可以分別用 1101000、00011100、11111111、00000000、01010101、10101010 來表示 C、語、言、中、文、網 這幾個字,那麼結合起來 1101000 00011100 11111111 00000000 01010101 10101010 就表示」C語言中文網「。
一般情況下我們不一個一個的使用元器件,而是將8個元器件看做一個單位,即使表示很小的數,例如 1,也需要8個,也就是 00000001。
1個元器件稱為1比特(Bit)或1位,8個元器件稱為1位元組(Byte),那麼16個元器件就是2Byte,32個就是4Byte,以此類推:
8×1024個元器件就是1024Byte,簡寫為1KB;
8×1024×1024個元器件就是1024KB,簡寫為1MB;
8×1024×1024×1024個元器件就是1024MB,簡寫為1GB
現在,你知道1GB的內存有多少個元器件了吧。我們通常所說的文件大小是多少 KB、多少 MB,就是這個意思。
單位換算:
1Byte = 8 Bit
1KB = 1024Byte = 210Byte
1MB = 1024KB = 220Byte
1GB = 1024MB = 230Byte
1TB = 1024GB = 240Byte
1PB = 1024TB = 250Byte
1EB = 1024PB = 260Byte
我們平時使用計算機時,通常只會設計到 KB、MB、GB、TB 這幾個單位,PB 和 EB 這兩個高級單位一般在大數據處理過程中才會用到。
你看,在內存中沒有abc這樣的字元,也沒有gif、jpg這樣的圖片,只有0和1兩個數字,計算機也只認識0和1。所以,計算機使用二進制,而不是我們熟悉的十進制,寫入內存中的數據,都會被轉換成0和1的組合。
Ⅸ 硬碟是如何存儲數據的
硬碟數據存儲原理
硬碟是一種採用磁介質的數據存儲設備,數據存儲在密封於潔凈的硬碟驅動器內腔的若干個磁碟片上。這些碟片一般是在以鋁為主要成分的片基表面塗上磁性介質所形成,在磁碟片的每一面上,以轉動軸為軸心、以一定的磁密度為間隔的若干個同心圓就被劃分成磁軌(track),每個磁軌又被劃分為若干個扇區(sector),數據就按扇區存放在硬碟上。在每一面上都相應地有一個讀寫磁頭(head),所以不同磁頭的所有相同位置的磁軌就構成了所謂的柱面(cylinder)。傳統的硬碟讀寫都是以柱面、磁頭、扇區為定址方式的(CHS定址)。硬碟在上電後保持高速旋轉(5400轉/min以上),位於磁頭臂上的磁頭懸浮在磁碟表面,可以通過步進電機在不同柱面之間移動,對不同的柱面進行讀寫。所以在上電期間如果硬碟受到劇烈振盪,磁碟表面就容易被劃傷,磁頭也容易損壞,這都將給盤上存儲的數據帶來災難性的後果。
硬碟的第一個扇區(0道0頭1扇區)被保留為主引導扇區。在主引導區內主要有兩項內容:主引導記錄和硬碟分區表。主引導記錄是一段程序代碼,其作用主要是對硬碟上安裝的操作系統進行引導;硬碟分區表則存儲了硬碟的分區信息。計算機啟動時將讀取該扇區的數據,並對其合法性進行判斷(扇區最後兩個位元組是否為0x55AA或0xAA55 ),如合法則跳轉執行該扇區的第一條指令。所以硬碟的主引導區常常成為病毒攻擊的對象,從而被篡改甚至被破壞。可引導標志:0x80為可引導分區類型標志;0表示未知;1為FAT12;4為FAT16;5為擴展分區等等。
硬碟信息與硬碟數據恢復
在計算機的CMOS中也存儲了硬碟的信息,主要有硬碟類型、容量、柱面數、磁頭數、每道扇區數、定址方式等內容,對硬碟參數加以說明,以便計算機正確訪問硬碟。當CMOS因故掉電或發生錯誤時,硬碟設置可能會丟失或錯誤,硬碟訪問也就無法正確進行。這種情況我們就必須重新設置硬碟參數,如果事先已記下硬碟參數或者有某些防病毒軟體事先備份的CMOS信息,只需手工恢復即可;否則也可使用BIOS設置(setup)中的「自動檢測硬碟類型」(HD type auto detection)的功能,一般也能得到正確的結果。
硬碟故障大體上可以分為軟故障和硬故障兩大類,具體有硬碟操作系統被損壞、硬碟主引導區被破壞、 FAT表表被破壞、CMOS硬碟參數不正確、硬碟控制器與硬碟驅動器未能正常連接、硬碟驅動器或硬碟控制器硬體故障、主板故障等情況。比如:
開機自檢過程中,屏幕提示「Hard disk drive failure」或類似信息,則可以判斷為硬碟驅動器或硬碟控制器(提示「Hard drive controller failure」)硬體故障。
開機自檢過程中,屏幕提示「Hard disk not present」或類似信息,則可能是CMOS硬碟參數設置錯誤或硬碟控制器與硬碟驅動器連接不正確。
開機自檢過程中,屏幕提示「Missing operating system」、「Non OS」 、「Non system disk or disk error,replace disk and press a key to reboot」等類似信息,則可能是硬碟主引導區分區表被破壞、操作系統未正確安裝或者CMOS硬碟參數設置錯誤等。
開機用軟盤啟動後無法進入C盤,可能是分區表被破壞,硬碟數據恢復是可以的。