终于完成论文初稿了,我也是醉了,接下来研究一下sqlite,边研究边记录一下。
首先说一下数据持久化的问题
数据持久化,基本上可以有四种,分别为属性列表、对象归档、sqlite3和Core Data
1.属性列表。它涉及到的主要类包括NSUserDefaults,在以后的章节中我会讲到。
2.对象归档。主要是讲对象存储到plist文件中。
3.sqlite3。这个是本次要讲到的主要内容,下面会进行详细的分析。
4.Core Data。本质上使用了sqlite,但它不需要编写任何的sql语句,不是关系型数据库(关于啥是关系型数据库,有次笔试的时候问来着,我也不知道啥意思,现在想来也是醉了,在接下来的章节中也会讲解的)
好吧,进入正题吧
这个是sqlite的官方网站https://www.sqlite.org
sqlite是一个软件库。这个库执行独立的、无服务器的、零配置的、事务性的sql数据库引擎。sqlite是世界上最被广泛应用的sql数据库引擎。sqlite是公共域的资源码。
sqlite的特征
事务性,即使系统崩溃或者电源故障,也符合原子性、一致性、隔离和耐用性(ACID)。
零配置,不需要安装和着管理。
完整的sql实现像部分索引和公共表表达式等先高级功能。(省略功能)
一个完整的数据库被存储在一个跨平台的磁盘文件中。它作为一个应用的文件类型来使用,非常的好。
支持terabyte-sized 数据库和gigabyte-sized 字符串和blobs.参看limits.html
小型代码封装:完全配置少于500KiB或者可选特性省略需要更少的字节数。
简单易用的API
用ANSI-C格式编写。包括TCL绑定。绑定其它的数十种语言分别可用。
资源代码受到好评,并且有100%的分支测试覆盖率。
可以作为一个单独的ANSI-C资源代码文件。它也十分容易编译,因此容易添加到大的工程中去。
独立性,无扩展依赖。
跨平台行:Android,*BSD,iOS,Linux,Mac,Solaris,VxWorks和Windows (Win32,WinCE,WinRT) 缺少Box的都被支持。
资源是共享的。可用于任何目的。
有一个标准独立的命令行接口(CLI)客户端能够被用于管理员管理sqlite数据库。
使用sqlite的建议
Database For The Internet Of Things(数据库用于因特网)。sqlite在手机,PDAs,MP3播放器,机顶盒和其它的电子产品中非常受欢迎的数据库引擎。sqlite占有的代码极小,充分利用内存、磁盘和磁盘带宽,是可靠度很高,并且不要求数据管理员维护的数据库。
Application File Format.(应用的文件格式)比使用fopen()写入XML、JSON、CSV或者一些特定格式的被你的应用使用的硬盘文件,使用sqlite数据库是更好的选择。可以避免编写和解析器故障排除,你的数据更容易可利用和跨平台使用,并且你的更新将是事务性的。
Website Database(网站性数据库)。因为它要求在平常的硬盘文件无配置和存储信息,作为支持中小型的网站,数据库sqlite是非常受欢迎。
Stand-in For An Enterprise RDBMS(企业关系型数据库管理系统的代替品).sqlite经常被用作企业关系型数据库管理系统演示目的或者测试目的的代替品。sqlite是快速的并且不要求进行麻烦的测试盒演示活动的设置,容易启动。
适当使用sqlite
sqlite不是直接的类似于服务器/客户端的sql类型的数据库服务器,例如MysqL,Oracle,Postgresql,或者sql Server。它是一种视图解决不同问题的的数据
。客户端/服务器端的sql数据库服务器努力实现企业数据的共享责任。它们强调可伸缩性、并发、集中和控制。sqlite努力为单独的应用和设备提供本地数据存储。sqlite强调经济、效率、可靠、独立和简单。
sqlite和客户端/服务器的数据库没有竞争,而和fopen()有竞争。
在以下情况下sqlite可以很好地工作
嵌入式设备和联网的东西
程序以文件形式
网站
数据分析
用于企业数据缓存
服务器端数据库
文件归档
代替临时磁盘文件
内部或者临时数据库
在演示或者测试替身企业数据库时
教育和实验
sql语言扩展实验
在以下的情况下,客户端/服务器关系型数据库管理系统可以更好地工作
客户端/服务器应用
大容量的网站
非常大的数据
高并发
如何判定选择正确的数据库引擎
1.数据和应用是被网络分开嘛?选择客户端/服务器
2.有许多并发的写入嘛?选择客户端/服务器
3.大数据嘛?选择客户端/服务器
4.否则选择sqlite
你们看了我的东西,如果感觉不错,转载了,不标记转载出处也没关系,我不会追究法律责任的,这样更有利于知识的流通,嘿嘿!!就这样吧!!