返回信息流一直在慢慢学编程,还是比较白,有一事不明向编程大拿请教[em17]
一般而言,最方便的存储程序输出数据的方案是什么?
可能不能一概而论,那就大致分为三类:
- 最小规模(数十行);
- 较小规模(数百行);
- 小规模(数千至数万行);
数据的存储与管理
===
以前编程的时候,经常直接把需要存档的数据写入一个文本文档,以后需要的时候再用脚本语言进行简单处理。在做物理实验的时候发现,许多上位机软件的数据存储也是纯文本文档的。
现在编的程序比以前复杂一点,有时需要最简单的键值结构或者表结构,这时感觉文本文档有些力不从心,一来写入格式设计不好容易混乱,二来增删查改有点繁琐。有时用文本文档有时用csv,都不够方便。
学过一点数据库和SQL语言,但没用过现代的数据库,也不知道有哪些适合于这种小规模数据的轻量级数据库,并且多语种适用的(比较懒想在这方面一劳永逸)
希望大大们指点!谢谢[em17]
@fuxuemingzhu @cocoyimasa
这是一条镜像帖。来源:北邮人论坛 / cpp / #97795同步于 2018/6/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
【问题】如何存取程序输出的小规模数据
yo1995
2018/6/26镜像同步11 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
我讲一讲自己的做法吧,可能也不是太好。
一般如果只是普通的打印中间的结果,会直接print大法,这个时候如果需要把输出导入文件,那么用>重定向生成纯文本文件。这个结果一般只是用来看的,不用来分析。
像格式化的数据,生成csv是挺靠谱的。这个也只能保存纯文本的,一般适合数据处理结果的保存。一般做数据挖掘比赛用这个格式。
如果含有挺多文本的,或者数据量特别大的时候,再或者不需要把全部数据加载到内存中进行分析的,使用数据库。比如爬过论坛和BT都是这么保存到了Mysql。
保存模型的话像上面这些方法就不好办了,python里面我一般都存成pickle了。现在封装了通用的类,只要传进来任何对象都转成pickle存储,特别方便。
像你说的键值对,我觉得可以修改成json格式,然后保存成文本。保存和加载都比较容易,包括网络通信也方便。
基本就这样吧。一点点经验,和大家交流一下。
轻量级数据库可以考虑mongodb,读写速度都很快。mongodb非常适合键值对的数据结构存储。非常简单易学,增删改查简单明了。而且支持的编程语言很多。
感觉比较适合你的应用场景。
谢谢谢谢!学习了
【 在 fuxuemingzhu 的大作中提到: 】
: 我讲一讲自己的做法吧,可能也不是太好。
: 一般如果只是普通的打印中间的结果,会直接print大法,这个时候如果需要把输出导入文件,那么用>重定向生成纯文本文件。这个结果一般只是用来看的,不用来分析。
: 像格式化的数据,生成csv是挺靠谱的。这个也只能保存纯文本的,一般适合数据处理结果的保存。一般做数据挖掘比赛用这个格式。
: ...................
谢谢,我去了解一下!
【 在 cocoyimasa 的大作中提到: 】
: 轻量级数据库可以考虑mongodb,读写速度都很快。mongodb非常适合键值对的数据结构存储。非常简单易学,增删改查简单明了。而且支持的编程语言很多。
: 感觉比较适合你的应用场景。
没有标准。各种格式、工具各有所长。可以考虑:纯文本、ini文件、csv、xml、json、yaml,以及自定义的二进制格式、bson,还有简单的数据库:sqlite、derby、h2,还有比较大的比如mongodb、couchdb、mariadb、postgresql、还有各种商业的数据库产品。
暖神还在啊,感觉好久没出现了
如果是python的话,小数据库可以是sqlite,懒得建表可以存csv,不规则数据json.dump。C++一般只写过算法,这种实用型技术栈不了解
就是这个答案,看需求,可能sqlite更实用一些。
【 在 nuanyangyang 的大作中提到: 】
: 没有标准。各种格式、工具各有所长。可以考虑:纯文本、ini文件、csv、xml、json、yaml,以及自定义的二进制格式、bson,还有简单的数据库:sqlite、derby、h2,还有比较大的比如mongodb、couchdb、mariadb、postgresql、还有各种商业的数据库产品。