kdb+ 32位版本开放下载了

Discussion in 'kdb+' started by itfin, Apr 14, 2008.

  1. zwz

    zwz

    kdb+不仅仅是内存数据库,当然如果数据只保存在内存中而从未写入到磁盘,是需要用命令写入磁盘的。
    Q:Is kdb+ used only as an in-memory database?
    A:No. Kdb+ provides a full relational database management system with time-series analysis that handles data in memory as well as stored data on disk. ...

    itfin说过:
     
  2. 谢谢,明白了。:D
     
  3. 请教问题:
    如果我想把2000支股票的历史数据读入KDB+,是每支股票建立一个table较好,还是所有的股票数据放进一个table?
    KDB+支持并发访问吗?例如,我从KDB取第一支股票的历史数据的同时,还没取完时再同时发请求取第二支和第三支股票的数据。支持异步存取吗?
     
  4. zwz

    zwz

    个人认为放进一个表就可以了,可以用splayed表。

    没试过,应该有支持吧:http://kx.com/q/d/a/kdb+.htm#Parallel
     
  5. 专家一出手,就知有没有:)
    谢谢zwz

    如果要是在其它普通数据库,把所有股票的数据放进一个table里不合理,查询慢。
     
  6. https://code.kx.com/trac/wiki/Cmdline

    使用-p -XXXX 的方式,可以实现多客户端的并发查询。

    使用-s XX 的方式,在用户代码级可以实现多线程peach并发,在kdb+引擎级可以实现各分区的并发查询和结果汇总(与google的mapreduce类似,但如果只有单磁盘则瓶颈在磁头IO无法实现提速)。

    kdb+在线程级没有做锁和同步处理,所以不要尝试做并发插入操作,否则可能使程序崩溃。
     
  7. 多谢itfin大侠,我还处于学习阶段:)
     
  8. 我现在遇到的问题是过两小时kdb+就退出了。这对于我们小散户用它做数据服务器是个缺点。又买不起正版的,不知各位大侠有何高见?
     
  9. kdb+不是for散户的平台,也不能简单地把它看成是个服务器。进入kdb+的领域基本上意味着要沿着机构业务的路径发展,换言之就是所谓的专业化。如果个人在业务和技术上同时都有相当的能力,且愿意投入5年以上的时间深入钻研,这会是一个很有前途的方向,否则对个人来说只不过是浪费时间。
     
  10. 嗯,最近发现SQLite有个比较新的模式,可以当作内存数据库用。估计性能等方面SQLite和KDB+无法比较,但胜在软件支持和资料都比较多,而且还是免费的。我觉得这个会是散户个体应用的一个合适的选择。
     
  11. 好象国内机构用kdb的少之又少。恐怕找这方面的工作不是件容易的事。

    SQLite是嵌入到应用程序内部,不是独立的服务器。假如我要关掉测试程序,改几行代码,再打开程序,又要重新装入历史数据,装入历史数据是个很费时间的过程。如果装入的数据很庞大,还要根据使用的频率,定期从内存中清除不常用的数据。如果再考虑并发查询,分布式存储等等,好象用数据库方案较好。

    我又查了资料。
    key-value数据库:redis, Tokyo Cabinet, memcached.
    其中redis, Tokyo Cabinet不支持Windows服务。这些数据库的数据也相当于内存中,查询速度超快。
     
  12. SQLite是轻量级的,方便附加到自己的软件中,散户个体应用在交易执行方面我觉得数据量不会大,一般够用了。

    当然看你上面的话,你是打算用来存放海量的历史数据,可能做统计或者backtest的用途。那轻量级的数据库可能就不满足。流行的商业数据库都没问题,尤其支持OLAP好的那些。

    redis, Tokyo Cabinet, memcached 这些都没见过,期待Toby试后和大家分享一下心得 :)
     
  13. SQLite是不错。很小巧。它可以嵌入到某一程序中。但与不用它有何区别。自己把数据放在内存不就行了。
    我现在要把所有A股的日数据从文件读入内存,而且过一会有个新的想法后,再改改程序,再次读入内存。我可以把它做成WINDOWS SERVICE的形式,一直在内存里,但我想试试数据库的方式。为何关掉程序也要驻留内存呢?原因是读入这些数据要花费几分钟的时间。时间太久了。
    我要用的数据也不算海量,但要预先设计好支持大数据量。统计与backtest肯定是要的啦。流行的商业数据库太庞大,配置复杂。远没有直接从文件读取来得方便。而且不是内存数据库。
    由于redis, Tokyo Cabinet不支持WINDOWS,我没去安装。redis支持 LIST,SET等数据结构的直接插入。Tokyo Cabinet更稳定。支持memcached 协议。数据库太多了,这里只提到这几个,都算是键值数据库,数据放在内存中,超过一定数量后,不常用的自动存入硬盘。支持多线程并发。最大的特点是插入数据与查询数据超快
    我安装了memcached 。还不错。使用很简单。可以把对象直接存进去(set),可以查询(get)。就这么简单。这样如果我把A股所有的日数据全部存进这个内存数据库,下次程序再启动来就不用花几分钟从硬盘读取文件了。memcached 默认内存60M,大于60M就缓存到硬盘。
    数据库分为基于行的库,基于列的数据库,键值数据库,对象数据库。传统的关系数据库属于基于行的。
     
  14. kdb+属于不属于网络数据库类型?sqlite不属于网络数据库,网络链接也是采用非安全性的文件共享方式。
     
  15. 呵呵,所以我的用法就是附着在我的软件上存储在本地用的,代替Access或者ini文件之类的挺合适。

    wj兄的用法里,SQLite当然不合适。WJ兄需要带服务器的数据库。
     
  16. zwz

    zwz

    如果要求不高,可以解决的,如:
    1)退出了再进:) 手工重启或用监控软件监控一退就重启。
    2)通过修改系统日期让它在“未来”启动,现在减去未来得到一个小于2小时的负数。可以用SYDAY等小工具帮忙。



    大智慧的所有A股日线数据用kdb+格式保存的话大概不到200MB(约480万条记录;不知道是否完整),全部加载到内存需要花费不到1秒的时间。有兴趣的话可以用我发在re版的q代码把大智慧数据导入试试。


    kdb+应该属于网络数据库类型吧.
     
  17. 恩,kdb+属于网络数据库类型
     
  18. No more.
     
  19. 真是太感谢大侠的指点。


    1. syday试验成功。貌假KDB+有3个月的使用期。不知如何解决。我的好
    我用SYDAY启动后,如果设成昨天的日期,过几秒就会退出。如果设为明天的日期,则不会退出。如果设为4月6号,也会退出。

    KDB+ 2.6 2010.01.05 Copyright (C) 1993-2010 Kx Systems
    w32/ 1()core 1021MB zha49293 szhdx-dt15492 10.86.56.138 PLAY 2010.04.05 (是不是我的到期时间为4月5日???)

    2. 我有时间要研究您的Q代码:D


     
  20. zwz

    zwz

    请查邮件。