本人需加工数理大量文本数据,其数据的结构类似于数据库中的一张表,现在的处理方法是用HashTable一次读入到内存,但在读入几十万的数据后,就发生内存溢出。
我该如何来设计这张表的存储方式???
要求:
1. 数据的处理对速度要求很高,而且操作会很频繁。[不要用数据库形式]
2. 数据量很大,可能会有数百万这样的记录。
3. 每条记录随时都可能用到,不能将其分割。
谢谢大家帮出出主意!!!!
我该如何来设计这张表的存储方式???
要求:
1. 数据的处理对速度要求很高,而且操作会很频繁。[不要用数据库形式]
2. 数据量很大,可能会有数百万这样的记录。
3. 每条记录随时都可能用到,不能将其分割。
谢谢大家帮出出主意!!!!
解决方案 »
- java audio的问题
- javascript dom 能否转换成 java dom?具体正文……
- 字符串(格式yyyy-mm-dd hh:mm:ss)转换日期类型,急!
- IReport中如何创建sum字段?其它avg等又如何实现?
- 快速响应VS复杂处理,如何折衷?
- 为什么按下侦听键,程序没反应.
- 怎么跟我要activation key??
- JAVA中如何获得路径信息?
- JAVA新手,求教小应用程序连接ACCESS的方法?
- 大家看看http://www-900.ibm.com/developerWorks/java/l-oicq/index.shtml好不好?
- ObjectInputStream令程序停止运行
- 1+2!+3!+4!+......+N!这个算法怎么做啊?请高手帮忙,谢谢!
1.表索引的建立,以及索引空间存放的文件的位置等等
2.优化SQL语句,在Oracle(OEM),SQLServer中都有相应的工具帮助你计算你的SQL语句执行效率,主要两种:基于价值的和基于规则的优化
3.数据库的参数设置,例如Oracle的Cache,日志等分配的策略和内存等等,还有数据库的事务隔离级别等等
4.数据库的表空间的安排,不用表的表空间放在不同一个文件和放在不同文件,放在同一个分区和放在不同分区有时候对效率有很大的影响。
如用数据库的话,加工数据时会频繁的写入、修改、还要保证每条记录的唯一性,速度很慢。确实如此,但是你都读到内存里就不存在这些问题?比如,如果你想插入一条记录,你怎么做?大规模的数据移动?
再者,你怎么存储数据?每次存盘,只能是把所有数据一次写入磁盘,而数据库只需要保存更新的数据即可。
数据库都有高速缓存,不是每次查询都访问硬盘。所以很多时候速度并不慢反正使用数据库有很多好处,实在速度慢,就提高机器性能。
所以要用多文件多索引2. 数据量很大,可能会有数百万这样的记录。还是说明要多文件3. 每条记录随时都可能用到,不能将其分割。把记录排序,分类,记录不能分割但是不同记录可以存到不同文件里,不必给记录加什么abc名字
,只要排序,再分类,把hash表用成文件意义.建立树状索引,要查询的时候先查询索引文件,得到索引,索引里面是分类目录的名字,同理再一层层分层查但是还是觉得不比用数据库方便,速度也未必快.电脑性能不够用mysql,能搞java的电脑用mysql应该没问题,oracle就免了...
"加工数据时会频繁的写入、修改、还要保证每条记录的唯一性,速度很慢"
这不是数据库软件的问题,应该是程序操作数据库的方式问题
1。用B树建立索引
2。如果是你的存储有序,用计算方法实现快速定位
3。如果数据量有限,扩大你的机器内存,用hash表也行
4。退一万步,即使用数据库,不一定要大型的数据库,dbase,foxbase也是很不错的,即使unix、netware都可使用呀