以下所有条目都来源于互联网文章的二次加工,如有雷同,概不承认

没做过相关工作,纯理论分析一波,欢迎讨论:

条目一:如果是创业初期,直接用最熟悉的数据库就好

比如MySQL。

这样的做是有好处的,就是糙快猛。创业初期,最重要的是把项目做出来并上线。业务能不能活下来还不一定呢,想太多高性能、高可靠、易运维的事都没有太大的意义。

简单可靠才是最需要关注的。

条目二:不建议使用MySQL的TEXT类型

像blob和text这样的字段,名义上是为存储很大的数据而设计的类型。但这正因为如此,这跟关系数据库使用table的设计理念是冲突的。table中的每一列数据都是定长的,比如varchar(32)。但blob和text的上限太长了,MySQL不可能将它们存储在table中,因而会使用专门的外部存储区域进行存储,数据行内存储指针。这样做的其中一个结果是会导到多一次磁盘IO,性能开销比较严重。

条目三:新闻类文本直接静态化扔Nginx或OSS就好

频繁读不频繁写的新闻资讯类文本,在保存的时候,直接写成静态的html,访问的时候直接从nginx返回。这样做,不仅可以节省服务器资源,还可以利用CDN加速,把文件放到离用户最近的CDN服务器上,既便宜又快。

OSS是另一个可选的方案。OSS的优势是对图片和视频存储做了大师针对性优化,比如缩放图片和视频转码。另外,几乎所有的OSS云服务都自带CDN加速服务。

熟悉程度和价格可能仍然是很重要的选择因素。

条目四:笔记类产品MongoDB可能是个不错的选择

简述MongoDB的特点如下:偶尔丢数据:在开发者水平相当的情况下,MongoDB更容易鼓励开发者做出不恰当的设计从而导致数据丢失。如果你的数据特别重要(金融、交易),那么关系型数据库可能是个更好的选择。对笔记类产品吧,可能没那么疼,忍一忍就过去了。

无schema:不需要预定义的schema,以文档(json, bson)形式保存数据,同一个集合(对应关系数据库的表)中的不同文档可以使用不同的结构,并支持随时向扩展任意字段。这个特点导致MongoDB特别适合存储商品参数这类名目繁多又不尽相同的参数。在在游戏、电商、社交、直播、物流等领域都能看到MongoDB的身影。

当然,随之而来的问题就是如果代码结构不够清晰,很可能导致没有任何人知道数据库中存储的数据是什么格式。对接手他人代码的人员,如果不能确定文档中有哪些字段 ,则可能导致相当危险的结果。如果你的数据模式比较固定的话,一个变通的方案是通过protobuf这种序列化协议引入外部模式。

这对笔记类产品谈不上好或者坏,毕竟笔记的主要内容是大段不需要解析的文本。

单文档查询速度快:MongoDB使用BTree结构(对比MySQL使用B+Tree),针对单文档的查询做了大量节约IO的优化,因此查询速度很快,当然吃内存也是毫不含糊。

多表联查功能弱:笔记产品不太需要。

事务功能弱:4.0以上的版本已经支持基于Replica Set的事务,但在此之前只支持单文档的原子操作。对笔记来产品来说,弱化事务的使用可以提高数据写入效率。

提供全文索引,这个对笔记类搜索有用(但中文支持弱不少 = = )。

原生支持sharding(分片),升级数据库容量时分片间的数据可以自动迁移,这对海量数据的扩容简直不要太nice。

条目五:其它数据库产品MySQL,关系数据库,强在事务和关联查询

Redis/Memcache,内存数据库,主要用作缓存,不适用于长文本处理

ElasticSearch,全文搜索,虽然楼主没提,但在笔记类产品的确有这种需求。但仔细想一下,个人笔记量是否真的需要上ES才能满足需要呢?

