而 sql 只是一个查询语言,但即便一个数据库有 sql 查询语言,但并不代表就是基于关系型模型实现的数据库。比如一些文档式数据库和时序数据库用的就是 sql 语句。
nosql,按照词义,应该是不使用 sql 查询语句的数据库。但很多网上资料的 nosql 都指定为“非关系型存储模型”的数据库。
“nosql 数据库”这个并不专业的称呼为什么很流行?哪怕国外也是?
]]>以及 NoSQL 数据库和关系型数据库的比较
偏学术和理论,之后会写一些更贴近实际操作的文章出来,希望大家喜欢
问题 1:假设有一个表,两个字段 a, b,建立联合索引,然后查询 {a: x, b: {$in: [y1, y2, y3]} },通常我们知道应该建立 a+b 的联合索引。那么如果使用 b+a 的联合索引,效率上会差多少?如果以 b 或者 b+a 索引进行分片,那么 SQL 分析器会不会将 $in 拆分出来分别路由然后查询后汇总?
问题 2:假设我们以 a+c 索引分片,额外建立索引 b+a,那么在查询 {a:x, b:y} 的时候,路由索引(分片索引)会影响查询计划的索引吗?也就是说这个查询是否可以在路由的时候根据 a+c(分片索引)找到对应的分片,然后在分片上检索的时候使用 b+a 索引?
看起来都是 SQL 分析器实现上的问题,也就是理论上可以这么做但是实际有没有做各家不同? TiDB 的同学是怎么做的呢?对于 mongos 有了解的同学知道 mongos 的实现吗?
]]>但遇到了很严重的问题: 目前服务端用到的数据存储为: Mysql , memcache, CouchDb; Mysql 存索引数据, memcache 做缓存, CouchDB 存长文本数据。
我的实现思路是:发帖时,创建一条草稿数据,索引存 Mysql ,草稿的内容存在 CouchDB 。
但问题是 CouchDb 是 MVCC 类型的 NoSQL ,这就导致了天生不适合存储频繁更新的数据。所以草稿箱上线不到一个月, CouchDB 中才 1000 多条 Document ,但占用的空间是 35G !!
后来发现, CouchDB 有一个 Compact 功能,删除历史的版本记录数据, Compact 完成后才 85M 大小,这是合理的数据大小。 这就导致了,需要配置定期去 Compact 草稿数据库,同时也带来了 Compact 数据库的各种风险。
请问各位大牛: 在现有的数据存储结构下:怎么去实现草稿箱功能?或者怎么去解决这个问题?
]]>"..... If you were stupid enough to totally ignore durability just to get benchmarks, I suggest you pipe your data to /dev/null. It will be very fast."
]]>bankmark是一家德国的独立基准测评机构,也是一个业内著名的NoSQL性能测试团队。bankmark为大数据提供了革命性的基准测试方案,曾经为主流NoSQL厂商Cassandra做过性能测评。bankmark是工业基准测试标准化协会SPEC和TPC的独立成员之一,他们的技术基于TPC-DI和BigBench等基准测试标准。
Bankmark的CEO Tilmann Rabl是多伦多大学(University of Toronto)的博士后,他的研究主要针对于大数据的基准测试以及大数据系统方面。此外,Tilmann Rabl还是工业标准的基准测试方案Parallel Data Generation Framework(PDGF)的核心开发成员,以及BigBench大数据分析基准测试系统的主要开发者和Transaction Processing Performance Council(TPC) 基准测试 TPC-DI的数据贡献者之一。
因为本站无法贴图,详细的测试信息可以查看原文。
http://msrg.utoronto.ca/papers/NoSQLBenchmark
http://www.bankmark.de/wp-content/uploads/2014/12/bankmark-20141201-WP-NoSQLBenchmark.pdf