當前位置:首頁 » 操作系統 » RDB演算法

RDB演算法

發布時間: 2024-11-27 14:26:57

⑴ 如何選擇資料庫

如何選擇資料庫

完整的存儲進去,完整的取出來,不需要額外的操作。

Nosql 比 RDB 有更強的擴展性,可以充分利用分布式系統來提升讀寫性能和可靠性。

這不是誰設計好壞的問題,而是跟他們要解決的問題有關:RDB 誕生於互聯網萌芽的時代,那時數據的准確、可靠是最重要的,而 NoSQL 誕生於互聯網快速發展普及的時代,大數據、分布式、擴展性成了資料庫的另一個重要特性。

總結一下:

  • RDB 首先得是准確、可靠,然後才向更高的「可拓展性」發展;

  • 而 NoSQL 生而分布式,可拓展性強,然後才向更高的「准確性」發展。

  • NoSQL ,not only SQL,其實就是對那種打破了 RDB 嚴格事務和關系模型約束的那些資料庫的泛指,而隨著要解決的問題的不同,又誕生了各種各樣的 NoSQL。

    首先是「列式資料庫」(Column-oriented DBMS),數據量上去了,我們想分析網站用戶的年齡分布,簡單說,就是你需要對同一個特徵進行大數據量的分析統計,於是把原來 RDB 的「按行存儲」的範式打破,變成了「按列存儲」,比如 HBase;

    然後你發現有些數據變動不是很大,但是經常需要被查詢, 查詢時還要關聯很多張表,於是你把這些來自不同表的數據,揉成一個大對象,按 key-value 的格式存起來,比如 Redis;

    再後來你需要對博客內容進行相關性搜索,傳統 RDB 不支持相關性搜索,最重要的,還是擴展性差,增加機器的帶來邊際效益有限,於是有了「全文搜索引擎」,比如 Elasticsearch;

    除此之外,還有「文檔資料庫」、「圖形資料庫」……

    沒有一種資料庫是銀彈。

    總結

    這篇文章的題目是「如何選擇資料庫」,這是困擾很多人的問題,那麼多資料庫,到底要選什麼好?

    可是當你問出這樣一個問題時,其實你是在問一種「手段」。我現在要做這樣一個需求,用什麼資料庫可以幫我實現它?

    但其實你需要的不只是一種「手段」,因為如果對方甩給你一個冷冰冰的名字,Mysql、Elasticsearch、MongoDB,你肯定會問,憑什麼?

    你需要的,是一種「解決方案」。如果你需要數據十分嚴格准確,分毫不差,那我會推薦你採用「事務」和「關系模型」來處理數據;如果你需要數據能夠被大量讀取和寫入,那我會推薦你擴展性強的「分布式」;如果你的數據經常是整個讀取、整個更新的,那「關系模型」就沒有「文檔模型」適合你。

    「事務」、「關系模型」、「分布式」、「文檔模型」等等,這些就是「解決方案」,知道用什麼「解決方案」,用哪個資料庫,自然水到渠成。

    正如一位大牛說的:

  • 設計實踐中,要基於需求、業務驅動架構。無論選用 RDB/NoSQL,一定是以需求為導向,最終數據存儲方案必然是各種權衡的綜合性設計。
  • 用戶不會因為你用了 Mysql 或者 MongoDB 而使用你的軟體,畢竟絕大多數用戶都不知道 Mysql 和 MongoDB 是什麼玩意。

    linux上怎麼配置redis的aof持久化

    Redis 持久化和配置文件
    Reids 持久化
    Redis提供了兩種持久化的方式,分別是RDB(Redis DataBase)和AOF(Append Only File)。
    RDB,簡而言之,就是在不同的時間點,將redis存儲的數據生成快照並存儲到磁碟等介質上。
    AOF,則是換了一個角度來實現持久化,那就是將redis執行過的所有寫指令記錄下來,在下次redis重新啟動時,只要把這些寫指令從前到後再重復執行一遍,就可以實現數據恢復了。
    其實RDB和AOF兩種方式也可以同時使用,在這種情況下,如果redis重啟的話,則會優先採用AOF方式來進行數據恢復,這是因為AOF方式的數據恢復完整度更高。
    如果你沒有數據持久化的需求,也完全可以關閉RDB和AOF方式,這樣的話,redis將變成一個純內存資料庫,就像memcache一樣。
    redis配置文件
    daemonize no # 默認情況下,redis並不是以daemon形式來運行的。通過daemonize配置項可以控制redis的運行形式
    pidfile /path/to/redis.pid #當以daemon形式運行時,redis會生成一個pid文件,默認會生成在/var/run/redis.pid
    bind 192.168.1.2 10.8.4.2 # 指定綁定的ip,可以有多個
    port 6379 #指定監聽埠
    unixsocket /tmp/redis.sock #也可以監聽socket
    unixsocketperm 755 #當監聽socket時可以指定許可權為755
    timeout 0 #當一個redis-client一直沒有請求發向server端,那麼server端有權主動關閉這個連接,可以通過timeout來設置「空閑超時時限」,0表示永不關閉。
    Redis通用配置
    tcp-keepalive0 #TCP連接保活策略,可以通過tcp-keepalive配置項來進行設置,單位為秒,假如設置為60秒,則server端會每60秒向連接空閑的客戶端發起一次ACK請求,以檢查客戶端是否已經掛掉,對於無響應的客戶端則會關閉其連接。如果設置為0,則不會進行保活檢測。
    loglevelnotice #日誌級別,有四種debug, verbose, notice, warning
    logfile「」 #定義日誌路徑,
    syslog-identredis #如果希望日誌列印到syslog中,通過syslog-enabled來控制。另外,syslog-ident還可以讓你指定syslog里的日誌標志。
    syslog-facility local0 #指定syslog的設備,可以是USER或者local0-local7
    databases 16 #設置資料庫的總數量
    Redis快照配置(rdb持久化)
    save 900 1 #表示每15分鍾且至少有1個key改變,就觸發一次持久化
    save 300 10 #表示每5分鍾且至少有10個key改變,就觸發一次持久化
    save 60 10000 #表示每60秒至少有10000個key改變,就觸發一次持久
    save 「」 #這樣可以禁用rdb持久化
    stop-writes-on-bgsave-error yes #rdb持久化寫入磁碟避免不了會出現失敗的情況,默認一旦出現失敗,redis會馬上停止寫操作。如果你覺得無所謂,那就可以使用該選項關閉這個功能。
    rdbcompressionyes #是否要壓縮
    rdbchecksumyes #是否進行數據校驗
    dbfilenamemp.rdb #定義快照文件的名字
    dir ./ #定義快照文件儲存路勁
    Redis安全相關配置
    requirepassaminglinux
    #設置redis-server的密碼
    rename-command CONFIG aminglinux.config
    #將CONFIG命令更名為aminglinux.config,這樣可以避免誤操作,但如果使用了AOF持久化,建議不要啟用該功能
    rename-command CONFIG 「」
    #也可以後面定義為空,這樣就禁掉了該CONFIG命令
    Redis限制相關配置
    maxclients10000 #限制最大客戶端連接數
    maxmemory<bytes> #設定最大內存使用數,單位是byte
    maxmemory-policy volatile-lru#指定內存移除規則
    maxmemory-samples 3 #LRU演算法和最小TTL演算法都並非是精確的演算法,而是估算值。所以你可以設置樣本的大小。假如redis默認會檢查三個key並選擇其中LRU的那個,那麼你可以改變這個key樣本的數量。
    Redis AOF持久化相關配置
    appendonlyno #如果是no,則開啟aof持久化
    appendfilename「appendonly.aof」 #指定aof文件名字
    appendfsynceverysec#指定fsync()調用模式,有三種no(不調用fsync),always(每次寫都會調用fsync),everysec(每秒鍾調用一次fsync)。第一種最快,第二種數據最安全,但性能會差一些,第三種為這種方案,默認為第三種。
    no-appendfsync-on-rewrite no #使用no,可以避免當寫入量非常大時的磁碟io阻塞
    auto-aof-rewrite-percentage 10 #規定什麼情況下會觸發aof重寫。該值為一個比例,10表示當aof文件增幅達到10%時則會觸發重寫機制。
    auto-aof-rewrite-min-size 64mb #重寫會有一個條件,就是不能低於64Mb
    Redis 慢日誌相關配置
    針對慢日誌,你可以設置兩個參數,一個是執行時長,單位是微秒,另一個是慢日誌的長度。當一個新的命令被寫入日誌時,最老的一條會從命令日誌隊列中被移除。

    熱點內容
    java免費視頻 發布:2024-11-27 16:45:10 瀏覽:36
    存儲hur 發布:2024-11-27 16:37:30 瀏覽:433
    手機鎖密碼是多少 發布:2024-11-27 16:36:46 瀏覽:632
    大宋腳本下載 發布:2024-11-27 16:21:01 瀏覽:89
    sql認證培訓 發布:2024-11-27 15:53:54 瀏覽:635
    php的異常處理 發布:2024-11-27 15:53:54 瀏覽:417
    電腦設置郵件伺服器 發布:2024-11-27 15:53:07 瀏覽:4
    安卓平板叫什麼名字 發布:2024-11-27 15:48:12 瀏覽:172
    稅盤密碼忘了去改需要帶什麼 發布:2024-11-27 15:41:10 瀏覽:277
    拉筋要加密 發布:2024-11-27 15:38:51 瀏覽:324