P6 關系數據庫在這些越來越多的應用場景下顯得不那么合適了,為了解決這類問題的非關系數據庫應運而生,現在這兩年,各種各樣非關系數據庫,特別是鍵值數據庫(Key-Value Store DB)風起云涌,多得讓人眼花繚亂。前不久國外剛剛舉辦了NoSQL Conference,各路NoSQL數據庫紛紛亮相,加上未亮相但是名聲在外的,起碼有超過10個開源的NoSQLDB。
P31 Redis簡介Redis是什么?Redis是一個開源的使用ANSIC語言編寫,支持網絡,基于內存亦可持久化,分布式的key-value數據庫,并提供多種語言的API。從2010年3月15日起,Redis的開發工作由VMware主持。特點是高性能,持久存儲,適應高并發的應用場景。目前已被許多大型機構采用,比如:Github、新浪微博等等。Redis特性速度快Redis使用標準C編寫實現,而且將所有數據加載到內存中,所以速度非常快。官方提供的數據表明,在一個普通的Linux機器上,Redis讀寫速度分別達到81000/s和110000/s。持久化通常,Redis將數據存儲于內存中,或被配置為使用虛擬內存。通過兩種方式可以實現數據持久化:使用截圖的方式,將內存中的數據不斷寫入磁盤;或使用類似MySQL的日志方式,記錄每次更新的日志。前者性能較高,但是可能會引起一定程度的數據丟失;后者相反。數據結構可以將Redis看做“數據結構服務器”。
P2 ?mongodb與mysql命令對比傳統的關系數據庫一般由數據庫(database)、表(table)、記錄(record)三個層次概念組成,MongoDB是由數據庫(database)、集合(collection)、文檔對象(document)三個層次組成。MongoDB對于關系型數據庫里的表,但是集合中沒有列、行和關系概念,這體現了模式自由的特點。?
P14 比較全面的介紹mongodb數據的優化;MongoDB高可用架構mongoDB高可用mongoDB支持在多個機器中通過異步復制達到故障轉移和實現冗余。多機器中同一時刻只有一臺是用于寫操作。正是由于這個情況,為mongoDB提供了數據一致性的保障。擔當主角色的機器能把讀操作分發給slaves/secondaries。mongodb高可用可用分兩種
P54 本書寫了一些目前的NoSql的一些主要技術,算法和思想。同時列舉了大量的現有的數據庫實例。讀完全篇,相信讀者會對NoSQL數據庫了解個大概。 另外我還準備開發一個開源內存數據庫galaxydb.本書也是為這個數據庫提供一些架構資料。 CAP,BASE和最終一致性是NoSQL數據庫存在的三大基石。而五分鐘法則是內存數據存儲了理論依據。這個是一切的源頭。
P11 Spanner是谷歌公司研發的、可擴展的、多版本、全球分布式、同步復制數據庫。它是第一個把數據分布在全球范圍內的系統,并且支持外部一致性的分布式事務。本文描述了Spanner的架構、特性、不同設計決策的背后機理和一個新的時間API,這個API可以暴露時鐘的不確定性。這個API及其實現,對于支持外部一致性和許多強大特性而言,是非常重要的,這些強大特性包括:非阻塞的讀、不采用鎖機制的只讀事務、原子模式變更。
P49 提綱概述和特點數據模型概念,排序,twitter,rrdRing寫操作讀操作API性能測試和比較配置說明概述非關系的數據庫分布式的Key-Value存儲系統一堆數據庫節點共同構成的一個分布式網絡服務對Cassandra的一個寫操作,會被復制到其他節點上去對Cassandra的讀操作,也會被路由到某個節點上面去讀取特點 模式靈活:使用Cassandra,像文檔存儲,你不必提前解決記錄中的字段。你可以在系統運行時隨意的添加或移除字段。這是一個驚人的效率提升,特別是在大型部署上。 真正的可擴展性:Cassandra是純粹意義上的水平擴展。為給集群添加更多容量,可以指向另一臺電腦。你不必重啟任何進程,改變應用查詢,或手動遷移任何數據。
P34 內存數據庫概述; 內存數據庫應用; ; 內存數據庫功能 ; 比較傳統數據庫 ; 內存數據庫產品。
P40 全虛擬化是指虛擬機模擬了完整的底層硬件,包括處理器、物理內存、時鐘、外設等,使得為原始硬件設計的操作系統或其它系統軟件完全不做任何修改就可以在虛擬機中運行。<br> 也稱為超虛擬化,這是一種修改 Guest OS 部分訪問特權狀態的代碼以便直接與 VMM 交互的技術。在超虛擬化虛擬機中,部分硬件接口以軟件的形式提供給客戶機操作系統,這可以通過 Hypercall(VMM 提供給 Guest OS 的直接調用,與系統調用類似)的方式來提供。xen KVM支持全虛擬化和半虛擬化. 通過給當前內核打kvm-paravirt-patches補丁來支持半虛擬化. <br> 在傳統操作系統中,所有用戶的進程本質上是在同一個操作系統的實例中運行,因此內核或應用程序的缺陷可能影響到其它進程。操作系統級虛擬化是一種在服務器操作系統中使用的輕量級的虛擬化技術,內核通過創建多個虛擬的操作系統實例(內核和庫)來隔離不同的進程,不同實例中的進程完全不了解對方的存在。比較著名的有 Solaris Container [2],FreeBSD Jail 和 OpenVZ 等。 java虛擬機
P3 測試方案:用js腳本創建向一個collection里插入一百萬個文檔,測量mongo占用內存,硬盤數據文件大小(優化數據庫設計),插入時間,在一百萬條基礎上做find操作。內存:啟動mongodb后,內存: 插入100w條數據過程: 未導入數據: 導入數據: 做查詢:導入數據: 創建100w個文檔,時間2分26秒左右(測試5次)Find查詢:未建索引情況下,測試5次,擊中索引,基本只需要0ms(測試不到),平均3.4秒。
P58 關于MongoDB的好處,優點之類的這里就不說了,唯一要講的一點就是MongoDB中有三元素:數據庫,集合,文檔,其中“集合”就是對應關系數據庫中的“表”,“文檔”對應“行”。
P14 mongoDB 高可用 mongoDB支持在多個機器中通過異步復制達到故障轉移和實現冗余。多機器中 同一時刻只有一臺是用于寫操作。正是由于這個情況,為mongoDB提供了數據 一致性的保障。擔當主角色的機器能把讀操作分發給slaves/secondaries。
P14 mongoDB支持在多個機器中通過異步復制達到故障轉移和實現冗余。多機器中 同一時刻只有一臺是用于寫操作。正是由于這個情況,為mongoDB提供了數據 一致性的保障。擔當主角色的機器能把讀操作分發給slaves/secondaries。采用Replica Sets的集群方案,這個方案與Master-Slave Replication的集群方案類 似,數據服務器也有主從的區別。優點是主數據服務器或從數據服務器掛掉后,會自動 切換主數據庫,不用人工干預,穩定性比Master-Slave Replication。缺點是需要客戶 端的驅動支持,因為客戶端在與主服務器連接失敗后,會向集群的其他服務器發一條特 殊的指令詢問,誰是新的主數據服務器。集群的服務器在不做分區的前提下,分成三 種,主數據服務器,從數據服務器,選舉服務器(只做投票不存儲數據),若做數據分 區還有配置服務器。
P32 Redis主體結構就是實現一個hashtableKey的類型為sdsValue的類型為redisobjectRedis在value上的不同設計之處Redis的應用場景對復雜數據結構的良好支持像SNS中的關系,以及一些計數類的需求Redis的常用操作
P MongoDB C# Driver API Documentation
P8 長期以來我就對分布式系統原理與實踐非常感興趣,對于Mongodb我一直很好奇,最近終于有時間能動手實驗一把! 我在一臺Windows機器下搭建了一個 Replica Sets + Sharding 測試集群環境,以此作為我后續對于Mongodb更進一步學習的實驗平臺。
P32 目前市面上的搜索引擎項目但我不講它們!Background做了者也(zheye.org)這個網站;需要實現類似Quora那樣高效的搜索功能;采用RubyonRails開發,MongoDB數據庫;中文的搜索,需要分詞;需要逐字匹配搜索;能夠在鍵盤輸入的瞬間響應搜索結果;MongoDB支持;不需要太復雜的查詢,單個字段作為搜索條件;逐字匹配功能;分詞、模糊匹配;實時更新;排序;此搜索功能的需求為什么不用Sphinx或其他的開源項目查詢速度無法滿足按鍵瞬間需要響應的需求對于MongoDB的,暫無現成的組件可用需要逐字匹配搜索實時更新索引起初的實現機制
P27 Strings相關命令 SET?key?value 設置key、value GET?key 獲得一個key的值 GETSET?key?value 設置一個key的值,并獲取設置前的值 INCR key 對key執行原子加1操作 INCRBY key increment 對key執行原子加指定值操作 DECR key 對key執行原子減1操作 DECRBY key decrement 對key執行原子減指定值操作 MSET?key value [key value ...] 一次設置多個key-value鍵值對 MGET?key [key ...] 一次獲取多個key的值 SETEX key seconds value 設置key-value的同時設置過期時間 SETNX key value 設置key-value僅當key不存在時成功 STRLEN key 返回key對應值的長度,只有值為String類型時有效
P45 特點 高性能、易部署、易使用,存儲數據非常方便。主要功能特性有: 面向集合存儲,易存儲對象類型的數據。 模式自由。 支持動態查詢。 支持完全索引,包含內部對象。 支持查詢。 支持復制和故障恢復。 使用高效的二進制數據存儲,包括大型對象(如視頻等)。 自動處理碎片,以支持云計算層次的擴展性 支持Python,PHP,Ruby,Java,C,C#,Javascript,Perl及C++語言的驅動程序, 社區中也提供了對Erlang 及.NET等平臺的驅動程序。 文件存儲格式為BSON(一種JSON的擴展) 可通過網絡訪問
P64 MongoDB是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。他支持的數據結構非常松散,是類似json的bjson格式,因此可以存儲比較復雜的數據類型。Mongo最大的特點是他支持的查詢語言非常強大,其語法有點類似于面向對象的查詢語言,幾乎可以實現類似關系數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。