不同类型的数据如何存放到服务器返回的数据类型上

接下来要好好总结一些知识,秋招来啦。。。虽然有好多知识都不大会,但是还是要努力一下,运气这种东西,谁知道呢~
h5之前,存储主要是用cookies。cookies缺点有在请求头上带着数据,大小是4k之内。主Domain污染。
主要应用:购物车、客户登录
对于IE浏览器有UserData,大小是64k,只有IE浏览器支持。
解决4k的大小问题
解决请求头常带存储信息的问题
解决关系型存储的问题
1.本地存储localstorage
存储方式:
以键值对(Key-Value)的方式存储,永久存储,永不失效,除非手动删除。
每个域名5M
支持情况:
注意:IE9&localStorage不支持本地文件,需要将项目署到服务器,才可以支持!
检测方法:
if(window.localStorage){
alert('This browser supports localStorage');
alert('This browser does NOT support localStorage');
常用的API:
getItem //取记录
setIten//设置记录
removeItem//移除记录
key//取key所对应的值
clear//清除记录
存储的内容:
数组,图片,json,样式,脚本。。。(只要是能序列化成字符串的内容都可以存储)
2.本地存储sessionstorage
HTML5 的本地存储 API 中的 localStorage 与 sessionStorage 在使用方法上是相同的,区别在于 sessionStorage 在关闭页面后即被清空,而 localStorage 则会一直保存。
3.离线缓存(application cache)
本地缓存应用所需的文件
使用方法:
①配置manifest文件
&!DOCTYPE HTML&
&html manifest="demo.appcache"&
Manifest 文件:
manifest 文件是简单的文本文件,它告知浏览器被缓存的内容(以及不缓存的内容)。
manifest 文件可分为三个部分:
①CACHE MANIFEST&- 在此标题下列出的文件将在首次下载后进行缓存
②NETWORK&- 在此标题下列出的文件需要与服务器的连接,且不会被缓存
③FALLBACK&- 在此标题下列出的文件规定当页面无法访问时的回退页面(比如 404 页面)
完整demo:
CACHE MANIFEST
/theme.css
/html/ /offline.html
服务器上:manifest文件需要配置正确的MIME-type,即 "text/cache-manifest"。
&mime-mapping&
&extension&manifest&/extension&
&mime-type&text/cache-manifest&/mime-type&
&/mime-mapping&
核心是applicationCache对象,有个status属性,表示应用缓存的当前状态:
0(UNCACHED)&:& 无缓存, 即没有与页面相关的应用缓存
1(IDLE)&:&闲置,即应用缓存未得到更新
2 (CHECKING)&:&检查中,即正在下载描述文件并检查更新
3 (DOWNLOADING)&:&下载中,即应用缓存正在下载描述文件中指定的资源
4 (UPDATEREADY)&:&更新完成,所有资源都已下载完毕
5 (IDLE)&:& 废弃,即应用缓存的描述文件已经不存在了,因此页面无法再访问应用缓存
相关的事件:
表示应用缓存状态的改变:
checking : 在浏览器为应用缓存查找更新时触发
error&:&在检查更新或下载资源期间发送错误时触发
noupdate : 在检查描述文件发现文件无变化时触发
downloading : 在开始下载应用缓存资源时触发
progress:在文件下载应用缓存的过程中持续不断地下载地触发
updateready : 在页面新的应用缓存下载完毕触发
cached : 在应用缓存完整可用时触发
Application Cache的三个优势:
① 离线浏览
② 提升页面载入速度
③ 降低服务器压力
注意事项:
1.&浏览器对缓存数据的容量限制可能不太一样(某些浏览器设置的限制是每个站点 5MB)2. 如果manifest文件,或者内部列举的某一个文件不能正常下载,整个更新过程将视为失败,浏览器继续全部使用老的缓存3. 引用manifest的html必须与manifest文件同源,在同一个域下4.&浏览器会自动缓存引用manifest文件的HTML文件,这就导致如果改了HTML内容,也需要更新版本才能做到更新。
5. manifest文件中CACHE则与NETWORK,FALLBACK的位置顺序没有关系,如果是隐式声明需要在最前面
6. FALLBACK中的资源必须和manifest文件同源7. 更新完版本后,必须刷新一次才会启动新版本(会出现重刷一次页面的情况),需要添加***版本事件。8. 站点中的其他页面即使没有设置manifest属性,请求的资源如果在缓存中也从缓存中访问9. 当manifest文件发生改变时,资源请求本身也会触发更新
离线缓存与传统浏览器缓存区别:
1. 离线缓存是针对整个应用,浏览器缓存是单个文件
2. 离线缓存断网了还是可以打开页面,浏览器缓存不行
3. 离线缓存可以主动通知浏览器更新资源
关系数据库,通过SQL语句访问
Web SQL 数据库 API 并不是 HTML5 规范的一部分,但是它是一个独立的规范,引入了一组使用 SQL 操作客户端数据库的 APIs。
支持情况:
&Web SQL 数据库可以在最新版的 Safari, Chrome 和 Opera 浏览器中工作。
核心方法:
①openDatabase:这个方法使用现有的数据库或者新建的数据库创建一个数据库对象。
②transaction:这个方法让我们能够控制一个事务,以及基于这种情况执行提交或者回滚。
③executeSql:这个方法用于执行实际的 SQL 查询。
打开数据库:
var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024,fn);
//openDatabase() 方法对应的五个参数分别为:数据库名称、版本号、描述文本、数据库大小、创建回调
执行查询操作:
var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
db.transaction(function (tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS WIN (id unique, name)');
插入数据: 
var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
db.transaction(function (tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS WIN (id unique, name)');
tx.executeSql('INSERT INTO WIN (id, name) VALUES (1, "winty")');
tx.executeSql('INSERT INTO WIN (id, name) VALUES (2, "LuckyWinty")');
读取数据:
db.transaction(function (tx) {
tx.executeSql('SELECT * FROM WIN', [], function (tx, results) {
var len = results.rows.length,
msg = "&p&查询记录条数: " + len + "&/p&";
document.querySelector('#status').innerHTML +=
for (i = 0; i & i++){
alert(results.rows.item(i).name );
由这些操作可以看出,基本上都是用SQL语句进行数据库的相关操作,如果你会MySQL的话,这个应该比较容易用。
5.IndexedDB
索引数据库 (IndexedDB) API(作为 HTML5 的一部分)对创建具有丰富本地存储数据的数据密集型的离线 HTML5 Web 应用程序很有用。同时它还有助于本地缓存数据,使传统在线 Web 应用程序(比如移动 Web 应用程序)能够更快地运行和响应。
在IndexedDB大部分操作并不是我们常用的调用方法,返回结果的模式,而是请求&&响应的模式,比如打开数据库的操作
这样,我们打开数据库的时候,实质上返回了一个DB对象,而这个对象就在result中。由上图可以看出,除了result之外。还有几个重要的属性就是onerror、onsuccess、onupgradeneeded(我们请求打开的数据库的版本号和已经存在的数据库版本号不一致的时候调用)。这就类似于我们的ajax请求那样。我们发起了这个请求之后并不能确定它什么时候才请求成功,所以需要在回调中处理一些逻辑。
关闭与删除:
function closeDB(db){
db.close();
function deleteDB(name){
indexedDB.deleteDatabase(name);
数据存储:
indexedDB中没有表的概念,而是objectStore,一个数据库中可以包含多个objectStore,objectStore是一个灵活的数据结构,可以存放多种类型数据。也就是说一个objectStore相当于一张表,里面存储的每条数据和一个键相关联。
我们可以使用每条记录中的某个指定字段作为键值(keyPath),也可以使用自动生成的递增数字作为键值(keyGenerator),也可以不指定。选择键的类型不同,objectStore可以存储的数据结构也有差异。 
这个就有点复杂了。看这里的教程:1./dolphinX/p/3415761.html 
2./dolphinX/p/3416889.html
详细API地址:/developerworks/cn/web/wa-indexeddb/#ibm-pcon
暂时就这样,确实有些存储方式未亲身用过,也只能找些别人的资料了。先了解个大概,以后用到再详细记录吧!^_^
阅读(...) 评论()大数据整理:囊括分片、存储方法、扩展等多个方面
发表于 10:14|
来源个人博客|
作者Krishna
摘要:基于业务类型的不同,企业往往需求使用不同的技术堆栈来处理,那么在眼花缭乱的工具之中,机构又该如何选择适合业务的架构,下面一起来看Krishna的整理。
【编者按】从OLTP及OLAP到数据分片,再到扩展性及相关NoSQL盘点,Krishna在其个人博客上分享了一篇全面的大数据科普文,其中包括众多有益的链接。Krishna本身精通Java、Scala等多门语言,拥有多年的互联网开发经验。他认为,对比昂贵及很容易达到瓶颈的纵向扩展,廉价的无共享及集群架构显然更适合当下的大数据处理。以下为译文:
CSDN推荐:欢迎免费订阅《》获取更多Hadoop技术文献、大数据技术分析、企业实战经验,生态圈发展趋势。
OLTP和OLAP
1. OLTP:指的是联机事务处理,面向事务(插入、 更新、 删除和获取)的处理系统,包含了一系列的应用程序。大多数 OLTP
应用程序要更快些,因为数据库是用
设计的。OLTP 系统支持垂直扩展。
2. OLAP:指的是联机分析处理,用于业务分析、数据仓储之类的事务。数据处理很慢,因为它使用户以交互方式从多个数据源对多维数据进行分析。在
OLAP 应用程序中使用的数据库架构是
,OLAP 系统是横向扩展。
数据库体系结构的传统方式实现垂直扩展,意味着将表拆分为多列,并让他们分别在物理或逻辑上分组(树状结构),这将导致数据增长时出现性能问题。每当我们遇到性能问题,我们都需要分别增加内存、
CPU 和磁盘空间。
为了消除上述问题,数据分片或无共享概念取代纵向扩展,使用横向扩展用主从结构对数据库进行分片,然后传播给大量的可垂直扩展的服务器。更多详情可传送此
:大规模并行处理系统指的是使用大量的处理器(或单独的计算机)并行执行一套协调计算。MPP 也称为是集群计算或上文讨论过的无共享架构。
关于MPP 的案例有TeraData和
横向和纵向扩展
横向扩展是指通过将更多的机器加入到你的资源池中实现扩展,垂直扩展是指通过向现有的机器中增加更多的计算能力(CPU、 RAM)实现扩展。
在数据库领域,横向扩展通常基于数据分割,即每个节点只包含的部分数据,在垂直扩展中,数据寄存在单个节点上并通过多个核心扩展,即分散那台机器上CPU和RAM资源的之间的负载。
通过横向扩展,通过向现有池中添加更多的机器实现动态扩展通常是很容易的----垂直扩展往往局限于一台机器的性能。以下是垂直扩展和水平扩展之间的差异:
2. Greenplum:Greenplum Database是基于PostgreSQL开源技术的大规模并行处理(MPP)数据库服务器。MPP(也称为无共享结构)指的是带有两个或多个处理器联合执行一个操作的系统----每个处理器有自己的内存、操作系统和磁盘。相关链接:
3. Hbase:HBase 是 Hadoop 数据库。它是分布式的、可扩展的、大数据存储。它用来提供对大型数据库实时读取和写入的访问,使用集群(主从)体系结构来存储/检索数据。
Hadoop 是Apache软件基金会开发的用来存储大量数据开源软件。
MapReduce 用于集群(主从)上大型数据集的分布式处理。MapReduce负责任务调度、 任务监测以及重新执行一些失败的任务。Map/Reduce的首要目标是将输入的数据集分成独立的数据块并将发送到该集群。MapReduce将映射的输出排序,然后被输入到规约任务中。通常情况下,作业的输入和输出都存储在文件系统中。
Hadoop分布式文件系统((HDFS)) 的主要目标是持续地存储数据,即使在出现故障的情况下。HDFS 使用主从结构,其中一个设备(主设备)控制一个或多个其他设备
(从设备)。HDFS 集群包括实际上包含文件系统的一个或多个从设备,和管理文件系统命名空间并规定了对文件访问的主服务器。
相关链接:
相关补充问题
1.&GreenPlum 实现MPP了吗? GreenPlum 使用 Hadoop 文件系统吗?
GreenPlum vs.MPP: GreenPlum 服从 MPP(大规模并行处理) 架构。该架构在这里以使用案例的形式讨论。
GreenPlum vs. Hadoop:GreenPlum 确实可以内部使用 Hadoop。使用案例讨论在此链接中的详细的讨论了。
2. 不同的存储方法有哪些?对它们进行比较。
数据存储方法:基于行的存储、基于列的存储,详细区别请传送
NoSQL: 是描述在此链接中的详细信息。它有
数据库体积
数据结构化或存储在行中。
在事务处理、交互式事务的应用程序中使用。
稳健的、 经验证的技术来捕获中途事务。
扩展性和巨大的数据查询处理时间。
Sybase、Oracle、MySQL、DB2
Sybase、Oracle、MySQL、DB2
数据垂直分割并存储在列中。
历史数据分析、 数据仓库和商务智能。
更快地对大型数据查询 (专门特设查询)。
不适合事务、 导入导出泄露 & 庞大计算量的资源利用率。
几GB到50 TB
Info Bright、Asterdata、Vertica、Sybase IQ、Paraccel
非关系型数据库键值存储
数据以一些持久性的备份存储在内存中。
用于在缓存中存储在应用程序中经常请求的数据。
可扩展的、 更快地检索数据,支持非结构化和部分结构化的数据。
所有的数据加载到内存,不支持复杂的查询。
几 GB到几TB
Amazon S3、MemCached、Redis、Voldemort
非关系型数据库文档存储
非结构化或半结构化数据和一些 SQL 查询功能的持久性存储.
没有RDBMS 中定义的列,需要更高的性能和更好的可扩展性Web
应用程序或任何应用程序。
具有可扩展持久性存储和比键值存储更好的查询支持。
缺乏完善的查询功能。
几个TB到PB
MongoDB、CouchDB、SimpleDB
非关系型数据库列存储
非常大的数据存储,支持MapReduce。
适用于金融和网络分析的实时数据。
大数据的高吞吐率,支持分片,随机读写访问。
复杂的查询,API的可用性,响应时间。
几个TB到PB
HBase、Big Table、Cassandra
原文链接:
(编译/毛梦琪 责编/仲浩)
推荐阅读相关主题:
CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
相关热门文章

参考资料

 

随机推荐