谁用二进制文件代替过数据库存储数据

BINDINGMONEY 2013-01-16 01:43:10
最近做东西说要用二进制文件在后头存储信息,我问为什么不用数据库,上面说是数据库配置太麻烦,我说那可以用文件形数据库啊,ACCESS和SQLITE都行啊,但是上面说还是要用二进制,二进制快捷,升级版本可扩展,
难道二进制比数据库还快捷,做个增删改查都没办法,一个自增长都搞半天,问题太多,越到后面暴露问题越多,读写文件代码都不上千行,因为还有上面有符号 无符号,字符串 整形,相当于增加封装了一个数据库。
真是没办法!
...全文
307 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
codinghello 2013-01-16
  • 打赏
  • 举报
回复
见过这种类似的二进制文件存储,不过都是老技术了,一般这种文件都很大,有很多超过1g的。采取索引+二进制的格式。文件开头是索引,索引里能得到从多少字节到多少字节是什么数据等。然后使用一般就是打开文件,直接读索引,然后直接根据索引读取多少个字节。我感觉这种做法不如数据库方便。
isjoe 2013-01-16
  • 打赏
  • 举报
回复
二进制+结构
gxingmin 2013-01-16
  • 打赏
  • 举报
回复
数据量大的话,而且频繁访问,那建议用access吧
BINDINGMONEY 2013-01-16
  • 打赏
  • 举报
回复
引用 2 楼 gxingmin 的回复:
数据量大吗?不大的话用二进制文件也行 估计你们头为用户着想,不想用户麻烦还需要安装数据库,或者你们头不想别人看到你们的数据,原因很多... 就像一些词典软件一样,用的也不是数据库,因为用户不需要配置,而且字典数据保密
引用 1 楼 lye2000000_super 的回复:
那就得搞定上面才行。。。
但是那些输入法它不需要像用户展示啊,比如前台有个datagrid,文件量很大二进制文件很快吗
gxingmin 2013-01-16
  • 打赏
  • 举报
回复
词霸、有道、各种输入法。。。 好多用的都不是数据库
gxingmin 2013-01-16
  • 打赏
  • 举报
回复
数据量大吗?不大的话用二进制文件也行 估计你们头为用户着想,不想用户麻烦还需要安装数据库,或者你们头不想别人看到你们的数据,原因很多... 就像一些词典软件一样,用的也不是数据库,因为用户不需要配置,而且字典数据保密
  • 打赏
  • 举报
