小数据
SQLIT
问题汇总
- 解决sqlite删除数据后,文件大小不变问题(VACUUM)
删除表格的全部数据:
DELETE FROM [Name]
当在sqlite中删除了大量数据后,数据库文件的大小还是那样,没有变。原因是:从Sqlite删除数据后,未使用的磁盘空间被添加到一个内在的”空闲列表”中用于存储你下次插入的数据。磁盘空间并没有丢失。但是也不向操作系统返回磁盘空间。
解决方法有以下两种:
1 | 1,在数据删除后,手动执行SQL"VACUUM"命令,执行方式很简单。推荐使用。 |
大数据
Hadoop
简介
Hadoop是一个开源框架,它允许在整个集群使用简单编程模型计算机的分布式环境存储并处理大数据。它的目的是从单一的服务器到上千台机器的扩展,每一个台机都可以提供本地计算和存储。
案例
阿里云大数据准备用Hadoop来替代分析型数据运算;
2013年的时候,Hadoop平台也因为数据中心规模扩展不上去和安全管理以及权限管理和资源管理等一系列问题,最后不得不放弃这套体系。
Greenplum
简介
Greenplum是先进的分布式开源数据库技术,主要用来处理大规模的数据分析任务,包括数据仓库、商务智能(OLAP)和数据挖掘等。
案例
阿里云大数据准备用Greenplum来替代分析型数据运算;
2010年的时候,Greenplum这条路因为规模和可用性的问题以及计算准确性问题被放弃;
内存数据库
SSDB (一个高性能的支持丰富数据结构的 NoSQL 数据库,用于替代 Redis)
- 特点
- 兼容 Redis,支持 Redis 客户端
- 有与 Redis 一样丰富的数据结构,如 list,hash,zset…
- 使用Google LevelDB作为存储引擎, 支持T级别的数据
- 客户端支持的语言丰富,如 C++,PHP,Python,Java,Go
- 主从复制,负载均衡
性能
从测试结果看来差距还是非常明显,并不象官网那样说得这么理想
SSDB占用的CPU资源也是非常大的,CPU损耗上基本要比REDIS高出一倍的样子.
虽然SSDB效率上不如REDIS,但其基于磁盘存储有着其最大的优势,毕竟很多业务数据远超过服务器内存的容量.
Lowdb (基于Nodejs的纯Json文件数据库)
https://github.com/typicode/lowdb
基本用法
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