从淘汰 Oracle 数据库的事情说起

tech

公司搞淘汰 Oracle 数据库的事情已经搞了好久了,这个事情其实和国内淘宝系搞的去 IOE(IBM、Oracle 和 EMC)是类似的,基本上也是迫不得已,Oracle 的维护成本太高,而公司内部基于 Oracle 数据库的数据仓库,也是问题频出;另一个原因则是 scalability。我相信这两个原因许多人都非常清楚。而这个淘汰,也不是简简单单换一个关系数据库,比如把 Oracle 换成 MySQL,或者换到云上(RDS)。而是有明确阶段性地演进,比如替换到 DynamoDB 这样的 NoSQL 数据库上面去;或者更彻底地,像我们接触到的某个产品,数据本身换到更廉价的存储 S3 上去,元数据才存在 DynamoDB 里,而原本

[……]阅读全文

LeetCode 数据库十道题解答

之前做算法题 的途中发现,LeetCode 上面推出了数据库解答,有十道题,于是这两天晚上时间就给做了。解答是次要主要的好处是,正好复习复习 SQL 一些查询语句的写法,比如自定义变量和常用函数。题目都比较简单,少做解释,以贴题目和答案为主。

 

175 Combine Two Tables 32.5% Easy 176 Second Highest Salary 23.8% Easy 177 Nth Highest Salary 14.1% Medium 178 Rank Scores 20.7%[……]阅读全文

数据库范式总结

db 数据库表结构设计时,遵从一定的范式(NF,Normal Form)可以减少数据冗余和操作异常。

第一范式(1NF)

1NF 指的是每个属性值都是不可再分的。

满足 1NF 的关系被称为规范化的关系,1NF 也是关系模式应具备的最起码的条件。

比如有这样一张表 user 的两列:

  • name
  • phone_number

phone_number 这一列只存储一个电话号码,如果一条数据同时存储了住宅电话和手机号码,比如:“010-65576558,13765556765”,那么这个属性是可以再分的,违背了 1NF。

第二范式(2NF)

2NF 要求去除局部依赖。

[……]阅读全文

提高数据库查询速度的几个思路

27 1、缓存,在持久层或持久层之上做缓存。

2、数据库表的大字段剥离,保证单条记录的数据量很小。

3、恰当地使用索引。

4、必要时建立多级索引。

5、分析 Oracle 的执行计划,通过表数据统计等方式协助数据库走正确的查询方式,该走索引就走索引,该走全表扫描就走全表扫描。

6、表分区和拆分,无论是业务逻辑上的拆分(如一个月一张报表、分库)还是无业务含义的分区(如根据 ID 取模分区)。

7、RAC,值得注意的是,Oracle 的 RAC 在节点较多时有其不可解决的性能问题。

8、字段冗余,减少跨库查询和大表连接操作。

9、数据通过单个或多个 JOB 生成出来,减少实时查询。

10、从磁盘上做文章,数据存放的在磁

[……]阅读全文

YQL

YQL,(Yahoo! Query Language) 是一种支持对互联网上的数据进行查询、过滤、连接、类似 SQL 语法的简单语言。用 YQL 官方的话:有了 YQL,开发人员只需要使用一种简单的查询语言即可访问和操控互联网上丰富的数据,而不再需要反复学习使用各种各样的 API。

一种代表作数据库发展未来的创意,数据库应该能够不仅仅代表具体的表和空间,变成广义的数据库,延展到整个互联网,才是一个最庞大的数据库。

火丁大盗给了个简单的例子:

select * from html
where url='http://www.dangdang.com/'
and xpath='//ul[@id="homepage

[……]阅读全文

back to top