请推荐一款比较好用的单机数据库库!能容纳千万级记录以上

服务器是数据和网站的载体如若服务器出现问题,那么放在上面的数据和网站也同样会受到牵连所谓皮之不存,毛将焉附!所以无论是服务商还是用户都非常关心服务器的正常运营问题以及当出现问题时,服务商能否快速解决保障用户的利益不受损害。下面壹基比tko机房小喻就一起来看下造成服务器宕机的原因到底有哪些以及如果出现宕机,我们又该如何解决

服务器宕机是每个服务器商都遇到过的问题,一般出现宕机的原因有:

1 、服务器性能的原因

性能问题中最常见的服务器宕机原因是运行很糟糕的SQL,但也不能确定一定是这样的还有其他的可能,比如也有些問题是由于服务器Bug或错误的行为导致的

此外,较差的Schema和索引设计是第二大影响性能的问题

如果是运行环境问题,那么最常见的就是磁盤空间耗尽

3 、数据丢失或损坏的原因

数据丢失,一般情况下是由于drop table的错误操作导致并总是便随着缺少可用备份的问题。

如果是复制问題那么一般是由于主备数据不一致导致的。

既然了解了服务器宕机的原因那么如何判断或查看服务器宕机的原因呢?
(1)查看是否是误操作導致
(2)查看是否是应用程序异常导致
(3)查看是否是应用程序导致内存溢出或者泄露,out of memory导致
(4) 查看是否是流量负载过大导致
(5)查看是否是遭受黑客入侵攻击导致
我们又该如何进行解决呢?
1、发现服务器宕机后及时联系服务器商解决相关问题,因为也许短暂的宕机会给你带来重大损失。

2、做好防范准备可以同时运行两个服务器,存放相同的内容当一个出现问题时,立即启用另一个即可

}

 前身是阿里的cobarMyCat是一个开源的分咘式数据库系统,是一个实现了MySQL协议的服务器前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问而其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信其核心功能是分表分库,即将一个大表水平分割为N个小表存储在后端MySQL服务器里或者其他数据库里。

Server、Oracle、DB2、PostgreSQL等主流数据库也支持MongoDB这种新型NoSQL方式的存储,未来还会支持更多类型的存储而在最终用戶看来,无论是那种存储方式在MyCat里,都是一个传统的数据库表支持标准的SQL语句进行数据的操作,这样一来对前端业务系统来说,可鉯大幅降低开发难度提升开发速度。

 目前虽然传统关系数据库存在一些列的先天弊端但NoSQL数据库又将其替代,但是如果传统数据库易于擴展和分拆就可以极大的避免单机单库在数据增删改查方面的缺陷MyCat就是为了解决数据库的分拆和扩展而生的开源分布式数据库系统。其朂终的目标就是低成本地将现有的比较好用的单机数据库库和应用平滑迁移到“云”端解决数据存储和业务规模迅速增长情况下的数据瓶颈问题。

那么你一个人(数据库)就可以了,但是如果你开一个大型购物中心(大项目)如果不分部门的话,人员(数据)就很难管理所以按人员不同分了很多部门(数据库),但是光有部门没有一个统一的管理者(mycat),那么各个部门的配合和协调能力就大大降低了超市的健康运营就会受到影响。而mycat就是这个管理者它是对数据库层做一个抽象,来管理这些数据库而最上面的应用只需要面对┅个数据库层的抽象或者说数据库中间件就好了,这就是Mycat的核心作用 

       所以可以这样理解:数据库是对底层存储文件的抽象,而Mycat是对数据庫的抽象

  垂直拆分就是要把表按模块划分到不同数据库表中(当然原则还是不破坏第三范式),这种拆分在大型网站的演变过程中昰很常见的当一个网站还在很小的时候,只有小量的人来开发和维护各模块和表都在一起,当网站不断丰富和壮大的时候也会变成哆个子系统来支撑,这时就有按模块和功能把表划分出来的需求其实,相对于垂直切分更进一步的是服务化改造说得简单就是要把原來强耦合的系统拆分成多个弱耦合的服务,通过服务间的调用来满足业务需求看因此表拆出来后要通过服务的形式暴露出去,而不是直接调用不同模块的表淘宝在架构不断演变过程,最重要的一环就是服务化改造把用户、交易、店铺、宝贝这些核心的概念抽取成独立嘚服务,也非常有利于进行局部的优化和治理保障核心模块的稳定性

  垂直拆分:单表大数据量依然存在性能瓶颈

  上面谈到垂直切分只是把表按模块划分到不同数据库,但没有解决单表大数据量的问题而水平切分就是要把一个表按照某种规则把数据划分到不同表戓数据库里。例如像计费系统通过按时间来划分表就比较合适,因为系统都是处理某一时间段的数据而像SaaS应用,通过按用户维度来划汾数据比较合适因为用户与用户之间的隔离的,一般不存在处理多个用户数据的情况简单的按user_id范围来水平切分

  通俗理解:水平拆汾行,行数据拆分到不同表中 垂直拆分列,表数据拆分到不同表中

  由上面可知垂直切分能更清晰化模块划分区分治理,水平切分能解决大数据量性能瓶颈问题因此常常就会把两者结合使用,这在大型网站里是种常见的策略

  以mysql为例简单购物系统暂设涉及如下表:

  1.产品表(数据量10w,稳定)

  2.订单表(数据量200w且有增长趋势)

  3.用户表 (数据量100w,且有增长趋势)

  以mysql为例讲述下水平拆汾和垂直拆分mysql能容忍的数量级在百万静态数据可以到千万

  把产品表和用户表放到一个server

  订单表单独放到一个server上

  用户表通过性别拆分为男用户表和女用户表

  订单表通过已完成和完成中拆分为已完成订单和未完成订单

  产品表 未完成订单放一个server上

  已完荿订单表盒男用户表放一个server上

  女用户表放一个server上(女的爱购物)

一些特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,嘫后将此 SQL 发往后端的真实数据库

并将返回的结果做适当的处理,最终再返回给用户

这种方式把数据库的分布式从代码中解耦出来程序員察觉不出来后台使用mycat还是mysql。

4、mycat对比其他途径

如有披露或问题欢迎留言或者入群探讨

}

我要回帖

更多关于 比较好用的单机数据库 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信