其他数据库

小数据

SQLIT

问题汇总
  1. 解决sqlite删除数据后,文件大小不变问题(VACUUM)

删除表格的全部数据:

DELETE FROM [Name]

当在sqlite中删除了大量数据后,数据库文件的大小还是那样,没有变。原因是:从Sqlite删除数据后,未使用的磁盘空间被添加到一个内在的”空闲列表”中用于存储你下次插入的数据。磁盘空间并没有丢失。但是也不向操作系统返回磁盘空间。

解决方法有以下两种:

1
2
1,在数据删除后,手动执行SQL"VACUUM"命令,执行方式很简单。推荐使用。
2,在数据库文件建成中,将auto_vacuum设置成“1”。但是第二个方法同样有缺点,只会从数据库文件中截断空闲列表中的页, 而不会回收数据库中的碎片,也不会像VACUUM 命令那样重新整理数据库内容。实际上,由于需要在数据库文件中移动页, auto-vacuum 会产生更多的碎片。而且,在执行删除操作的时候,也有那个.db-journal文件产生。要使用 auto-vacuum,需要一些前题条件。 数据库中需要存储一些额外的信息以记录它所跟踪的每个数据库页都找回其指针位置。 所以,auto-vacumm 必须在建表之前就开启。在一个表创建之后, 就不能再开启或关闭 auto-vacumm。

大数据

Hadoop

  1. 简介

    Hadoop是一个开源框架,它允许在整个集群使用简单编程模型计算机的分布式环境存储并处理大数据。它的目的是从单一的服务器到上千台机器的扩展,每一个台机都可以提供本地计算和存储。

  2. 案例

    阿里云大数据准备用Hadoop来替代分析型数据运算;

    2013年的时候,Hadoop平台也因为数据中心规模扩展不上去和安全管理以及权限管理和资源管理等一系列问题,最后不得不放弃这套体系。
    

Greenplum

  1. 简介

    Greenplum是先进的分布式开源数据库技术,主要用来处理大规模的数据分析任务,包括数据仓库、商务智能(OLAP)和数据挖掘等。

  2. 案例

    阿里云大数据准备用Greenplum来替代分析型数据运算;

    2010年的时候,Greenplum这条路因为规模和可用性的问题以及计算准确性问题被放弃;
    

内存数据库

SSDB (一个高性能的支持丰富数据结构的 NoSQL 数据库,用于替代 Redis)

官网 http://ssdb.io/zh_cn

  1. 特点
  • 兼容 Redis,支持 Redis 客户端
  • 有与 Redis 一样丰富的数据结构,如 list,hash,zset…
  • 使用Google LevelDB作为存储引擎, 支持T级别的数据
  • 客户端支持的语言丰富,如 C++,PHP,Python,Java,Go
  • 主从复制,负载均衡
  1. 性能

    从测试结果看来差距还是非常明显,并不象官网那样说得这么理想

    SSDB占用的CPU资源也是非常大的,CPU损耗上基本要比REDIS高出一倍的样子.

    虽然SSDB效率上不如REDIS,但其基于磁盘存储有着其最大的优势,毕竟很多业务数据远超过服务器内存的容量.

Lowdb (基于Nodejs的纯Json文件数据库)

https://github.com/typicode/lowdb

  1. 基本用法

    var low = require('lowdb')
    
    const db = low('db.json')
    
    db.defaults({ posts: [], user: {} })
      .value()
    
    db.get('posts')
      .push({ id: 1, title: 'lowdb is awesome'})
      .value()
    
    db.set('user.name', 'typicode')
      .value()
    
Examples

Check if posts exists.

    db.has('posts')
      .value()

Set posts.

    db.set('posts', [])
      .value()

Sort the top five posts.

    db.get('posts')
      .filter({published: true})
      .sortBy('views')
      .take(5)
      .value()

Get post titles.

    db.get('posts')
      .map('title')
      .value()

Get the number of posts.

    db.get('posts')
      .size()
      .value()

Get the title of first post using a path.

    db.get('posts[0].title')
      .value()

Update a post.

    db.get('posts')
      .find({ title: 'low!' })
      .assign({ title: 'hi!'})
      .value()

Remove posts.

    db.get('posts')
      .remove({ title: 'low!' })
      .value()

Make a deep clone of posts.

    db.get('posts')
      .cloneDeep()
      .value()

a