Mysql 雅虎财经查询速度

Mysql 雅虎财经查询速度,mysql,node.js,yahoo-finance,download-speed,Mysql,Node.js,Yahoo Finance,Download Speed,我目前正在从事一个项目,该项目涉及查询雅虎财经的许多不同的股票代码。瓶颈是从雅虎获取数据,所以我想知道是否有一种方法可以加快这一进程 如果我使用多台机器查询并聚合数据,这会有帮助吗?我只有一台物理机器;我该怎么做呢 谢谢 编辑:目前,我正在使用Node.js、yahoo finance和Q.deferred向yahoo询问历史数据。然后,一旦所有的承诺都实现了(对于每个股票代码),我将执行一个Q.all()来持久化数据 var data = []; tickers = ["goo

我目前正在从事一个项目,该项目涉及查询雅虎财经的许多不同的股票代码。瓶颈是从雅虎获取数据,所以我想知道是否有一种方法可以加快这一进程

如果我使用多台机器查询并聚合数据,这会有帮助吗?我只有一台物理机器;我该怎么做呢

谢谢

编辑:目前,我正在使用Node.js、yahoo finance和Q.deferred向yahoo询问历史数据。然后,一旦所有的承诺都实现了(对于每个股票代码),我将执行一个Q.all()来持久化数据

    var data = [];
    tickers = ["goog", "aapl", ...];
    ...
    Q.all(_.map(tickers, function(symbol) { 
        return getYahooPromise(symbol);
     }))
    .done( function() { persistData(data) });
getYahooPromise检索股票代码的数据并将其推送到数据数组中。一旦所有承诺都得到解决,数据就会持久保存在MySQL数据库中

第二次编辑: 更多代码:

var sequentialCalls = [];

for ( var i = 0; i < tickers.length / chunkSize; i++ ) {
    sequentialCalls.push( persistYahooChunk );
}
sequentialCalls.push( function(callback) { 
    connection.end(); 
    callback();
});

async.series( sequentialCalls )



exports.persistYahooChunk = function(callback) {
console.log("Starting yahoo query");
var currentTickers = tickers.slice(currentTickerIndex,currentTickerIndex + chunkSize);


return yahooFinance.historical( {
    symbols: currentTickers,
    from: "2015-01-28",
    to: "2015-02-05"
}).then( function(result) {
    console.log("Query " + currentTickerIndex +  "/" + tickers.length + "completed");
    currentTickerIndex += chunkSize;
    //add valid data
    var toPersist = _.map(result, function(quotes, symbol) {
            return [symbol, quotes.length != 0 ];
    });


    var query = "INSERT INTO `ticker` (`symbol`, `valid`) VALUES ?";
    connection.query(query, [toPersist], function(err, result) {
        if (err) {
            console.log (err);
        }
        //console.log(result);

        callback();
    });
});
var sequentialCalls=[];
对于(var i=0;i

}

瓶颈是因为您对每台股票进行一次查询

根据您需要提取的数据,如果您可以执行包含所有股票代码的单个查询,则速度会快得多

下面是一个示例,如果您需要通过一个查询获取一个股票列表的所有当前价格:


您是对每个股票代码执行一次查询,还是对所有股票代码执行一次查询?另外,显示一些代码。啊,刚刚编辑-每个股票代码一个查询。如果这是导致速度减慢的原因,是否有一种方法可以使查询原子化,以便在操作出错时不会丢失所有数据?是否有一种方法可以存储查询的一部分,使其不是全部或全部?或者我必须深入研究雅虎财务代码才能做到这一点?我不知道你的意思/想要达到的目标是什么?你有多少个股票代码,你有没有时间支持你的基准测试?你能发布你所有的代码吗,用节流让我们对你的整个设置有一个很好的了解所有2个字母的排列都是676个要查询的,奇怪的方法,但音量不是太大。我猜你可以通过2个查询甚至1个查询来获取所有的价格数据。我建议您使用代码更新和
javascript
标记创建一个新问题,希望有人能提供帮助you@ajdecker1022对于有效的美国股票列表(包括ADR),考虑使用<代码>ftp://ftp.nasdaqtrader.com/SymbolDirectory/nasdaqtraded.txt
。它列出了约8k种证券。有关文件的说明,请参阅
http://www.nasdaqtrader.com/trader.aspx?id=symboldirdefs