关于项目实施的一些心得

最近在做一个小项目,项目的内容就是把这个公司散落各处的数据收集起来,方便员工查看与检索。这里不仅有关系型数据、非关系型数据,还有文档、数据、视频等等内容,需要规整的内容比较多且比较复杂。
在项目实施之前,大致的整理一下思路,按照尽量降低成本的要求,完成这个项目。

  1. 小公司给的钱少,最多给两万,但是要求颇多。既要求数据的稳定、又要求数据的安全、还需要能够在内网和公网都要访问到,最好还能实现办公文档协作编辑和OA系统。这个其实好办,一套群晖DS1821+,再加上8块8T的硬盘,基本可以满足需求,或者群晖买前一代的产品,然后把硬盘容量加大,获得更大的存储空间。
  2. 关于数据,大致分为两类,一种是员工社保信息等关系型数据、客户信息等非关系型数据,另一类是文档、数据、视频等。第二类数据直接放在群晖存储上即可,关于第一类数据,继续往下看。
  3. 本来思考着用mongodb这种非关系型数据库来整理这些数据,既可以照顾到关系型数据、亦可以满足非关系型数据的要求,同时还具有很强的扩展性。但是后来否了这个方案,原因有以下两条,一是员工对于非关系型数据库的操作不习惯;二是目前没有比较成熟稳定的非关系型数据库的展示与操作工具,下面详细说说这两点原因。
  4. 大部分员工平时做做短视频,接触到的办公软件就是office中的word和excel,对于数据库基本没啥概念,所以为了能让他们快速上手,不影响工作,到处找解决方案(自行开发肯定是来不及的)。关于数据库的管理与操作
    1. Navicat是收费软件且费用颇高,特别占用机器性能,所以不合适,如果用破解软件则可能给公司带来风险
    2. 开源的例如DBeaver、phpadmin倒是可以解决这个问题,但是操作上可能很难上手,员工一时难以适应,最好是和原来的excel操作逻辑类似这是一员工提出的小要求,我也是有点为难,为啥不直接用excel啊,不到30个人,用啥数据库啊
    3. 到处找方案,最后找到两个,一是TreeDMS,二是Cloudquery,主要是这两个都是基于云端,且支持私有化部署,并且能够降低员工的负担,不需要安装软件,可以直接通过浏览器访问,群晖也是通过浏览器访问,统一性更高。最后选择的是Cloudquery,原因有二,一是私有化部署简单,二是在筛选和编辑操作上更加贴近excel的操作逻辑。
  5. 关于解决关系型和非关系数据库的冲突。关系型数据库的列基本定死,例如员工的工资的发放、员工的社保等等信息,基本的格式是固定的,那如何兼容非关系数据,这里主要记录的客户的姓名、住址、公司、联系方式、爱好等等,首先规整了基本都会有的内容,这些最为非空值,还有一些内容只有某些客户有,这些可以设为允许空值,考虑到后面还会记录一些其他的内容,可以使用Cloudquery操作数据库直接添加列或者写在最后的备注内容中
  6. 最后的部署如下:
    1. 群晖负责实现存储文档、数据、视频等,同时解决员工对于协作编辑和OA的结合,同时把内外网均可以访问的需求通过群晖的qc来实现
    2. 关于数据库,使用公司的一台老的2U的dell服务器来部署咸鱼二手价不到一千,为了数据的安全与稳定,每天定时向群晖存储上备份一次全量的数据库,同时还可以利用群晖提供的版本控制,最多可以追溯32个版本因为群晖是8盘位,其中6盘做的raid1,2盘位做的raid0,做raid0的主要用来方便员工剪片子
    3. 关于Cloudquery搭建,用的是公司的一台1U的戴尔的服务器(其实还有两台2U的华为的服务器,但是不让用),咸鱼价格不足300。每天将Cloudquery的配置同步到群晖。

本来可以将MySQL部署在群晖上的,但是考虑到风险分担,且减轻在剪辑视频过程中要访问数据库时导致的带宽不够的问题,因此将数据库使用额外的服务器来部署,并且这些老服务器都是经历过岁月的洗礼,服务器就那样,如果坏,那么在使用不久之后就会坏,如果不坏,使用十几二十年也不会出问题。
【注意】:在使用CloudQuery的过程中,MySQL数据库的库名和表名中不能出现“.”。如果要使用分隔符,建议使用“_”