⑴ localstorage的跨域存儲方案
html5標准中一個亮點就是提供了瀏覽器本地存儲的功能。方式有兩種:localStorage和 sessionStorage。 相對於cookie,他們具有存儲空間大的特點,一般可以存儲5M左右,而cookie一般只有4k。
localStorage和 sessionStorage的主要區別是:localStorage的生命周期是永久的,意思就是如果不主動清除,存儲的數據將一直被保存。而sessionStorage顧名思義是針對一個session的數據存儲,生命周期為當前窗口,一旦窗口關閉,那麼存儲的數據將被清空。
當然作為孿生兄弟,兩者也有很多相同點。比如存取數據的方法就是一樣的。
另外,不同瀏覽器無法共享localStorage和sessionStorage中的信息。同一瀏覽器的相同域名和埠的不同頁面間可以共享相同的 localStorage,但是不同頁面間無法共享sessionStorage的信息。這里需要注意的是,頁面僅指頂級窗口,如果一個頁麵包含多個iframe且他們屬於同源頁面,那麼他們之間是可以共享sessionStorage的。在實際開發過程中,遇到的最多的問題就是localStorage的同源策略問題。為了了解這個問題,我們先得清楚什麼是同源策略。同源策略( same-origin policy )是瀏覽器執行的一種安全措施,目的是為了保證用戶信息的安全,防止惡意的網站竊取數據。瀏覽器的同源策略具體如下:
只要不同源就不能共享localStorage的數據。但是在實際開發中又時常會遇到這樣的需求,那我們該如何解決呢?
目前廣泛採用的是postMessage和iframe相結合的方法。postMessage(data,origin)方法允許來自不同源的腳本採用非同步方式進行通信,可以實現跨文本檔、多窗口、跨域消息傳遞。接受兩個參數:
具體示例:
http://www.test.com/index_a.html
http://www.test2.com/getmessage.html
http://www.test2.com/index_b.html
以上示例中,很好的實現了localStorage的跨域存儲功能。這樣就算解決問題了嗎?
我們還會遇到另一個棘手的問題。在safari瀏覽器下,這種方法就不可行了。由於safari瀏覽器的默認限制,父頁面無法向iframe里的跨域頁面傳遞信息。這時針對safari瀏覽器就得另闢蹊徑了。本人在項目中用的方法是在safari瀏覽器下,用url傳值的方法來實現跨域存儲功能。用這種方法有一個問題必須要先考慮的,就是safari瀏覽器的url能夠支持多長的字元呢? url的長度極限是由兩方面決定的,一個是瀏覽器本身的限制,另一個就是伺服器的限制。有人在Apache 2.4伺服器上設置了一個非常大的LimitRequestLine 和 LimitRequestFieldSize,然後進行測試,結果表明safari瀏覽器可以支持超過64k個字元的長度。一般伺服器默認支持2~3萬個字元長度的url不成問題。所以只要需要傳輸的數據量不是非常大的話,可以直接通過url來進行傳遞,如此就能解決safari下的跨域存儲問題。示例如下:
http://www.test.com/index_a.html
http://www.test2.com/index_b.html
如此就可以比較好的解決localStorage的跨域存儲問題了。
⑵ 綜合使用時序數據與截面數據能解決多重共線性嗎
時序數據與截面數據能解決多重共線性請參考下面時序資料庫白皮書。
思極有容資料庫
時序資料庫技術白皮書
北京中電普華信息技術有限公司
2020年4月
目錄
1大數據時代的挑戰1
2產品特點1
3系統結構2
4存儲結構4
5數據分區、水平擴展6
6高可靠系統7
7STable:多表聚合9
8數據模型10
9實時流式計算11
10便捷的安裝、部署、維護12
11更多亮點13
12參數指標13
13應用場景14
1大數據時代的挑戰
隨著移動互聯網的普及,數據通訊成本的急劇下降,以及各種低成本的感測技術和智能設備的出現,除傳統的手機、計算機在實時採集數據之外,手環、共享單車、計程車、智能電表、環境監測設備、電梯、大型設備、工業生產線等也都在源源不斷的產生海量的實時數據並發往雲端。這些海量數據是企業寶貴的財富,能夠幫助企業實時監控業務或設備的運行情況,生成各種維度的報表,而且通過大數據分析和機器學習,對業務進行預測和預警,能夠幫助企業進行科學決策、節約成本並創造新的價值。
仔細研究發現,所有機器、設備、感測器、以及交易系統所產生的數據都是時序的,而且很多還帶有位置信息。這些數據具有明顯的特徵,1:數據是時序的,一定帶有時間戳;2:數據是結構化的;3:數據極少有更新或刪除操作;4:無需傳統資料庫的事務處理;5:相對互聯網應用,寫多讀少;6:用戶關注的是一段時間的趨勢,而不是某一特點時間點的值;7:數據是有保留期限的;8:數據的查詢分析一定是基於時間段和地理區域的;9:除存儲查詢外,往往還需要各種統計和實時計算操作;10:數據量巨大,一天採集的數據就可以超過100億條。
看似簡單的事情,但由於數據記錄條數巨大,導致數據的實時寫入成為瓶頸,查詢分析極為緩慢,成為新的技術挑戰。傳統的關系型資料庫或Nosql資料庫以及流式計算引擎由於沒有充分利用這些數據的特點,性能提升極為有限,只能依靠集群技術,投入更多的計算資源和存儲資源來處理,企業運營維護成本急劇上升。
2產品特點
思極有容時序資料庫正是普華公司面對這一高速增長的物聯網大數據市場和技術挑戰推出的創新性的大數據處理產品,它不依賴任何第三方軟體,也不是優化或包裝了一個開源的資料庫或流式計算產品,而是在吸取眾多傳統關系型資料庫、NoSQL資料庫、流式計算引擎、消息隊列等軟體的優點之後自主開發的產品,在時序空間大數據處理上,有著自己獨到的優勢。
·10倍以上的性能提升:定義了創新的數據存儲結構,單核每秒就能處理至少2萬次請求,插入數百萬個數據點,讀出一千萬以上數據點,比現有通用資料庫快了十倍以上。
·硬體或雲服務成本降至1/5:由於超強性能,計算資源不到通用大數據方案的1/5;通過列式存儲和先進的壓縮演算法,存儲空間不到通用資料庫的1/10。
·全棧時序數據處理引擎:將資料庫、消息隊列、緩存、流式計算等功能融合一起,應用無需再集成Kafka/Redis/HBase/HDFS等軟體,大幅降低應用開發和維護的復雜度成本。
·強大的分析功能:無論是十年前還是一秒鍾前的數據,指定時間范圍即可查詢。數據可在時間軸上或多個設備上進行聚合。臨時查詢可通過Shell,Python,R,Matlab隨時進行。
·與第三方工具無縫連接:不用一行代碼,即可與Telegraf,Grafana,Matlab,R等工具集成。後續將支持MQTT,OPC等工具,與BI工具也能夠無縫連接。
·零運維成本、零學習成本:安裝、集群一秒搞定,無需分庫分表,實時備份。支持標准SQL語句,支持JDBC,RESTful連接,支持Python/Java/C/C++/Go等開發語言,與MySQL相似,零學習成本。
採用思極有容時序資料庫,可將典型的物聯網、車聯網、工業互聯網大數據平台的整體成本降至現有的1/5。同樣的硬體資源,思極有容時序資料庫能將系統處理能力和容量增加五倍以上。
3系統結構
思極有容時序資料庫是基於硬體、軟體系統不可靠、一定會有故障的假設進行設計的,是基於任何單台計算機都無足夠能力處理海量數據的假設進行設計的,因此思極有容時序資料庫從研發的第一天起,就是按照分布式高可靠架構進行設計的,是完全去中心化的。思極有容時序資料庫整個系統結構如下圖所示,下面對一些基本概念進行介紹。
物理節點:集群里的任何一台物理機器(dnode),根據其具體的CPU、內存、存儲和其它物理資源,思極有容時序資料庫將自動配置多個虛擬節點。
虛擬數據節點:存儲具體的時序數據,所有針對時序數據的插入和查詢操作,都在虛擬數據節點上進行(圖例中用V標明)。位於不同物理機器上的虛擬數據節點可以組成一個虛擬數據節點組(如圖例中dnode0中的V0,dnode1中的V1,dnode6中的V2組成了一個組),虛擬節點組里的虛擬節點的數據以非同步的方式進行同步,並實現數據的最終一致性,以保證一份數據在多台物理機器上有拷貝,而且即使一台物理機器宕機,總有位於其他物理機器上的虛擬節點能處理數據請求,從而保證系統運行的高可靠性。
虛擬管理節點:負責所有節點運行狀態的採集、節點的負載均衡,以及所有MetaData的管理,包括用戶、資料庫、表的管理(圖例中用M標明)。當應用需要插入或查詢一張表時,如果不知道這張表位於哪個數據節點,應用會連接管理節點來獲取該信息。MetaData的管理也需要有高可靠的保證,系統採用Master-Slave的機制,容許多到5個虛擬管理節點組成一個虛擬管理節點集群(如圖例中的M0,M1,M2)。這個虛擬管理節點集群的創建是完全自動的,無需任何人工干預,應用也無需知道虛擬管理節點具體在哪台物理機器上運行。
集群對外服務IP:整個系統可以由多台甚至數萬台伺服器組成,但對於應用而言,只需要提供整個集群中任何一台或兩台伺服器的IP地址即可。集群將根據應用的請求,自動的將請求轉發到相應的一個甚至多個節點進行處理,包括聚合、計算操作等。這些復雜的分發和路由對應用是完全透明的。
4存儲結構
為提高壓縮和查詢效率,思極有容時序資料庫採用列式存儲。與眾多時序資料庫不同的是,思極有容時序資料庫基於時序數據的特點,將每一個採集點的數據作為資料庫中的一張獨立的表來存儲。這樣對於一個採集點的數據而言,無論在內存還是硬碟上,數據點在介質上是連續存放的,這樣大幅減少隨機讀取操作,減少IO操作次數,數量級的提升讀取和查詢效率。而且由於不同數據採集設備產生數據的過程完全獨立,每個設備只產生屬於自己的數據,一張表也就只有一個寫入者。這樣每個表就可以採用無鎖方式來寫,寫入速度就能大幅提升。同時,對於一個數據採集點而言,其產生的數據是時序的,因此寫的操作可用追加的方式實現,進一步大幅提高數據寫入速度。
數據具體寫如流程如圖所示:
寫入數據時,先將數據點寫進Commit日誌,然後轉發給同一虛擬節點組里的其他節點,再按列寫入分配的內存塊。當內存塊的剩餘空間達到一定臨界值或設定的commit時間時,內存塊的數據將寫入硬碟。內存塊是固定大小(如16K)的,但依據系統內存的大小,每個採集點可以分配一個到多個內存塊,採取LRU策略進行管理。在一個內存塊里,數據是連續存放的,但塊與塊是不連續的,因此思極有容時序資料庫為每一個表在內存里建立有塊的索引,以方便寫入和查詢。
數據寫入硬碟是以添加日誌的方式進行的,以求大幅提高落盤的速度。為避免合並操作,每個採集點(表)的數據也是按塊存儲,在一個塊內,數據點是按列連續存放的,但塊與塊之間可以不是連續的。思極有容時序資料庫對每張表會維護一索引,保存每個數據塊在文件中的偏移量,起始時間、數據點數、壓縮演算法等信息。每個數據文件僅僅保存固定一段時間的數據(比如一周,可以配置),因此一個表的數據會分布在多個數據文件中。查詢時,根據給定的時間段,思極有容時序資料庫將計算出查找的數據會在哪個數據文件,然後讀取。這樣大幅減少了硬碟操作次數。多個數據文件的設計還有利於數據同步、數據恢復、數據自動刪除操作,更有利於數據按照新舊程度在不同物理介質上存儲,比如最新的數據存放在SSD盤上,最老的數據存放在大容量但慢速的硬碟上。通過這樣的設計,思極有容時序資料庫將硬碟的隨機讀取幾乎降為零,從而大幅提升寫入和查詢效率,讓思極有容時序資料庫在很廉價的存儲設備上也有超強的性能。
為減少文件個數,一個虛擬節點內的所有表在同一時間段的數據都是存儲在同一個數據文件里,而不是一張表一個數據文件。但是對於一個數據節點,每個虛擬節點都會有自己獨立的數據文件。
5數據分區、水平擴展
為處理每日高達數億條的海量數據,數據必須在多個節點存放。在思極有容時序資料庫里,數據是按照每個採集點(表)來存放的。一張表(一個採集點)的數據,即使每秒產生一百個位元組的數據量,一年也才3G的數據量,壓縮後,往往還不到300M,因此在思極有容時序資料庫里,一個表的數據是不跨節點存儲的,以便於單張表的快速高效的插入、查詢和計算。
為更好的數據分區,思極有容時序資料庫採用了虛擬數據節點的設計。一個虛擬數據節點包含多個表,表的數量可以配置。根據其計算和存儲資源,一個物理節點將被劃分為多個虛擬數據節點。虛擬數據節點的設計帶來幾大優勢:
1)更好的支持硬體異構環境,資源多的伺服器可以創建更多的虛擬節點;
2)恢復一個宕機的節點,可以讓眾多的其他節點參與進來,大大加快速度;
3)如果撤掉一個數據節點,該節點上的虛擬節點將被相當均勻的遷移到其他節點上去;
4)新增一個數據節點,負載過熱的節點的上的部分虛擬節點將被整體遷移過來。這一切讓負載更加均衡,讓數據同步變得更加高效。
與傳統的資料庫相似,用戶可以創建多個資料庫,每個庫裡面,可以創建多個表。一個庫可以橫跨多個虛擬數據節點,但一個虛擬數據節點僅僅屬於一個資料庫。當用戶添加一個表時,管理節點將查看已經分配的虛擬節點里是否還有空位,如果有,就將該表分配到這虛擬節點。如果這個庫的所有虛擬節點都沒有空位,管理節點將根據負載均衡的策略(隨機、輪詢等)來分配一個新的虛擬節點給該庫,然後將該表分配到新的虛擬節點里。由於一台物理主機有多個虛擬數據節點,這種策略能保證負載均勻分布。
管理節點負責整個系統的負載均衡,包括虛擬數據節點的增加、刪除、遷移、合並與拆分。管理節點並不保存每個採集點採集的數據,只是管理虛擬節點,即使宕機,也不會影響現有各虛擬節點的數據插入和查詢操作。各個採集點或應用從管理節點獲取分配的虛擬數據節點信息後,然後直接與虛擬數據節點通訊,直接將數據插入資料庫,對於查詢操作也是如此。因此,系統容量以及吞吐率與虛擬數據節點的個數成正比,整個系統是水平擴展的
6高可靠系統
為保證數據節點的高可靠性,思極有容時序資料庫引入了虛擬數據節點組的概念,並採用非同步的方式進行數據同步。一個虛擬節點組由處於不同物理主機上的虛擬數據節點組成,虛擬數據節點個數就是數據冗餘的個數(ReplicationFactor,一般大於2)。在一個虛擬節點組里,各個虛擬數據節點通過心跳包實時知道對方的狀態。如果一個虛擬數據節點收到數據寫入的請求,該請求會被立即轉發給其他虛擬數據節點,然後在本地存儲處理。當應用連接思極有容時序資料庫系統時,對於要操作的任何一張表,系統會給應用提供該表所屬的虛擬數據節點組里各個虛擬節點的IP地址(如果replicationfactor為3,就會有3個IP地址),如果鏈接其中一個失敗或者操作失敗,應用會嘗試第二個、第三個,只有所有節點失敗才會返回失敗。這樣保證虛擬數據節點組里任何一台機器宕機,都不會影響對外的服務。這些復雜的重新連接流程都被思極有容時序資料庫Driver包裝隱藏起來,應用開發者無需寫程序來實現。
為保證效率,思極有容時序資料庫採取非同步方式實現多個副本之間的實時數據同步,採取的是最終一致性,而不是強一致。當一台主機重啟時,每個虛擬數據節點都會檢查自己數據的版本是否與其他虛擬節點一致,如果版本不一致,需要同步後才能進入對外服務狀態。在運行過程中,由於各種原因,數據仍然可以失去同步,這種不同步會在收到轉發的寫入請求時被發現,一旦被發現,版本低的虛擬數據節點將馬上停止對外服務,進入同步流程,同步完後,才會重新恢復對外服務。同步過程中,高版本的節點還可以正常的對外提供服務。
管理節點負責存儲Meta數據,同時根據每個數據節點狀態來負責負載均衡,因此也要保證其高可靠性。多個虛擬管理節點組成一個虛擬管理節點組,因為Meta數據可以被多個應用同時更新,因此思極有容時序資料庫採用的是Master-Slave模式實現虛擬管理節點的數據同步。寫的操作,只有Slave節點寫入成功後,Master節點才會返回成功,從而保證數據的強一致性。如果Master節點宕機,系統有機制保證其中一個Slave會立即被選舉為Master,從而保證系統寫操作的高可靠性。
由於Meta數據量並不大,Meta數據雖然需持久化存儲,但將其完全保存在內存,以保證查詢操作的高效。在應用側,為避免每次數據操作都訪問管理節點,思極有容時序資料庫Driver將必要的Meta數據都會緩存在本地,只有當需要的Meta數據不存在或失效的情況下,才會訪問管理節點,這樣大大提高系統性能。
管理節點在集群中存在,但對於應用和系統管理員而言,是完全透明的。整個系統會自動在物理節點上創建虛擬管理節點以及虛擬管理節點組。
7STable:多表聚合
各個數據採集點的時鍾是很難同步的,為保證其時序,而且為保證單一採集點的數據在存儲介質上的連續性,思極有容時序資料庫要求每個數據採集點單獨建表,這樣能極大提高數據的插入速度以及查詢速度,但是這將導致系統表的數量猛增,讓應用對表的維護以及聚合、統計操作難度加大。為降低應用的開發難度,思極有容時序資料庫引入了STable超級表的概念。
STable是表的集合,包含多張表,而且這個集合里每張表的Schema是一樣的。同一類型的採集設備可創建一個STable。與表一樣,包含Schema,但還包含標簽信息。Schema定義了表的每列數據的屬性,如溫度、壓力等,而標簽信息是靜態的,屬於MetaData,如採集設備的型號、位置等。思極有容時序資料庫擴展了標准SQL的table的定義,創建時,除指定Schema外,還可以帶關鍵詞tags來指定有哪些標簽。如:
createtablem1(tstimestamp,pressureint,rpmint)tags(modelbinary(8),colorbinary(8))
上述SQL創建了一個STablem1,帶有標簽model和標簽color。為某一個具體的採集點創建表時,可以指定其所屬的STable以及標簽的值,比如:
createtablet1usingm1tags(『apple』,『red』)
上述SQL以STablem1為模板,創建了一張表t1,這張表的Schema就是m1的Schema,但標簽model設為apple,標簽color設為red。插入數據時,仍然按照正常的方式進行插入。但查詢時,除傳統的表的查詢外,還可以基於標簽對STable進行各種聚合查詢或統計。如:
selectavg(pressue)fromm1wheremodel=』apple』interval(5m)groupbycolor
上面這個SQL語句表示將標簽model值為apple的所有採集點的記錄的每5分鍾的平均值計算出來,並按照標簽color進行分組。
對於STable的查詢操作,完全與正常的表一樣。但一個定義的STable可以包含多張表(多個數據採集點),應用可通過指定標簽的過濾條件,對一個STable下的全部或部分表進行聚合或統計操作,這樣大大簡化應用的開發。其具體流程如下圖所示:
1)、應用將一個查詢條件發往系統;
2)、Driver將查詢的過濾條件發往MetaNode(管理節點);
3)、管理節點將符合查詢過濾條件的表的列表發回Driver(包含每個表對應的數據節點的IP地址);
4)、這些返回的表可能分布在多個數據節點,Driver將計算的請求發往相應的多個數據節點;
5)、每個數據節點完成相應的聚合計算,將結果返回給Driver;
6)、Driver將多個數據節點返回的結果做最後的聚合,將其返回給應用。
8數據模型
思極有容時序資料庫採用的仍然是傳統的關系型資料庫的模型。用戶需要根據應用場景,創建一到多個庫,然後在每個庫里創建多張表,創建表時需要定義Schema。對於同一類型的採集點,為便於聚合統計操作,可以先定義超級表STable,然後再定義表。
不同的採集點往往具有不同的數據特徵,比如有的採集點數據採集頻率高,有的數據保留時長較長,有的採集數據需要3份備份,而有的數據一份備份即可,有的採集點一條記錄很大,而有的採集點的記錄僅僅16個位元組,很小。為讓各種場景下思極有容時序資料庫都能最大效率的工作,思極有容時序資料庫建議將不同數據特徵的表創建在不同的庫里。創建一個庫時,除SQL標準的選項外,應用還可以指定保留時長、數據備份的份數、cache大小、是否壓縮等多種參數。
思極有容時序資料庫對庫的數量、STable的數量以及表的數量沒有做任何限制,而且其多少不會對性能產生影響,應用按照自己的場景創建即可。
9實時流式計算
在存儲的原始數據上,思極有容時序資料庫可以做各種計算,目前支持的主要操作包括:
·Avg:以每個采樣時間范圍內的value的平均值作為結果
·Dev:以每個采樣時間范圍內的value的標准差作為結果
·Count:以每個采樣時間范圍內的點的數目作為結果
·First:以每個采樣時間范圍內的第一個value作為結果
·Last:以每個采樣時間范圍內的最後一個value作為結果
·LeastSquares:對每個采樣時間范圍內的value進行最小二乘法的擬合
·Max:以每個采樣時間范圍內的value的最大值作為結果
·Min:以每個采樣時間范圍內的value的最小值作為結果
·Percentile:每個采樣時間范圍內的value的第p百分位數作為結果。
·Sum:以每個采樣時間范圍內的value的總和作為結果
·Diff:以每兩個相鄰的value的差值作為結果
·Div:以每個value除以一個除數作為結果
·Scale:以每個value乘以一個倍數作為結果
·基於多個採集點數據的四則運算表達式
思極有容時序資料庫還可對一個或多個數據流進行實時聚合、統計等計算,並將計算出的衍生數據當做新的數據保存進思極有容時序資料庫,以便後續的操作。實時計算與聚合查詢很類似,只是後台定時進行,並自動滑動計算窗口的起始點。工作方式與其他流式計算引擎的SlidingWindow相似。
實時計算可以通過一個簡單的創建表的操作來實現。如:
createtabled1asselectavg(pressure)fromt1interval(60s)sliding(10s)
上述SQL表示將表t1里欄位pressure每10秒鍾(每次滑動的時間間隔)將過去的60秒鍾(聚合計算的時間間隔)的數據平均值計算出來並寫入表d1。計算出的衍生數據可以與其他原始數據或計算出的衍生數據進行再次計算。
10便捷的安裝、部署、維護
思極有容時序資料庫是在Linux上開發的,任何Linux系統都可以運行,而且不依賴任何第三方軟體,也不是在某個開源項目上包裝出來的產品。獲得安裝包並解壓後,只需執行安裝腳本就一切搞定,極其簡單。
安裝後,會在安裝的機器上自動創建虛擬數據節點和管理節點,開發者就可以使用了,能滿足一般性的需求。但如果數據量大,就需要將軟體安裝到多台主機。這時也只需要在每台機器配置好MasterIP,系統管理員打開思極有容時序資料庫Shell,將新添加的主機添加進系統即可。如果要撤銷一個物理節點,登錄思極有容時序資料庫Shell,將其刪除即可,極其簡單。傳統資料庫所需要的數據分區、數據遷移等等都一概不存在。
因為數據是自動同步到多個節點的,系統管理員不用擔心數據的丟失,也不用制定備份和數據恢復策略,一切全自動進行。
如果軟體需要升級,只要在思極有容時序資料庫Shell里將新版本上傳即可。管理節點將挨個把每個節點的軟體進行升級,而且整個系統的服務將不停止,服務不受任何影響。如果要更換設備,只需將其拔除,安裝上軟體後,將新設備重新插入即可。換言之,思極有容時序資料庫完全支持在線升級以及硬體的熱插拔,從而保證服務的7*24的不間斷運行。
開發人員需要做的是定義表的結構,根據具體場景,配置好各種參數,讓系統性能達到最優。系統管理員只需要關注與硬體相關的報警信息,對於經常出問題的伺服器或硬碟,進行更換而已。使用思極有容時序資料庫,整個系統的運維工作變得極為簡單,將大大降低運營成本。
11更多亮點
訂閱模式:與標準的資料庫不同,思極有容時序資料庫還提供一種訂閱模式。應用程序可以訂閱資料庫某張表的內容,一旦該表有新的記錄,應用將立即得到通知。同一個表可以被多個應用訂閱。與流行的消息中間件Kafka一樣,訂閱採取的是pull而不是push模式。Kafka的publish操作由資料庫插入操作代替。由於思極有容時序資料庫具有極高的插入速度,通過採用訂閱模式,思極有容時序資料庫本身也可以作為一個消息隊列中間件來使用。
非同步插入:為避免網路延遲帶來的性能下降,更好的提高數據插入速度,思極有容時序資料庫還提供一組API讓應用非同步插入數據。當應用調用插入API時,將立即得到反饋,等記錄成功插入後,思極有容時序資料庫將調用應用提供的回調函數通知應用。採用非同步插入,性能將大幅提高。
Nagle演算法:時序數據應用場景里,每條記錄一般都很小,很多不到20位元組,因此整個系統處理的是大量的小數據包。為了更進一步提高性能,減少網路IO次數,思極有容時序資料庫採用了類似TCP協議的Naggle演算法,客戶端將緩存插入請求,只有記錄的大小超過一定的大小或者緩存時間超過100毫秒,被緩存的插入請求才會被發往系統。對於時間要求很高的應用,該功能可以關閉。
12參數指標
·支持數據類型:tinyint,smallint,int,bigint,float,double,binary
·單記錄最大長度:4096位元組
·最大記錄條數:僅受存儲空間限制
·最大表的個數:僅受節點個數限制
·最大數據備份數:5份
·單節點插入速度:3萬條/秒(單核,16位元組每記錄,每次一條,無同步備份)
·單節點查詢速度:2000萬條/秒(單核,16位元組每記錄,全內存)
·更多指標將陸續提供
13應用場景
思極有容時序資料庫作為一個基礎性的軟體,應用范圍及其廣泛,原則上,所有使用機器、設備、感測器採集數據的地方都可以用上。一些典型場景羅列如下:
·公共安全:上網記錄、通話記錄、個體追蹤、區間篩選
·電力行業:智能電表、電網、發電設備的集中監測
·通訊行業:話費詳單、用戶行為、基站/通訊設備監測
·金融行業:交易記錄、存取記錄、ATM、POS機監測
·出行工具:火車/汽車/出租/飛機/自行車的實時監測
·交通行業:實時路況,路口流量監測,卡口數據
·石油石化:油井、運輸管線、運輸車隊的實時監測
·互聯網:伺服器/應用監測、用戶訪問日誌、廣告點擊日誌
·物流行業:車輛、集裝箱的追蹤監測
·環境監測:天氣、空氣、水文、地質環境等監測
·物聯網:電梯、鍋爐、機械、水表、氣表等各種聯網設備
·軍工行業:各種軍事裝備的數據採集、存儲
·製造業:生產過程管控,流程數據、供應鏈數據採集與分析
網頁鏈接技術白皮書網頁鏈接請單擊查看!
⑶ 400MB=多少GB
硬碟概述
硬碟(港台稱之為硬碟)是電腦主要的存儲媒介之一,由一個或者多個鋁制或者玻璃制的碟片組成。這些碟片外覆蓋有鐵磁性材料。絕大多數硬碟都是固定硬碟,被永久性地密封固定在硬碟驅動器中。
[編輯本段]硬碟發展
從第一塊硬碟RAMAC的問世到現在單碟容量高達250GB多的硬碟,硬碟也經歷了幾代的發展,以下是其發展歷史。
1.1956年9月,IBM的一個工程小組向世界展示了第一台磁碟存儲系統IBM 350 RAMAC(Random Access Method of Accounting and Control),其磁頭可以直接移動到碟片上的任何一塊存儲區域,從而成功地實現了隨機存儲,這套系統的總容量只有5MB,共使用了50個直徑為24英寸的磁碟,這些碟片表面塗有一層磁性物質,它們被疊起來固定在一起,繞著同一個軸旋轉。此款RAMAC當時主要應用於飛機預約、自動銀行、醫學診斷及太空領域。
2.1968年IBM公司首次提出「溫徹斯特/Winchester」技術,探討對硬碟技術做重大改造的可能性。「溫徹斯特」技術的精隋是:「密封、固定並高速旋轉的鍍磁碟片,磁頭沿碟片徑向移動,磁頭懸浮在高速轉動的碟片上方,而不與碟片直接接觸」,這也是現代絕大多數硬碟的原型。
3.1973年IBM公司製造出第一台採用「溫徹期特」技術的硬碟,從此硬碟技術的發展有了正確的結構基礎。它的容量為60MB,轉速略低於3000RPM,採用4張14英寸碟片,存儲密度為每平方英寸1.7MB。
4.1979年,IBM再次發明了薄膜磁頭,為進一步減小硬碟體積、增大容量、提高讀寫速度提供了可能。
5.80年代末期IBM發明的MR(Magneto Resistive)磁阻是對硬碟技術發展的又一項重大貢獻,這種磁頭在讀取數據時對信號變化相當敏感,使得碟片的存儲密度比以往每英寸20MB提高了數十倍。
6.1991年IBM生產的3.5英寸的硬碟使用了MR磁頭,使硬碟的容量首次達到了1GB,從此硬碟容量開始進入了GB數量級。
7.1999年9月7日,Maxtor宣布了首塊單碟容量高達10.2GB的ATA硬碟,從而把硬碟的容量引入了一個新的里程碑。
8.2000年2月23日,希捷發布了轉速高達15,000RPM的Cheetah X15系列硬碟,其平均尋道時間僅3.9ms,它也是到目前為止轉速最高的硬碟;其性能相當於閱讀一整部Shakespeare只花.15秒。此系列產品的內部數據傳輸率高達48MB/s,數據緩存為4~16MB,支持Ultra160/m SCSI及Fibre Channel(光纖通道) ,這將硬碟外部數據傳輸率提高到了160MB~200MB/s。總得來說,希捷的此款("捷豹")Cheetah X15系列將硬碟的性能提升到了一個全新的高度。
9.2000年3月16日,硬碟領域又有新突破,第一款「玻璃硬碟」問世,這就是IBM推出的Deskstar 75GXP及Deskstar 40GV,此兩款硬碟均使用玻璃取代傳統的鋁作為碟片材料,這能為硬碟帶來更大的平滑性及更高的堅固性。另外玻璃材料在高轉速時具有更高的穩定性。此外Deskstar 75GXP系列產品的最高容量達75GB,而Deskstar 40GV的數據存儲密度則高達14.3 十億數據位/每平方英寸,這再次刷新數據存儲密度世界記錄。
10.以下是近年來關於硬碟價格的趣味數字
1995年 200MB~400MB 大於4000元/GB
1996年 1.2GB~2.1GB 1500元~2000/GB
1998年 1.2GB~2.1GB 200元~250元/GB
2000年 4.3GB~6.4GB 40元/GB
2002年 10GB~20GB 20元/GB
2004年 40GB~80GB 6.9元/GB
2005年 80GB~160GB 4.5元/GB
2006年 80GB~250GB 3.8元/GB
2008年 160GB~1TB 0.8元/GB
未來的發展趨勢
希捷存儲新技術:2009年出2500G硬碟
硬碟記錄密度越大就可以實現越大的磁碟容量,希捷最近發布的160GB 5400rpm 2.5英寸
垂直紀錄筆記本硬碟的紀錄密度是每平方英寸135Gbits,東芝最新展示的2.5英寸硬碟每平
方英寸紀錄密度是188Gbits,而在加州矽谷的IDEMA DiSKON展會上,希捷展示了1種磁記錄
設備,每平方英寸可以紀錄421Gbits數據!
希捷CEO Bill Watkins表示,在紀錄密度上的突破將開啟數字革命,硬碟在各種存儲需
求上可以持續保持領先優勢。根據希捷的新聞稿,希捷宣稱採用421Gbits/平方英寸密度制
造的1.8英寸硬碟可以容納275GB數據,2.5英寸硬碟可以容納500GB數據,而全尺寸的3.5英
寸硬碟則可以容納2.5TB數據,預計希捷將在2009年拿出全尺寸3.5英寸2.5TB容量的硬碟。
日立2010年推5000G硬碟 等同半個人腦存儲量
據國外媒體報道,日立日前宣布,將於2010年推出5TB(5000G)硬碟,從而向新興的固態
硬碟發起挑戰。
如今,固態硬碟逐漸蠶食傳統硬碟業務, 尤其是在筆記本電腦市場。但是,這並不意
味著傳統硬碟將從此退出歷史舞台。
硬碟專家日立的做法是,盡可能提升硬碟的存儲空間。據悉,日立計劃於2010年推出5TB
3.5英寸商用硬碟。該硬碟採用了電流正交平面垂直巨磁阻(CPP-GMR)技術,使每平方英寸的
存儲密度達到1TB。
至於5TB的硬碟能夠存儲多少內容, 日立高管Yoshihiro Shiroishi稱:「到2010年,2
塊硬碟的存儲量就與人類大腦的存儲量相當。
[編輯本段]硬碟介面
IDE
IDE的英文全稱為「Integrated Drive Electronics」,即「電子集成驅動器」,俗稱PATA並口。它的本意是指把「硬碟控制器」與「盤體」集成在一起的硬碟驅動器。把盤體與控制器集成在一起的做法減少了硬碟介面的電纜數目與長度,數據傳輸的可靠性得到了增強,硬碟製造起來變得更容易,因為硬碟生產廠商不需要再擔心自己的硬碟是否與其它廠商生產的控制器兼容。對用戶而言,硬碟安裝起來也更為方便。IDE這一介面技術從誕生至今就一直在不斷發展,性能也不斷的提高,其擁有的價格低廉、兼容性強的特點,為其造就了其它類型硬碟無法替代的地位。
I
IDE代表著硬碟的一種類型,但在實際的應用中,人們也習慣用IDE來稱呼最早出現IDE類型硬碟ATA-1,這種類型的介面隨著介面技術的發展已經被淘汰了,而其後發展分支出更多類型的硬碟介面,比如ATA、Ultra ATA、DMA、Ultra DMA等介面都屬於IDE硬碟。
SATA
使用SATA(Serial ATA)口的硬碟又叫串口硬碟,是未來PC機硬碟的趨勢。2001年,由Intel、APT、Dell、IBM、希捷、邁拓這幾大廠商組成的Serial ATA委員會正式確立了Serial ATA 1.0規范,2002年,雖然串列ATA的相關設備還未正式上市,但Serial ATA委員會已搶先確立了Serial ATA 2.0規范。Serial ATA採用串列連接方式,串列ATA匯流排使用嵌入式時鍾信號,具備了更強的糾錯能力,與以往相比其最大的區別在於能對傳輸指令(不僅僅是數據)進行檢查,如果發現錯誤會自動矯正,這在很大程度上提高了數據傳輸的可靠性。串列介面還具有結構簡單、支持熱插拔的優點。
支持Serial-ATA技術的標志
主板上的Serial-ATA介面
串口硬碟是一種完全不同於並行ATA的新型硬碟介面類型,由於採用串列方式傳輸數據而知名。相對於並行ATA來說,就具有非常多的優勢。首先,Serial ATA以連續串列的方式傳送數據,一次只會傳送1位數據。這樣能減少SATA介面的針腳數目,使連接電纜數目變少,效率也會更高。實際上,Serial ATA 僅用四支針腳就能完成所有的工作,分別用於連接電纜、連接地線、發送數據和接收數據,同時這樣的架構還能降低系統能耗和減小系統復雜性。其次,Serial ATA的起點更高、發展潛力更大,Serial ATA 1.0定義的數據傳輸率可達150MB/s,這比目前最新的並行ATA(即ATA/133)所能達到133MB/s的最高數據傳輸率還高,而在Serial ATA 2.0的數據傳輸率將達到300MB/s,最終SATA將實現600MB/s的最高數據傳輸率。
SATA2
希捷在SATA的基礎上加入NCQ本地命令陣列技術,並提高了磁碟速率。
SCSI 希捷在伺服器上使用的介面,可以熱插拔
SAS(Serial ATA SCSI)希捷在高端伺服器上的介面。
[編輯本段]硬碟品牌
希捷(Seagate)
在收購邁拓之後,是目前市場佔有率最大的品牌。
內置硬碟的產品線分為面向桌面的7200轉/分的酷魚系列和收購的邁拓品牌的DiamondMax系列;面向企業近線存儲的7200RPM的ES系列;面向企業的Savvio系列和Cheetah系列;面向數字影像監控的SV系列;面向筆記本的Momentus系列,等等。
西部數據(Westdigital)
市場佔有率僅次於希捷。以桌面產品為主。其桌面產品分為側重高IO性能的Black系列(俗稱「黑盤」),普通的Blue系列(俗稱藍盤),以及側重低功耗、低噪音的環保Green系列(俗稱綠盤)。
西部數據同時也提供面向企業近線存儲的Raid Edition系列,簡稱RE系列。同時也有SATA介面的1000RPM的猛禽系列和迅猛龍(VelociRaptor)系列。
西部數據的筆記本硬碟為Scorpio系列。
日立(Hitachi)
第三大硬碟廠商。主要由收購的原IBM硬碟部門發展而來。
產品線分面向企業高性能的UltraStar系列;面向桌面和近線存儲的DeskStar系列;面向筆記本的TravelStar系列;
此外,日立還有面向數字影像監控的CinemaStar系列和面向惡劣工作環境的Enrastar系列。
三星(Samsung)
韓國硬碟廠商。產品型號多以Spinpoint開頭。
此外,主要硬碟廠商還有側重筆記本市場的東芝,以及同時側重筆記本市場和企業級高性能市場的富士通這兩個日本廠商。
[編輯本段]硬碟的物理結構
1、磁頭
硬碟內部結構磁頭是硬碟中最昂貴的部件,也是硬碟技術中最重要和最關鍵的一環。傳統的磁頭是讀寫合一的電磁感應式磁頭,但是,硬碟的讀、寫卻是兩種截然不同的操作,為此,這種二合一磁頭在設計時必須要同時兼顧到讀/寫兩種特性,從而造成了硬碟設計上的局限。而MR磁頭(Magnetoresistive heads),即磁阻磁頭,採用的是分離式的磁頭結構:寫入磁頭仍採用傳統的磁感應磁頭(MR磁頭不能進行寫操作),讀取磁頭則採用新型的MR磁頭,即所謂的感應寫、磁阻讀。這樣,在設計時就可以針對兩者的不同特性分別進行優化,以得到最好的讀/寫性能。另外,MR磁頭是通過阻值變化而不是電流變化去感應信號幅度,因而對信號變化相當敏感,讀取數據的准確性也相應提高。而且由於讀取的信號幅度與磁軌寬度無關,故磁軌可以做得很窄,從而提高了碟片密度,達到200MB/英寸2,而使用傳統的磁頭只能達到20MB/英寸2,這也是MR磁頭被廣泛應用的最主要原因。目前,MR磁頭已得到廣泛應用,而採用多層結構和磁阻效應更好的材料製作的GMR磁頭(Giant Magnetoresistive heads)也逐漸普及。
2、磁軌
當磁碟旋轉時,磁頭若保持在一個位置上,則每個磁頭都會在磁碟表面劃出一個圓形軌跡,這些圓形軌跡就叫做磁軌。這些磁軌用肉眼是根本看不到的,因為它們僅是盤面上以特殊方式磁化了的一些磁化區,磁碟上的信息便是沿著這樣的軌道存放的。相鄰磁軌之間並不是緊挨著的,這是因為磁化單元相隔太近時磁性會相互產生影響,同時也為磁頭的讀寫帶來困難。一張1.44MB的3.5英寸軟盤,一面有80個磁軌,而硬碟上的磁軌密度則遠遠大於此值,通常一面有成千上萬個磁軌。
3、扇區
磁碟上的每個磁軌被等分為若干個弧段,這些弧段便是磁碟的扇區,每個扇區可以存放512個位元組的信息,磁碟驅動器在向磁碟讀取和寫入數據時,要以扇區為單位。1.44MB3.5英寸的軟盤,每個磁軌分為18個扇區。
4、柱面
硬碟通常由重疊的一組碟片構成,每個盤面都被劃分為數目相等的磁軌,並從外緣的「0」開始編號,具有相同編號的磁軌形成一個圓柱,稱之為磁碟的柱面。磁碟的柱面數與一個盤面上的磁軌數是相等的。由於每個盤面都有自己的磁頭,因此,盤面數等於總的磁頭數。所謂硬碟的CHS,即Cylinder(柱面)、Head(磁頭)、Sector(扇區),只要知道了硬碟的CHS的數目,即可確定硬碟的容量,硬碟的容量=柱面數*磁頭數*扇區數*512B。
[編輯本段]硬碟的邏輯結構
1. 硬碟參數釋疑
到目前為止, 人們常說的硬碟參數還是古老的 CHS(Cylinder/Head/Sector)參數。那麼為什麼要使用這些參數,它們的意義是什麼?它們的取值范圍是什麼?
很久以前, 硬碟的容量還非常小的時候,人們採用與軟盤類似的結構生產硬碟。也就是硬碟碟片的每一條磁軌都具有相同的扇區數。由此產生了所謂的3D參數 (Disk Geometry). 既磁頭數(Heads),柱面數(Cylinders),扇區數(Sectors),以及相應的定址方式。
其中:
磁頭數(Heads)表示硬碟總共有幾個磁頭,也就是有幾面碟片, 最大為 255 (用 8 個二進制位存儲);
柱面數(Cylinders) 表示硬碟每一面碟片上有幾條磁軌,最大為 1023(用 10 個二進制位存儲);
扇區數(Sectors) 表示每一條磁軌上有幾個扇區, 最大為 63(用 6個二進制位存儲);
每個扇區一般是 512個位元組, 理論上講這不是必須的,但好像沒有取別的值的。
所以磁碟最大容量為:
255 * 1023 * 63 * 512 / 1048576 = 7.837 GB ( 1M =1048576 Bytes )或硬碟廠商常用的單位:
255 * 1023 * 63 * 512 / 1000000 = 8.414 GB ( 1M =1000000 Bytes )
在 CHS 定址方式中,磁頭,柱面,扇區的取值范圍分別為 0到 Heads - 1。0 到 Cylinders - 1。 1 到 Sectors (注意是從 1 開始)。
2. 基本 Int 13H 調用簡介
BIOS Int 13H 調用是 BIOS提供的磁碟基本輸入輸出中斷調用,它可以完成磁碟(包括硬碟和軟盤)的復位,讀寫,校驗,定位,診,格式化等功能。它使用的就是 CHS 定址方式, 因此最大識能訪問 8 GB 左右的硬碟 (本文中如不作特殊說明,均以 1M = 1048576 位元組為單位)。
3. 現代硬碟結構簡介
在老式硬碟中,由於每個磁軌的扇區數相等,所以外道的記錄密度要遠低於內道, 因此會浪費很多磁碟空間 (與軟盤一樣)。為了解決這一問題,進一步提高硬碟容量,人們改用等密度結構生產硬碟。也就是說,外圈磁軌的扇區比內圈磁軌多,採用這種結構後,硬碟不再具有實際的3D參數,定址方式也改為線性定址,即以扇區為單位進行定址。
為了與使用3D定址的老軟體兼容 (如使用BIOSInt13H介面的軟體), 在硬碟控制器內部安裝了一個地址翻譯器,由它負責將老式3D參數翻譯成新的線性參數。這也是為什麼現在硬碟的3D參數可以有多種選擇的原因(不同的工作模式,對應不同的3D參數, 如 LBA,LARGE,NORMAL)。
4. 擴展 Int 13H 簡介
雖然現代硬碟都已經採用了線性定址,但是由於基本 Int13H 的制約,使用 BIOS Int 13H 介面的程序, 如 DOS 等還只能訪問 8 G以內的硬碟空間。為了打破這一限制, Microsoft 等幾家公司制定了擴展 Int 13H 標准(Extended Int13H),採用線性定址方式存取硬碟, 所以突破了 8 G的限制,而且還加入了對可拆卸介質 (如活動硬碟) 的支持。
⑷ 本地緩存/cookie、sessionStorage、localStorage的區別
1、cookie數據始終在同源的http請求中攜帶(即使不需要),即cookie在瀏覽器和伺服器間來回傳遞,而sessionStorage和localStorage不會自動把數據發送給伺服器,僅在本地保存。
2、存儲大小限制也不同,cookie數據不能超過4K,同時因為每次http請求都會攜帶cookie、所以cookie 只適合保存很小的數據。sessionStorage和localStorage雖然也有存儲大小的限制,但比 cookie大得 多,可以達到5M或更大
3、數據有效期不同,sessionStorage僅僅在當前瀏覽器窗口關閉之前有效;localStorage始終有效,窗口或 者瀏覽器關閉之後也一直保存,因此作用持久數據;cookie,只在設置cookie過期時間之前有效,即使 窗口關閉或者瀏覽器關閉。
4、作用域不同:sessionStorage在不同的瀏覽器窗口中不共享,即使是同一個頁面,localStorage在所有的同源窗
1.cookie :具有極高的擴展性和可用性
(1).可以控制保存在cookie中的session對象的大小。
(2).通過加密和安全傳輸技術,減少cookie被破解的可能性
(3).可以控制cookie的生命期,給cookie一個時效性 。
cookie的缺點:
(1).cookie的長度和數量的限制。最多隻能有20條cookie,每個cookie長度不能超過4KB。否則會被截掉至4KB。
(2).安全性問題。如果cookie被人攔掉了,就可以獲取到所有session信息
2.localStorage (永久存儲)
用於持久化的本地存儲,除非主動刪除數據,否則數據是永遠也不過期的。
3.sessionStorage (臨時存儲,瀏覽器關閉就消失)
用於本地存儲一個會話(session)中的數據,這個數據只有在同一個會話中的頁面才能訪問並且當會話結束後數據也隨之銷毀。因此sessionstorage不是一種持久化的本地存儲,僅僅是會話級別的存儲。
⑸ mysql VARCHAR的最大長度到底是多少
以前一直都認為有兩個位元組來記錄長度(長度小也可以用一個位元組記錄),所以這個問題當時覺得就挺無聊的不過後來群里有人給了解釋,突然才發現原來事情不是這么簡單MYSQL COMPACT格式,每條記錄有一個位元組來表示NULL欄位分布,如果表中有欄位允許為空,則最大隻能定到65532,如果沒有欄位允許為空,則那個位元組可以節省,最大可以定義到65533,不知道是不是這個原因於是上網看了些資料,又在本地做了些實驗,原來vachar的最大長度真的是不定的(根據是否有非空欄位來決定)在本地做了下實驗,innodb+latin的環境
復制代碼 代碼如下:
-- success
drop table if exists test;
create table test(name varchar(65533) not null)engine=innodb DEFAULT CHARSET=latin1-- too large
drop table if exists test;
create table test(name varchar(65533))engine=innodb DEFAULT CHARSET=latin1對於第二種情況,允許空欄位的時候是不能加到65533的長度的,最大隻能到65532,到底應該是引文的那種說法。
網上也有人做了類似的實驗,參考http://stackoverflow.com/questions/8295131/best-practise-for-sql-varchar-column-length復制代碼 代碼如下:
name varchar(100) not null will be 1 byte (length) + up to 100 chars (latin1)name varchar(500) not null will be 2 bytes (length) + up to 500 chars (latin1)name varchar(65533) not null will be 2 bytes (length) + up to 65533 chars (latin1)name varchar(65532) will be 2 bytes (length) + up to 65532 chars (latin1) + 1 null byte總結一下,原來mysql的vachar欄位的類型雖然最大長度是65535,但是並不是能存這么多數據,最大可以到65533(不允許非空欄位的時候),當允許非空欄位的時候只能到65532。
以下是其它網友的補充說明:
這不是一個固定的數字。本文簡要說明一下限制規則。
strlen 計算字元串長度,一個中文當2字元
mb_strlen根據它的字元編碼模式,統計字元quotcount計算數組中的元素數目或對象中的屬性個數復制代碼 代碼如下:
<?php
header('Content-Type:text/html;charset=UTF-8');$string1="謝春業";//定義中文字元變數
$string2="xcy";//定義英文字元變數
//直接輸出看看他們的長度
echo strlen($string1);
echo "</br>";
echo strlen($string2);
echo "</br>";
//用 php 多位元組擴展函數 mb_strlen試試看
echo mb_strlen($string1,'utf8');
echo "</br>";
echo mb_strlen($string2,'utf8');
echo "</br>";
?>
輸出結果是:
9
3
3
3
1、限制規則
欄位的限制在欄位定義的時候有以下規則:
a) 存儲限制
varchar 欄位是將實際內容單獨存儲在聚簇索引之外,內容開頭用1到2個位元組表示實際長度(長度超過255時需要2個位元組),因此最大長度不能超過65535。
b) 編碼長度限制
字元類型若為gbk,每個字元最多佔2個位元組,最大長度不能超過32766;字元類型若為utf8,每個字元最多佔3個位元組,最大長度不能超過21845。
對於英文比較多的論壇 ,使用GBK則每個字元佔用2個位元組,而使用UTF-8英文卻只佔一個位元組。
若定義的時候超過上述限制,則varchar欄位會被強行轉為text類型,並產生warning。
c) 行長度限制
導致實際應用中varchar長度限制的是一個行定義的長度。 MySQL要求一個行的定義長度不能超過65535。若定義的表長度超過這個值,則提示ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs。
2、計算例子
舉兩個例說明一下實際長度的計算。
a) 若一個表只有一個varchar類型,如定義為
create table t4(c varchar(N)) charset=gbk;則此處N的最大值為(65535-1-2)/2= 32766。
減1的原因是實際行存儲從第二個位元組開始';
減2的原因是varchar頭部的2個位元組表示長度;
除2的原因是字元編碼是gbk。
b) 若一個表定義為
create table t4(c int, c2 char(30), c3 varchar(N)) charset=utf8;則此處N的最大值為 (65535-1-2-4-30*3)/3=21812減1和減2與上例相同;
減4的原因是int類型的c佔4個位元組;
減30*3的原因是char(30)佔用90個位元組,編碼是utf8。
如果被varchar超過上述的b規則,被強轉成text類型,則每個欄位佔用定義長度為11位元組,當然這已經不是「varchar」了。
⑹ window.sessionStorage、window.localStorage與cookie總結
前言:最近項目中用到了本地存儲和cookie,雖然平時也經常提到,但是在用的時候還是有些模糊,這里做一下總結,以便加深記憶。
Web Storage是為了在本地「存儲」數據而生,均不會被發送到伺服器端。包括了兩種存儲方式:sessionStorage和localStorage,這兩個對象在支持的瀏覽器中都是以 window 對象屬性的形式存在的。
相同點:
1、僅在客戶端中保存,不參與和伺服器的通信
2、都有同源策略限制,不同瀏覽器無法共享localStorage或sessionStorage中的信息
3、存儲大小均為5M左右
不同點:
1、生命周期
localStoage:是一種永久性存儲,除非手動清除。
sessionStorage:會話存儲,存儲在 sessionStorage 裡面的數據在頁面會話結束時會被清除,也就是一旦窗口或者標簽頁被關閉,那麼所有通過 sessionStorage 存儲的數據也會被刪。頁面會話在瀏覽器打開期間一直保持,並且重新載入或恢復頁面仍會保持原來的頁面會話。
2.作用域
localStorage: 在同一個瀏覽器內,同源文檔(頁面屬於相同域名和埠)之間,即使是不同頁面可以共享 localStorage 數據,可以互相讀取、覆蓋。
sessionStorage: 與 localStorage 一樣需要同一瀏覽器同源文檔這一條件。不僅如此,sessionStorage 的作用域還被限定在了窗口中,也就是說,只有同一瀏覽器、同一窗口的同源文檔才能共享數據。
語法:
sessionStorage或localStorage兩種存儲方式幾乎都有相同的方法和屬性。
1.localStorage.length 和 sessionStorage.length : 返回本地存儲列表長度;需要說明的是可以通過localStorage對象獲取對應的存儲數據,比如已經存儲了一個鍵為name的數據,使用localStorage.name獲取存儲數據;下面的方法都是基於localStorage 對象 或 sessionStorage 對象;
2.getItem( keyName )方法:通過鍵獲取存儲的數據;
3.setItem( keyName,value )方法:存儲數據,keyName為存儲數據的鍵,value實際要存儲的數據(可以把keyName理解成 給要存儲的數據起的名字,便於管理);
4.removeItem( keyName )方法: 將指定鍵名的數據刪除;
5.clear() 方法:清空所有的存儲數據;
6.key() 方法: 獲取鍵值,需要注意的是並不能返回指定布爾值需要作進一步處理
基本概念
1、cookie 確實非常小,它的大小限制為4KB左右。
2、要表示唯一的一個cookie值需要:name、domain、path
3、一般由伺服器生成,可設置失效時間。如果在瀏覽器端生成Cookie,默認是關閉瀏覽器後失效。
4、每次都會攜帶在HTTP頭中,如果使用cookie保存過多數據會帶來性能問題。
cookie的使用
document.cookie,通過該方法可以讀取、修改、刪除cookie。
⑺ 瀏覽器支持的Localstorage最大支持多大,數據是儲存在哪裡
localStorage 存儲在瀏覽器中。
localStorage中一般瀏覽器支持的是5M大小,在不同的瀏覽器中localStorage會有所不同。
localStorage:
用於長久保存整個網站的數據,保存的數據沒有過期時間,直到手動去刪除。
localStorage 屬性是只讀的。
只想將數據保存在當前會話中,可以使用 sessionStorage 屬性, 改數據對象臨時保存同一窗口(或標簽頁)的數據,在關閉窗口或標簽頁之後將會刪除這些數據。
(7)本地存儲最大長度擴展閱讀:
localStorage主要有以下幾種方法:
1、localStorage.setItem("key", "value");
存儲名字為key的一個值value,如果key存在,就更新value。
例:
localStorage.setItem("name","john"); //設置name為john
localStorage.setItem("name","john1"); //覆蓋之前的值,現在name所對應的值是john1
2、var lastname = localStorage.getItem("key");
獲取名稱為key的值,如果key不存在則返回null。
3、localStorage.removeItem("key");
刪除名稱為「key」的信息,這個key所對應的value也會全部被刪除。
4、localStorage.clear():
清空localStorage中所有信息。
⑻ 騰訊會議能錄多久制
騰訊會議客戶端分為免費版和專業版,升級為專業版後會議時長不受限制,會議人數上限可擴容,不過2020年1月24日起至疫情結束,騰訊會議面向所有用戶免費開放300人不限時會議功能,可打開客戶端直接使用。
⑼ HTML5中sessionStorage最大容量是多少
目前最大的應該是支持5M的最大容量。
⑽ 數據分析項目包含哪些流程
1、數據採集
了解數據採集的意義在於真正了解數據的原始面貌,包括數據產生的時間、條件、格式、內容、長度、限制條件等。
2、數據存儲
無論數據存儲於雲端還是本地,數據的存儲不只是我們看到的資料庫那麼簡單。
3、數據提取
數據提取是將數據取出的過程,數據提取的核心環節是從哪取、何時取、如何取。
4、數據挖掘
數據挖掘是面對海量數據時進行數據價值提煉的關鍵。
5、數據分析
數據分析相對於數據挖掘更多的是偏向業務應用和解讀,當數據挖掘演算法得出結論後,如何解釋演算法在結果、可信度、顯著程度等方面對於業務的實際意義,如何將挖掘結果反饋到業務操作過程中便於業務理解和實施是關鍵。
6、數據展現
數據展現即數據可視化的部分,數據分析師如何把數據觀點展示給業務的過程。數據展現除遵循各公司統一規范原則外,具體形式還要根據實際需求和場景而定。
7、數據應用
數據應用是數據具有落地價值的直接體現,這個過程需要數據分析師具備數據溝通能力、業務推動能力和項目工作能力。