当前位置:首页 » 操作系统 » 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