mysql 数据库大文本_超长文本,用什么数据库储存?相关推荐

  1. Mysql数据库大文本数据处理

    数据库大文本数据处理目标:把 mp3文件保存到数据库中!在my.ini中添加如下配置: max_allowed_packet=104857601 什么是大文本数据所谓大文本数据,就是大的字节数据,或大 ...

  2. 专科mysql数据库大作业_数据库大作业整理·总

    能找到这里的小同学,我们可能是校友哦. 这个不正经的帖子来整理一下我们用pyqt5+eric6+mysql开发天气管理系统(17地市)的所有走过的路,尤其是我走弯路后的修正路线. 因为找了一些资料,看 ...

  3. mysql 字符大对象_第02期:MySQL 数据类型的艺术 - 大对象字段

    我以前分享过一篇<MySQL 大对象一例>,今天就来详细说下大对象的优缺点以及使用场景. 我们把 MySQL 的大对象类型分 TEXT/BLOB 和 JSON 两部分来说明. 一.TEXT ...

  4. MySQL时间序列分表分区_干货丨时序数据库分区教程

    1.为什么对数据进行分区? 对数据库进行分区可以极大的降低系统响应延迟同时提高数据吞吐量.具体来说,分区有以下几个好处: 分区使得大型表更易于管理.对数据子集的维护操作也更加高效,因为这些操作只针对需 ...

  5. mysql 读取clob数据类型_谈谈有关各数据库Blob、Clob类型字段的读取、保存更新

    经常有人谈到Blob类型字段的读写问题,我也来说两句. 最近在写一些东西,对常用数据库的数据类型.函数等作了一些比较,也写了许多了的测试代码,以下是我测试的结果: 测试数据库: MS Sql Serv ...

  6. mysql 文档生成器_最好用的数据库文档生成工具

    一 前言 本文介绍一些比较流行的数据库文档生成工具,什么是数据库文档? 其实在工作中进行项目交付的时候经常用到:简单来说数据库文档就是对整个数据库设计说明的文档,比如使用了哪个数据库,每张表的字段,类 ...

  7. 数据库类型少_全栈之数据库系列 - 数据库的设计、架构和使用规范

    当我们要存储的数据比较少的时候,数据库设计的优势并不能发挥出来,但是当我们对数据的需求量越来越大时,对数据库的设计就很有必要性了!如果数据库的设计不当会造成数据冗余.修改复杂.操作数据异常等问题,而好 ...

  8. 两个server 两个数据库 微服务_微服务的数据库设计

    单独的数据库: 微服务设计的一个关键是数据库设计,基本原则是每个服务都有自己单独的数据库,而且只有微服务本身可以访问这个数据库.它是基于下面三个原因. 优化服务接口:微服务之间的接口越小越好,最好只有 ...

  9. access2013数据库实验笔记_实验一 ACCESS数据库及表的操作

    1 .掌握数据库的创建及其它简单操作 2 .熟练掌握数据表建立.数据表维护.数据表的操作 二.实验容与要求 1 .数据库的创建.打开.关闭 2 .数据表的创建:建立表结构.设置字段属性.建立表之间关系 ...

最新文章

  1. 操作符重载——C/C++学习笔记
  2. antd 的form 表单怎么回显数据_jsonschema-form-vue基于JSONSchema的表单自动生成方案
  3. Windows Azure奇趣应用之Swingify
  4. 使用 Docker 构建自己的镜像
  5. WEB前端开发规范文档
  6. InVEST模型(工具)下载及安装(更新中)
  7. 78M05-ASEMI三端稳压管78M05
  8. Appium原理分析
  9. mysql join 从库_Mysql实现跨库join查询
  10. 大数据与数据挖掘的基本概念,它们之间的内在联系是什么?
  11. 什么是主数据?有什么作用?
  12. HDFS中NameNode和DataNode的作用
  13. 水稻广谱与持久抗稻瘟病基因位点Pigm的抗病机制
  14. SSO场景系列:实现Microsoft AD到阿里云的单点登录
  15. Linux服务器NTP客户端时钟同步配置方法
  16. php 做ui,如何制作ui
  17. 网站更换服务器对于SEO有哪些影响?
  18. android root权限下Apk下载、静默安装并自启
  19. 【VS开发】设备控制台 (DevCon.exe) 示例
  20. 【Java--实现(同局域网)简单聊天案例】

热门文章

  1. [MySQL]基本数据类型及表的基本操作
  2. 视频格式转换:flv转MP4
  3. miniui 查询_jQuery MiniUI 表单查询sql写在哪里
  4. oracle uv,【赵强老师】Oracle数据库的内存结构
  5. 求质数的java算法
  6. 新项目开局怎么做,老PM常用的2个抓手
  7. Leetcode解题笔记之(51)-- N-Queens [Hard]
  8. QT实现图片转pdf
  9. leanback android,Android TV Leanback (五)(使用leanback创建UI)
  10. css 实现加载动画效果