我要做一个基金比价的功能,给我了一个接口,接口返回json数据;由于数据很多,这些数据一个月更新一次。我现在想到的方法一是直接查询,二是把数据存放的数据库,然后再查询;但是我感觉效率都不会太高,所以请求各位的帮助。。。。先谢谢了~

大家可以看看这个网址:http://data.simuwang.com/compare.php我要做的工作和这里的 “私募对比”

2011-01-31 23:56:35

4 Answers

你这个很是个问题呀,如果数据量很大的话。虽然你能接收到json数据,但你如何转换呢?php里转换成数组,数组也是有大小的,你总不能把你的内存无限调大吧!超出php规定的字节数那也会造成数据丢失报内存溢出。所以,你不应该一次通过接口接收全部数据,应该分批接收。比如通过时间或其他类型,分批得到,然后你存数据库也好存成文件也行,看你怎么方便就存成什么类型了。

2011-02-01 01:55:47

先将数据从服务器上取下来解析,保存到数据库。让服务器添加一个字段:是否有新数据。一个月一次渠请求数据库,有新数据了,去更新重新存到数据库覆盖原来的数据。没有新数据则数据库不改动。查询的话就查询数据库就行了。

2011-02-01 03:10:41

一个月更新一次那就不是很频繁咯,你可以把这些JSON数据写到文件里,一个月更新一次,然后需要的时候读取文件里的JSON。

2011-02-01 04:41:15

我建议是有两种:
第一:如果你有缓存服务器的话,直接放到缓存服务器,进行操作,操作后如果需要对数据进行持久存储的话就再进行数据库录入(最好是redis,因为MC的key value存储值很小,你的数据大的话就很麻烦了)
第二:如果说没有缓存服务器的话,那就建议考虑是否能直接放到内存里,如果大小太大的话,那就只能存储到硬盘上了,通过文件的方式

但是我不知道的一次性接受数据的KB以后多大,如果是不大的话就直接放在内存,比如Session中,进行处理,处理后释放等待下一次返回数据的处理,如果要求及时性很高的话,那只能考虑缓存方式处理了...

2011-02-01 06:48:41
您不能回答该问题或者回答已经关闭!

相关文章推荐

  • C#中using指令的几种用法

    using + 命名空间名字,这样可以在程序中直接用命令空间中的类型,而不必指定类型的详细命名空间,类似于Java的import,这个功能也是最常用的,几乎每个cs的程序都会用到

  • C#实例解析适配器设计模式

    将一个类的接口变成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够一起工作

  • C#开发高性能Log Help类设计开发

    项目中要在操作数据库的异常处理中加入写Log日志,对于商业上有要求,写log时对其它操作尽可能影响小,不能因为加入log导致耗时太多

  • 使用托管C++粘合C#和C++代码(二)

    本文实现一下C++代码调用C#代码的过程。我构造一个简单并且直观的例子:通过C++ UI 触发C# UI.

  • C#开发中的反射机制

    反射的定义:审查元数据并收集关于它的类型信息的能力。元数据(编译以后的最基本数据单元)就是一大堆的表,当编译程序集或者模块时,编译器会创建一个类定义表,一个字段定义表,和一个方法定义表等

  • Async和Await使异步编程更简单

    C#5.0中async和await两个关键字,这两个关键字简化了异步编程,之所以简化了,还是因为编译器给我们做了更多的工作

  • C#运行时相互关系

    C#运行时相互关系,包括运行时类型、对象、线程栈和托管堆之间的相互关系,静态方法、实例方法和虚方法的区别等等

  • C#协变和逆变

    “协变”是指能够使用与原始指定的派生类型相比,派生程度更大的类型,“逆变”则是指能够使用派生程度更小的类型

  • C#基础概念之延迟加载

    延迟加载(lazy load)是Hibernate3关联关系对象默认的加载方式,延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作

  • C#中的索引器的简单理解和用法

    C#中的类成员可以是任意类型,包括数组和集合。当一个类包含了数组和集合成员时,索引器将大大简化对数组或集合成员的存取操作

  • 使用托管C++粘合C#和C++代码(一)

    C#在xml读写,数据库操纵,界面构造等很多方面性能卓越;C++的效率高,是底层开发的必备武器

  • 深入C# 序列化(Serialize)、反序列化(Deserialize)

    C#中的序列化和反序列化,序列化是.NET运行时环境用来支持用户定义类型的流化的机制