菜鸟随意写写,欢迎斧正,高手勿喷。

2013-03-31_122325

写在前面:

动车抢票插件让GITHUB网站进入了更多人的视野,使用GITHUB搭建博客的人也更多了。

Octopress,jekyll等博客程序推陈出新,静态数据的简单程序似乎有一股复兴的味道。

不论使用纯文本(Plain Text)、二进制文件(Binary)、Xml、Json、MarkDown或者其他格式的哪一种,大致都可以归纳为静态储存。

准备用静态储存写一个小程序,收集了一点资料和比较,希望可以帮助到后来的人。


审时度势

静态储存的优势:

  1. 持续化存储,不依赖数据库软件环境,方便迁移任何环境。如果你的程序使用上面提到的任何一种方法进行数据存储,那么迁移的时候只需要打包全部移动,数据就跟过来了。
  2. 数据内容比较简单,数据比较独立,单条数据操作相对安全。
  3. 数据响应时间快,不需要经过层层传递,包括软件层(同源数据库)和硬件层(非同源数据库)。
  4. 数据和程序耦合性强,数据冗余少,尤其二进制存储时。

静态储存的劣势:

  1. 相对于使用正规数据库的软件程序,静态储存如果需要保持数据一致的话,多台主机或者网站数据一致性保持比较麻烦,需要把所有的静态文件都同步。
  2. 数量级过大,数据查询和维护不易。数量级过大,文件不能全部加载到内存中进行操作,尤其是没有索引的静态文件,查询和批量更新有效率问题。
  3. 静态存储如果保持多台主机数据一致,需要牺牲硬盘空间。(感觉量级比较小,可以接受。)
  4. 数据和程序耦合性强,导致数据和程序扩展会麻烦一点。
  5. 不确定的文件数量是否会引起的硬盘性能下降。
  6. 纯静态文件的话,内容一经展示,就不再保密。

文艺复兴,关于TXTDB

说到静态储存,首当其冲的应该是文本储存。不论你是写什么出生,应该都使用过文本储存数据的方式吧。

前些年,TXTDB很火的时候,资源还是蛮多的,但是现在活下来的程序貌似不多了,很可惜。

下面有一些看起来还是不错的TXTDB程序。(截至本文的时间):


JSON储存

虽然XML+XSL在完全的内容结构分离上有极大的优势,但是JSON因为数据传输量更加少而代替前者涌入了人们的视线。

JSON的兴起,或多或少和WEB2.0以及前端这些个名词有些关系吧,扯远了,回归主要话题。

使用JSON储存的话,由于有对象的概念,内容十分易于扩展。

但是由于强调KV,需要定义过多关系,来确定每一个键值的含义。

  • JSON说明:http://www.json.org/json-zh.html
  • PHP函数:json_encode/json_decode
  • 相关文档:[http://cn2.php.net/manual/en/book.json.php](http://cn2.php.net/manual/en/book.json.php) (PHP 5 >= 5.2.0, PECL json >= 1.2.0) 

XML存储

前些年跨平台终端的利器,尤其搭配XSL的展示,数据内容华丽分离。

  • PHP函数: xml_parser_create (PHP 4, PHP 5) 
  • 相关文档:[http://cn2.php.net/manual/en/book.xml.php](http://cn2.php.net/manual/en/book.xml.php) 经典例子:早些年的射手字幕网  

二进制

使用二进制可以最大化节约静态储存消耗的硬盘空间,但是会因为固定的结构体影响程序扩展(其实也不是事…)

byte级的CPU消耗和文本处理的CPU消耗待比较。 


MarkDown

markdown成于html,但是并非为html而生。

优秀的标记语法,良好的可读性以及多种语言的转换工具,让markdown现在炙手火热,只需要一个markdown parser类就可以使用markdown来进行文本储存。

你可以看看下面这货:

http://nebm.ist.utl.pt/~glopes/discount/doc/Discount/MarkdownDocument.html


  To be continued