JavaScript与数据库亲密接触:探索数据存储技术 (js中使用数据库数据库数据)
在当前的网站和应用程序开发中,数据存储显得尤为重要。Web应用程序不仅仅使用关系型数据库管理系统,例如MySQL和PostgreSQL,还使用NoSQL数据库,例如MongoDB和CouchDB。 JavaScript作为现代“交互式”的web语言,也参与到了这种趋势当中。
在很多年间,JavaScript相对于服务器端脚本语言(例如PHP和Ruby)被过度看作“薄脆”语言。然而,HTML5 API和Node.js的影响已经让JavaScript成为完整的堆栈一员。同时,JavaScript代表了现代数据库世界新的趋势,即JavaScript将数据存储和数据库移至浏览器端。
本文将探讨一些同JavaScript有关的存储数据的不同方式,并分析使用这些技术的场景。
之一种方式:使用浏览器缓存
没有持久化存储数据的技术比让数据“活”在内存存储中更快捷的了。浏览器缓存可以用于存储用户浏览过的页面、JavaScript代码和一些“静态”的文件。不过,缓存并不是一种完全安全的存储方法,因为它非常容易受到浏览器清除缓存的策略所影响。
一些JavaScript库,例如Store.js和jStorage,使用了local storage和session storage这两种HTML5 API,这些库可以让开发者在不依赖于服务器或cookie的情况下,存储大容量数据在浏览器中。
第二种方式:让浏览器像数据库一样存储
HTML5尝试提供一些客户端数据库功能,例如Web SQL Database API和IndexedDB API,但Web SQL Database API已被废弃。尽管如此,IndexedDB API还是目前为止最有前途的,它在客户端实现类似关系型数据库的功能。
IndexedDB API是个非常快速的存储引擎,而且它使用了类似于JavaScript面向对象的接口。这些优势对于构建现代Web应用程序非常有利,例如离线应用程序和单页程序,因为开发者可以缓存查询到的数据,而不需要服务器的直接支持。
不过,从类似MySQL的严格并发中,这个API的表现还有一段距离;同时,它的突出缺点在于它仅仅支持基础记录查询和索引操作。
第三种方式:使用NoSQL数据库
NoSQL数据库,正如我们之前所提到的,是另一个当今Web应用程序常见的存储解决方案。Node.js可以轻松地连接至许多流行的NoSQL数据库,例如MongoDB、CouchDB和Cassandra。当然,这并不意味着我们不能使用这些库来存储JavaScript对象,这样子它们使用的就是ON的语法与对象。
由于现代Web应用程序通常对规模的要求(例如一起大范围的客户端应用程序和社交网络站点),NoSQL只是JavaScrpt平台上解决学科挑战的方法之一,同时这也是最灵活的方法之一。
然而,NoSQL解决方案可能缺乏在Relational Database世界里服务器能提供的交错性的复杂查询,这是JavaScript客户端所不能完成的。
第四种方式:使用复合驱动方案
我们来说说复合驱动方案。这里讨论的是在Node.js服务器端使用Remoting Object Oriented Models(统一非常复杂,但可靠)作为存储解决方案,与在客户端使用IndexedDB进行数据存储共同协调工作的方案。
这种方案可能非常灵活,它利用了每个存储方案的优势并考虑到每个文件系统的限制。这种方式的好处在于扩展性也很好,可以同时开发客户端和服务器端应用程序。
对于JavaScript应用程序而言,存储数据对于提高应用程序性能和可伸缩性是非常重要的。本文介绍了四种不同的方法:浏览器缓存、HTML5客户端数据库API、NoSQL数据库以及基于复合驱动方案的解决方案。
当然,更好的存储方案并不一定是单一方案,而是多种方案的组合。学会将这些方案成功地集成到JavaScript应用程序中,可以让JavaScript遇到数据库时,不止是“亲密”的接触,而是实现完美融合。