我所知道的金融数据库

原文链接:http://www.douban.com/note/193545088/?start=0#comments

平时工作中用了很多数据库,有国内的,也有国外的,每一个数据库都有它自己的特点,今天总结一些不同的数据库的优势和劣势。

国内主要数据库及数据终端: Wind\恒生聚缘\锐思数据库\CSMAR数据库\中国统计局数据库\巨潮数据库\巨灵数据库
国外主要数据库及终端:路透社(datastream)\CEIC\OECD\Haver Database\Thomson Financial One Banker\Capital IQ\

先说国内主要数据库及数据终端的特点:
要评价一个数据库质量,有以下几个标准:
(1)及时性 (2)精确性 (3)全面性 (4)数据结构科学性 (5)提取数据API兼容

先说说中国金融数据各个优点和缺点以及做的比较好的数据模块

Wind
定位:高端机构客户
机构市场占有率:80%
优势:(1)数据表结构还是比较科学,而且还有很多不同工具,例如WACC计算小插件、贝塔计算小插件、另外还有直接在EXCEL估值的模版。
(2)用户体现非常好,界面体验一流,符合中国人的使用习惯。
(3)特色数据库有中国A\B股数据、基金数据、债券数据和期货数据都非常突出。
(4)资讯内容结构严重模仿BLOOMBERG
(5)支持API插件

缺点
(1)其实我想突出数据质量只是一般,有一些还是很多错误、例如指数的数据库的错误和雅虎Finance几乎是一样的。
(2)世界指数等国际数据库还是一般。
(3)主要是提供资讯,下单通道没有Bloomberg没有那么强大。
(4)行业数据严重缺乏,而且质量真的不太好。

恒生聚缘
这个数据库其实也是定位为机构的,还有一套完全的信息技术系统解决方法。但是这个数据库不太出名,但是这是我用过价格便宜然后质量非常高的数据库。
优点:
(1)界面设计虽然没有万德那么花哨,但是非常实在,非常实用,而且很方便。数据结构也科学,不会出现过多冗余的状况。
(2)价格比万德便宜,但是性价比挺高的。
(3)A\B股数据是强项
(4)研究报告更新速度比较快,比较全面、质量比万德好。
(5)数据质量过硬。

缺点:
(1)资讯更新速度不高,其中资讯类的星期六和星期日是暂停的。
(2)宏观数据和行业数据不出色。
(3)不支持API插件。

CSMAR数据库
定位:中国80%的学术机构和香港高效都是使用CSMAR,美国大部分的大学例如沃顿等是使用CSMAR数据库
优点
(1)公司金融数据是强项,非常强大和齐全,我经常使用哈哈。
(2)数据库做学术还是比较全面的。年份比较早的数据都会有收录。
(3)高频数据是全国第二好。
(4)公司治理数据比较好,详细,包括公司控制链图均有收录。
缺点:
(1)由于是学术数据库关系,更新速度不够快。机构是绝对不会使用的。
(2)数据结构有些设计是有问题。
(3)缺乏资讯类的数据。
(4)行业数据是更新速度是所有数据库中最慢的,建议不要使用行业数据库。

锐思数据库
定位:学术机构
特点:
基本上是Copy外国的数据库结构,而且数据字段不够丰富,建议不要使用。

巨潮数据库
深交所旗下的一个数据库公司,有这个得天独厚的优势
(1)交易所的公告、董事会决议总是最快可以知道。
(2)异动数据库中的异动记录肯定不止前十名,获取还能看到前15名,哈哈!
缺点
(1)数据结构太老的了,严重有问题,见过5个字段来做表主键的,无语。
(2)好像异动数据库,把所有的债券、股票、衍生证、涡轮全部放在一起,结果有一次踩地雷,把债券和股票都提了出来,原因是股票的代码=债券的代码,真的囧死了。
(3)异动数据中的计算方法严重不正确,如果你查阅交易所对涨跌幅偏离值的计算方法,你会发现在2006年8月4日前后会非常不同。结果又一次让我踩到地雷。
(4)数据质量一般,算不上好。

清科数据库
用的比较少,专做Pe,风险投资数据的。

剩下的外国数据库可以简介一下
Bloomberg就不用说了,一个字:快!
下单通道快,数据品种全、资讯全面、而且还有business week\ TV\radio等等,主要是资讯比较全面。
数据质量好,虽然有时会出错,但是其他还是蛮好的。

路透社
Bloomberg的死对头,但是终端实在做的不太强大,只是注重资讯和新闻。而且Thomson旗下的Onebanker 数据库更新太慢,中国公司在美国上市的数据库错误太多,ISIN代码在新加坡市场上市的太少。

OECD和CEIC
这两个是投资银行经常有的两个数据库,主要集中在宏观数据和行业数据,非常强大。但是对于中国的数据来说质量不高。其中能源类的数据库比较好。
http://www.oecdchina.org/statistics/index.htm

Haver
高级数据库,IMF经常援用,我比较少用,专注于美国的经济行业数据库。
http://www.haver.com/databaseprofiles.html

Capital IQ
和CSMAR一样专注于做公司数据的,是Standard and poor旗下的一个产品,其中最厉害的是公司金融的所有数据了,上次还和它有商务联系,关于公司治理的数据库结构的。做的非常好。


总结一点:中国的行业数据质量非常不好,而且很多都是缺的,可能是因为以前的人还没有做数据收集的习惯。所以中国的行业数据都是卖得非常贵的,尤其是和上市公司非常密切的行业竞争对手数据。所以很多分析师都是使用购买协会的数据来做研究,连Wind这种数据库基本不能满足现在的行业数据需求。

