javaScript实现的 数据库
薛鹏飞
2023-12-01
1、LokiJS
LokiJS一个基于JavaScript实现、轻量级的面向文档的数据库,其目的是把JavaScript对象作为文档,然后再进行存储,并且以同样的方式来检索数据。 LokiJS可以运行于Node.js和所有支持JavaScript的浏览器、移动应用程序上。LokiJS支持字段索引来实现更快的文件访问,性能也相当好(近50万OPS/ s)。其内置的DynamicView类也能用于数据子集的索引,达到更快的性能。LokiJS支持集合,很像MongoDB,并将数据以JSON格式保存到硬盘上,所以你的数据是可移植的。 LokiJS目前还处在alpha阶段。源码托管在Github上。
2、PouchDB
PouchDB是一个一个JavaScript与HTML5实现的浏览器端开源数据库,基于Apache 2.0开源协议,代码托管在GitHub上,完全兼容CouchDB同步协议,它可以运行在浏览器中,使用 HTML5 IndexedDB API 访问浏览器的底层存储引擎(如 Firefox 的 SQLite 和 Chrome 的 LevelDB)。PouchDB的数据存储、处理方式受到了Apache CouchDB的启发。PouchDB项目的目标是帮助开发者构建线上和线下都能很好地使用的Web应用程序 在应用程序离线的时候,可以将用户数据保存在本地;当恢复在线状态时,通过CouchDB和其他相兼容的服务器来同步这些数据。
3、IndexedDB
随着浏览器的处理能力不断增强,越来越多的网站开始考虑,将大量数据储存在客户端,这样可以减少用户等待从服务器获取数据的时间。
现有的浏览器端数据储存方案,都不适合储存大量数据:cookie不超过4KB,且每次请求都会发送回服务器端;Window.name属性缺乏安全性,且没有统一的标准;localStorage在2.5MB到10MB之间(各家浏览器不同)。所以,需要一种新的解决方案,这就是IndexedDB诞生的背景。
通俗地说,IndexedDB就是浏览器端数据库,可以被网页脚本程序创建和操作。它允许储存大量数据,提供查找接口,还能建立索引。这些都是localStorage所不具备的。就数据库类型而言,IndexedDB不属于关系型数据库(不支持SQL查询语句),更接近NoSQL数据库。
IndexedDB具有以下特点键值对储存、异步、支持事务、同域限制、储存空间大、支持二进制储存等。IndexedDB是本地数据库储存标准,能让Web应用程序离线使用,它将能改进Google Docs等应用程序的离线使用与编辑功能。
目前,Chrome 27+、Firefox 21+、Opera 15+和IE 10+支持这个API,但是Safari完全不支持。
4、TaffyDB
TaffyDB 是一个免费开源的 JavaScript 库,以Web 2.0和 Ajax为中心的轻薄数据库应用。其代码托管在GitHub上,它在Web2.0与Ajax应用程序中扮演数据访问层的"角色"。它你可以把它想像成是浏览器的一个SQL数据库。它提供了强大的数据库功能,用于在 Web 上实现一个轻量级的数据访问层,也就是一个简单的数据库。大大改善了你在Javascript中使用数据的方式。主要特点易于与当前主要Ajax libraries(YUI、JQuery、Dojo、Prototype、EXT)结合使用。提供增/删/改/读,排序,循环,高级查询等功能。其大小只有10k左右。github网址:
5、MinDB
MinDB是国内高中生编写的一个开源JavaScript数据库,它提供一个标准的存储接口(Store Interface)和 Redis 风格的 API,你可以在任何 JavaScript 环境中使用。MinDB提供了多数据操作的多种方法,如set对指定键设置数据, mset批量对指定键设置数据 get获取指定键的值、mget批量获取指定键的值、strlen获取指定键值的长度等等。
在 Github 上的项目主页是:https://github.com/iwillwen/mindb
在微博上看 @大城小胖 推了一个开源项目:MinDB,可以在JavaScript中对应用数据进行存储和操作。作者甘超阳(@Wen_小问)是广州石门中学的高中生,1996年出生。他还是2012年沪JS的演讲者,在图灵社区有一个《Node.js高级程序设计》的写作项目。
ndb数据库的javascript实现ndb4js、类 SQL 数据库jSQL 、基于 Google V8 JavaScript 引擎构建的 NoSQL 数据库Redis-v8 、非常松散的结构化数据库TheBigDB