回复
那就得搞定上面才行。。。
§2.7 空间数据的设计、建立和维护 一、空间数据的设计 数据因不同的应用要求会有各种各样的组织形式。数据的设计就是根据不同的 应用目的和用户要求,在一个给定的应用环境中,确定最优的数据模型、处理模式、存 贮结构、存取方法,建立能反映现实世界的地理实体间信息之间的联系,满足用户要求 ,又能被一定的DBMS接受,同时能实现系统目标并有效地存取、管理数据数据。简 言之,数据设计就是把现实世界中一定范围内存在着的应用数据抽象成一个数据的 具体结构的过程。 空间数据的设计是指在现在数据管理系统的基础上建立空间数据的整个过程 。主要包括需求分析、结构设计、和数据层设计三部分。 1、需求分析 需求分析是整个空间数据设计与建立的基础,主要进行以下工作: 1)调查用户需求:了解用户特点和要求,取得设计者与用户对需求的一致看法。 2)需求数据的收集和分析:包括信息需求(信息内容、特征、需要存储数据)、信息加 工处理要求(如响应时间)、完整性与安全性要求等。 3)编制用户需求说明书:包括需求分析的目标、任务、具体需求说明、系统功能与性能 、运行环境等,是需求分析的最终成果。 需求分析是一项技术性很强的工作,应该由有经验的专业技术人员完成,同时用户 的积极参与也是十分重要的。 在需求分析阶段完成数据源的选择和对各种数据集的评价 2、结构设计 指空间数据结构设计,结果是得到一个合理的空间数据模型,是空间数据设计的 关键。空间数据模型越能反映现实世界,在此基础上生成的应用系统就越能较好地满足 用户对数据处理的要求。 空间数据设计的实质是将地理空间实体以一定的组织形式在数据系统中加以表 达的过程,也就是地理信息系统中空间实体的模型化问题。主要过程是见图2-7-1。 1)概念设计 概念设计是通过对错综复杂的现实世界的认识与抽象,最终形成空间数据系统及 其应用系统所需的模型。 具体是对需求分析阶段所收集的信息和数据进行分析、整理,确定地理实体、属性 及它们之间的联系,将各用户的局部视图合并成一个总的全局视图,形成独立于计算机 的反映用户观点的概念模式。概念模式与具体的DBMS无关,结构稳定,能较好地反映用 户的信息需求。 表示概念模型最有力的工具是E-R模型,即实体- 联系模型,包括实体、联系和属性三个基本成分。用它来描述现实地理世界,不必考虑 信息的存储结构、存取路径及存取效率等与计算机有关的问题,比一般的数据模型更接 近于现实地理世界,具有直观、自然、语义较丰富等特点,在地理数据设计中得到了 广泛应用。(图2-7-2) 2)逻辑设计 在概念设计的基础上,按照不同的转换规则将概念模型转换为具体DBMS支持的数据 模型的过程,即导出具体DBMS可处理的地理数据的逻辑结构(或外模式),包括确定数 据项、记录及记录间的联系、安全性、完整性和一致性约束等。导出的逻辑结构是否与 概念模式一致,能否满足用户要求,还要对其功能和性能进行评价,并予以优化。 从E—R模型向关系模型转换的主要过程为: 确定各实体的主关键字; 确定并写出实体内部属性之间的数据关系表达式,即某一数据项决定另外的数据项 ; 把经过消冗处理的数据关系表达式中的实体作为相应的主关键字 根据 、 形成新的关系。 完成转换后,进行分析、评价和优化。 3)物理设计 物理设计是指有效地将空间数据的逻辑结构在物理存储器上实现,确定数据在介 质上的物理存储结构,其结果是导出地理数据存储模式(内模式)。主要内容包括确 定记录存储格式,选择文件存储结构,决定存取路径,分配存储空间。 物理设计的好坏将对地理数据的性能影响很大,一个好的物理存储结构必须满足 两个条件:一是地理数据占有较小的存储空间;二是对数据的操作具有尽可能高的处 理速度。在完成物理设计后,要进行性能分析和测试。 数据的物理表示分两类:数值数据和字符数据。数值数据可用十进制或二进制形式 表示。通常二进制形式所占用的存贮空间较少。字符数据可以用字符串的方式表示,有 时也可利用代码值的存贮代替字符串的存储。为了节约存贮空间,常常采用数据压缩技 术。 物理设计在很大程度上与选用的数据管理系统有关。设计中应根据需要,选用系 统所提供的功能。 4)数据层设计 大多数GIS都将数据按逻辑类型分成不同的数据层进行组织。数据层是GIS中的一个 重要概念。GIS的数据可以按照空间数据的逻辑关系或专业属性分为各种逻辑数据层或专 业数据层,原理上类似于图片的叠置。例如,地形图数据可分为地貌、水系、道路、植 被、控制点、居民地等诸层分别存贮。将各层叠加起来就合成了地形图的数据。在进行 空间分析、数据处理、图形显示时,往往只需要若干相应图层的数据数据层的设计一般是按照数据的专业内容和类型进行的。数据的专业内容的类型通 常是数据
1.redis支持的数据结构 string list hash set zset(基本回答) 加分项:另外redis还对这几种数据结构做了扩展,如GEO对位置计算,hyperLogLog做统计,bitmaps:redis底层存储value值都是存储二进制数据,redis提供bitmaps(位图)可以直接访问或修改底层存储二进制数据 2.redis线程模型 redis是单线程实现。 3.redis 提供的持久机制 redis 支持rdb和aof两种持久机制,redis4.0后支持混合持久化。rdb是定时的持久机制,宕机有可能会丢失最后一次持久化之后存在数据丢失。aof是基于操作日志追加的持久机制。(基本回答) 加分项: 1.rdb持久化原理 原理是redis会单独创建(fork)一个与当前进程一模一样的子进程来进行持久化, 这个子线程的所有数据(变量。环境变量,程序程序计数器等)都和原进程一模一样,会先将数据写入到一个临时文件中, 待持久化结束了,再用这个临时文件替换上次持久化好的文件 2.他什么时候fork子进程,或者什么时候触发rdb持久化机制 shutdown时,如果没有开启aof,会触发 配置文件中默认的快照配置 执行命令save或者bgsave save是只管保存,其他不管,全部阻塞 bgsave: redis会在后台异步进行快照操作,同时可以响应客户端的请求,但是在调用fork函数时是阻塞的,很快,可以忽略不计 执行flushall命令 但是里面是空的,无意义 3.aof原理? 原理是将Reids的操作日志以追加的方式写入文件,读操作是不记录的 2.触发机制(根据配置文件配置项) no:表示等操作系统进行数据缓存同步到磁盘(快,持久化没保证) always:同步持久化,每次发生数据变更时,立即记录到磁盘(慢,安全) everysec:表示每秒同步一次(默认值,很快,但可能会丢失一秒以内的数据) 以下问题都是基本回答: 4.redis支持事务吗 redis可以说是半支持事务(假事务),提供了一些在一定程度上支持线程安全和事务的命令。例如:multi/exec watch inc等。但是redis的事务并不支持回滚,即可以两个命令可以同时提交执行,但是如果有失败,成功的也不会回滚 5.你们公司使用的是什么集群模式 看你写的项目经验,如果你们公司数据量特别大,公司用缓存牛逼,就说Rediscluster,小公司可以说哨兵集群 1.哨兵模式 基本回答:哨兵主要就是启动哨兵(redis特殊)节点,对主节点进行监控,如果半数以上发现ping主节点不通了,认为主节点挂了,则进行故障转移,就是选出一个从节点代替主节点 2.Rediscluster集群模式 基本回答:Rediscluster是一个高可用集群,它基于分片(对key进行crc16,然后对16384取余)的原理,可以把他理解为是由多组哨兵集群组成,但是它不依赖哨兵 6.缓存穿透 缓存穿透指的是使用不存在的key进行大量的高并发查询,这导致缓存无法命中,每次请求都要穿透到后端数据系统进行查询,数据压力过大。 常用解决方案:将空值缓存起来。 其他解决方案:使用布隆过滤器(guava 19开始已支持布隆过滤器) 备注:如果你可以理解太白老师讲的基于redis位图自己实现的布隆过滤器,可以说说,更加分 7.缓存击穿 缓存击穿是指缓存中没有但数据中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据去取数据,引起数据压力瞬间增大,造成过大压力 解决方案:1.互斥锁 如果项目不会多部署则可以使用jvm锁,如果会多部署则使用分布式锁 8.缓存雪崩 缓存雪崩指缓存服务器重启或者大量缓存集中在某一个时间段内失效 常用解决办法: 1.主要就是要搭建高可用集群,保证机器的高可用。 2.对不同的数据使用不同的失效时间,甚至对相同的数据、不同的请求使用不同的失效时间。

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