如果大家还知道什么数据库,欢迎大家补充!
<think>好的,用户之前问了关于 MongoDB 和 PostgreSQL 的 npm 包,现在他们提到要使用 MySQL 数据库,需要了解相关的 npm 包。我需要先确认用户是否已经知道之前的回答结构,并按照类似的方式提供信息。 首先,用户可能需要知道对应的 Node.js 驱动是什么,应该是 `mysql` 或者 `mysql2`。接下来要比较这两个包的区别,确定哪个更推荐。`mysql2` 支持 Promise 和更多新特性,所以应该重点介绍它。 然后,需要说明安装命令,核心功能,比如连接数据库、执行查询、事务支持等。使用场景部分要给出代码示例,包括连接、查询、事务处理,这样用户可以直接参考。还要提到连接池的最佳实践,因为这对性能很重要。 另外,用户可能想知道如何选择不同的包,比如为什么选 `mysql2` 而不是 `mysql`,以及 ORM 工具如 Sequelize 或 TypeORM 的选项。需要列出这些工具,并简要说明它们的优点,帮助用户根据项目需求做决定。 还要注意用户可能的进阶需求,比如生产环境的建议,比如使用连接池、开启SSL、预处理语句防注入等。这些都是安全性和性能的关键点。 最后,保持回答结构清晰,分点说明,对比之前的回答形式,确保用户能够轻松理解和比较。需要检查是否有遗漏的信息,比如驱动包的维护状态、性能特点等,确保信息准确有用。</think>以下是关于如何在 Node.js 中使用 MySQL 数据库的完整指南: --- ### **一、核心工具包** #### **1. 官方推荐驱动** **安装命令**: ```bash npm install mysql2 ``` **包特点**: - 比旧版 `mysql` 包性能提升 30-50% - 支持 Promise 和 async/await(原生异步操作) - 支持预处理语句(防 SQL 注入) - 兼容 MySQL 5.7+ 和 MySQL 8.0 新特性 - 活跃维护(最后更新 2023 年) #### **2. 备选历史驱动** ```bash npm install mysql #(已不推荐用于新项目) ``` --- ### **二、核心功能** ```javascript const mysql = require('mysql2/promise'); // 使用 Promise 版本 // 创建连接池(生产环境推荐) const pool = mysql.createPool({ host: 'localhost', user: 'root', password: 'your_password', database: 'mydb', waitForConnections: true, connectionLimit: 10, // 连接池大小 queueLimit: 0 // 无排队限制 }); // 执行查询 async function getUsers() { const [rows] = await pool.query('SELECT * FROM users WHERE age > ?', [18]); return rows; } // 事务处理 async function transferMoney(senderId, receiverId, amount) { const conn = await pool.getConnection(); try { await conn.beginTransaction(); // 扣款 await conn.query( 'UPDATE accounts SET balance = balance - ? WHERE user_id = ?', [amount, senderId] ); // 入账 await conn.query( 'UPDATE accounts SET balance = balance + ? WHERE user_id = ?', [amount, receiverId] ); await conn.commit(); } catch (err) { await conn.rollback(); throw err; } finally { conn.release(); } } ``` --- ### **三、对比选择建议** | 特性 | `mysql2` | `mysql`(旧版) | |--------------------|--------------------------|-------------------------| | 异步支持 | Promise/Async-Await | 仅回调方式 | | 预处理语句 | 完全支持 | 基础支持 | | 性能 | 快 30%-50% | 较慢 | | 维护状态 | 活跃更新 | 维护模式 | | 连接池复用 | 更高效 | 基础实现 | --- ### **四、进阶工具推荐** #### **1. ORM 工具** ```bash npm install sequelize # 支持多种数据库的 ORM npm install typeorm # TypeScript 优先的 ORM ``` **Sequelize 示例**: ```javascript const { Sequelize, DataTypes } = require('sequelize'); const sequelize = new Sequelize('mysql://user:pass@localhost:3306/mydb'); // 定义模型 const User = sequelize.define('User', { name: DataTypes.STRING, age: DataTypes.INTEGER }); // 自动同步表结构 await sequelize.sync(); // 创建记录 const jane = await User.create({ name: "Jane", age: 28 }); ``` #### **2. 查询构造器** ```bash npm install knex # SQL 查询构建器 ``` --- ### **五、生产环境最佳实践** 1. **连接池配置**: - 根据 CPU 核心数设置 `connectionLimit`(通常 2-3 倍核心数) - 设置合理的 `connectTimeout`(建议 10 秒) 2. **安全防护**: ```javascript // 永远使用参数化查询(防 SQL 注入) await pool.query('SELECT * FROM users WHERE id = ?', [userId]); // 启用 SSL 连接(云数据库必选) const pool = mysql.createPool({ ssl: { rejectUnauthorized: true } }); ``` 3. **性能优化**: - 启用查询缓存 `pool.query({ sql: '...', rowsAsArray: false })` - 使用连接池事件监控: ```javascript pool.on('connection', (conn) => { console.log(`New connection ${conn.threadId}`); }); ``` --- ### **六、典型应用场景** 1. 电商系统(订单、库存管理) 2. 内容管理系统(文章、用户权限) 3. 金融系统(需要严格事务支持) 4. 数据分析平台(复杂 JOIN 查询) 需要帮助选择具体工具时,可以告诉我您的项目需求(如:是否需要 TypeScript 支持、数据复杂度等),我可以给出更具体的建议!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值