轻量级数据库,Android系统中的SQLite数据库是如何使用的
轻量级数据库,Android系统中的SQLite数据库是如何使用的详细介绍
本文目录一览: C#开源轻量级对象数据库NDatabase介绍[1]
前言
NDatabase是一个易于使用的 NET对象数据库 为了避免关系数据库带来的开销 可以尝试用NDatabase NDatabase是新一代的面向对象数据库 个原生的 NET数据库持久层 它的主要特征有
·简单 NDatabase非常简单 很容易学习上手使用 它API是简单 不需要学习任何数据库映射技术 不需要对象和存储持久层之间的映射 NDatabase以最简单的方式存储对象 不需要安装和管理
·小 NDatabase 运行时小于 Kb 部署程序的时候 很容易集成到 NET应用程序中去
·安全健壮 NDatabase支持ACID事务处理 保证数据的完整性 即使在硬件故障的情况下 所有的提交工作都会应用到数据库 在下一次启动的时候自动执行
·单一数据库文件 NDatabase使用单一的文件存储所有的数据 包括元数据 对象 索引等
·生产率 NDatabase使用很少的代码来进行数据持久化 不需要映射 因此 开发人员可以专注于业务逻辑的实现 而不是在数据持久层浪费时间
NDatabase入门
基础设置
NDatabase中所有的数据库引擎设置都在OdbConfiguration类中 如BTree Validation 和BTree index degree的设置都在这个类里面 打开日志的设置也在这个类里面 NDatabase提供了默认的日志类实现 ConsoleLogger 可以使用OdbConfiguration类中的EnableConsoleLogger方法进行设置 实现好自定义的日志类后 还需要进行注册RegisterLogger方法 才能够使用
OdbConfiguration RegisterLogger(new Log NetLogger())
使用索引
使用IOdb接口的IndexManagerFor方法可以为指定类型添加索引 如
using (var odb = OdbFactory Open( index ndb ))
{
var fields = new[] { Name };
odb IndexManagerFor
() AddUniqueIndexOn( nameIndex fields)
odb IndexManagerFor
() AddIndexOn( nameIndex new[] { Result })
}
使用事务
NDatabase可以使用事务来保证数据的完整性(ACID:原子性 一致性 隔离性 持久性) 当一个NDatabase被打开后 将会自动创建一个会话 包含一个特殊的当前事务对象 这个事务对象实例管理当前所有的数据和数据操作行为
内存数据库模式
NDatabase可以将数据库所有数据直接加载到内存中 直接使用OdbFactory方法的 OpenInMemory即可
关于触发器
要增加一个触发器 首先要建立一个实现了Trigger 接口()的类 该接口有 种可用的类型(InsertTrigger UpdateTrigger SelectTrigger DeleteTrigger) 如
public class MyTrigger : InsertTrigger
{
public override bool BeforeInsert(object obj)
{ return true; }
public override void AfterInsert(object obj OID oid)
{ }
}
在使用过程中 打开数据库后 要注册触发器 才能使用
var mage = new Mage( Merlin )
var myTrigger = new MyTrigger()
using (var odb = OdbFactory Open( inserting_trigger db ))
{
odb TriggerManagerFor
() AddInsertTrigger(myTrigger)
odb Store(mage)
}
lishixinzhi/Article/program/net/201311/16138
请问个人使用,哪种数据库比较好?
选择数据库的最佳选择取决于您的需求和使用场景。以下是几种常见的数据库类型及其特点:
关系型数据库(例如 MySQL、Oracle):适用于数据结构固定、需要事务支持的场景,例如财务系统、订单系统等。
NoSQL 数据库(例如 MongoDB、Redis):适用于数据结构不固定、需要高可扩展性和高性能的场景,例如社交媒体应用、实时数据分析等。
图形数据库(例如 Neo4j):适用于需要对数据进行复杂的关系分析的场景,例如社交网络、知识图谱等。
时间序列数据库(例如 InfluxDB):适用于处理时间序列数据,例如 IoT(物联网)数据、日志数据等。
如果您需要个人使用数据库,您可以考虑一些免费的数据库,例如 MySQL、PostgreSQL、SQLite 等。这些数据库具有较高的可靠性、安全性和扩展性,并且易于使用和学习。此外,这些数据库有许多第三方工具和库可以帮助您快速构建和管理数据库。
对于个人使用而言,选择哪种数据库主要取决于你的需求和使用场景。以下是一些常用的数据库及其特点:
MySQL:开源免费,适合小型项目和网站,易于使用,具有广泛的社区支持和资源。
PostgreSQL:开源免费,适合大型项目和企业应用,功能强大,支持高级特性,例如完整的事务处理和高级查询语言。
SQLite:轻量级的嵌入式数据库,不需要独立的服务器,适合小型应用和移动设备应用。
Microsoft SQL Server:商业数据库,适合在Windows环境下使用,具有强大的功能和高性能。
Oracle:商业数据库,适合大型企业应用,功能非常强大,但价格昂贵。
在选择数据库时,可以考虑以下因素:
数据库的类型和功能是否满足你的需求。
数据库的性能是否满足你的要求。
数据库的可靠性和安全性是否得到保障。
数据库的易用性和可维护性如何。
数据库的成本是否合理。
综合考虑以上因素,你可以选择适合自己使用的数据库。
嵌入式数据库是什么区块数据管理工具?
嵌入式数据库是“轻量级”区块数据管理工具。嵌入式数据库是轻量级的,独立的库,没有服务器组件,无需管理,一个小的代码尺寸,以及有限的资源需求。在运行时,它们需要较少的内存;它们是使用精简代码编写的,对于嵌入式设备,其速度更快,效果更理想。
同样一段数据存sqlite和存文件哪个更省内存
同样一段数据存sqlite和存文件不能比较哪个更省内存。文件存储是利用JAVA的I/O流,将数据以文件的形式存储在本地。SQLite是一种轻量级的数据库,其核心思想和一般的数据库差不多,各自有自身的优点。
LiteDB,一个用纯C#实现的轻量级文档数据库
LiteDB 是一个用 Dotnet 实现的小型快速轻量级的 NoSQL 嵌入式文档数据库,主要有以下特点:
LIteDB 安装非常简单,因为其实现就是一个 DLL 文件,因此只需要将这个 DLL 拷贝到你项目的 Bin 文件夹并添加为引用即可。当然,更推荐的方式是通过 Nuget 安装。
首先创建一个普通的 C# 类
然后,连接数据库,进行插入或者更新操作
经过多次迭代,LiteDB 现在到了 5.0 大版本了,已经非常成熟了。我自己在一个个人笔记软件里使用了 LiteDB ,感觉非常好用,强烈推荐。项目地址:https://github.com/mbdavid/LiteDB
LowDB 轻量级 JSON 本地数据库
作为轻量级的本地存储方式,对于构建不依赖服务器的小型项目,用LowDB存储和管理数据是十分理想的选择。在Nodejs, Electron and browser等一些小型项目中经常能看到LowDB的身影。
https://github.com/typicode/lowdb
npm install lowdb
或者:
yarn add lowdb
const low = require('lowdb');
const FileSync = require('lowdb/adapters/FileSync'); // 有多种适配器可选择
const adapter = new FileSync('db.json'); // 申明一个适配器
const db = low(adapter);
db.defaults({posts: [], user: {}, count: 0})
.write();
db.get('posts')
.push({id: 1, title: 'lowdb is awesome'})
.write()
db.set('user.name', 'typicode')
.write()
db.update('count', n => n + 1)
.write()
运行程序会在项目中添加db.json文件,里面存储了添加的数据:
{
"posts": [
{
"id": 1,
"title": "lowdb is awesome"
}
],
"user": {
"name": "typicode"
},
"count": 1
}
lowdb是基于lodash构建的,所以可以使用任何lodash强大的函数,比如: _.get() 和 _.find(),并且可以串联地使用:
db.get('users')
.find({sex: 'male'})
.value()
函数 功能
low(adapter) 返回一个具有特定属性和功能的 lodash chain
db.[...].write() / .value() 写 / 读数据
db.getState() / .setState() 获取 / 设置数据库的状态
db._ 数据库lodash的实例,可以利用这个添加自己的函数或者第三方的mixins,比如lodash-id
db._.mixin({
second: function(array) {
return array[1]
}
})
db.get('posts')
.second()
.value()
针对lowdb自带的适配器:FileSync、FileAsync 和 LocalBrowser,有以下可选参数:
defaultValue: 文件不存在时的默认值;
serialize/deserialize: 写之前和读之后的操作。
const adapter = new FilSync('db.json',{
serialize: (data) => encrypt(JSON.stringify(data)),
deserialize: (data) => JSON.parse(decrypt(data))
})
可以直接使用lodash的函数进行查询。需要注意的是有些操作可能会导致原数据被修改,为了避免这种误操作,需要使用 .cloneDeep(),操作都是惰性的,只有调用 .value()或 .write()后才会正式执行。
检查users是是否存在
db.has('users')
.value()
设置users
db.set('users', [])
.write()
排序、选择
db.get('users')
.filter({sex: 'male'})
.sortBy('age')
.take(5)
.value()
获取特定字段
db.get('users')
.map('name')
.value()
获取数量
db.get('users')
.size()
.value()
获取特定信息
db.get('users[0].name')
.value()
更新信息
db.get('users')
.find({name: 'Tom'})
.assign({name: 'Tim'})
.write()
删除信息
db.get('users')
.remove({name: 'Time'})
.write()
移除属性
db.unset('users.name)
.write()
深拷贝
db.get('users')
.cloneDeep()
.value()
可以使用 shortid 和 lodash-id 为数据库中的每一条记录创建唯一的id索引,然后通过id检索操作记录:
const shortid = require('shortid')
const postId = db
.get('posts')
.push({ id: shortid.generate(), title: 'low!' })
.write()
.id
const post = db
.get('posts')
.find({ id: postId })
.value()
const lodashId = require('lodash-id')
const FileSync = require('lowdb/adapters/FileSync')
const adapter = new FileSync('db.json')
const db = low(adapter)
db._.mixin(lodashId)
// We need to set some default values, if the collection does not exist yet
// We also can store our collection
const collection = db
.defaults({ posts: [] })
.get('posts')
// Insert a new post...
const newPost = collection
.insert({ title: 'low!' })
.write()
// ...and retrieve it using its id
const post = collection
.getById(newPost.id)
.value()
low( ) 函数接受自定义的Adapter
class MyStorage {
constructor() {
// ...
}
read() {
// Should return data (object or array) or a Promise
}
write(data) {
// Should return nothing or a Promise
}
}
const adapter = new MyStorage(args)
const db = low(adapter);
==============================================
英文官网介绍,更加简洁
Lowdb 3 is a pure ESM package. If you're having trouble importing it in your project, please read this.
You can use TypeScript to type check your data.
You can also add lodash or other utility libraries to improve lowdb.
For CLI, server and browser usage, see examples/ directory.
Lowdb has two classes (for asynchronous and synchronous adapters).
Calls adapter.read() and sets db.data .
Note: JSONFile and JSONFileSync adapters will set db.data to null if file doesn't exist.
Calls adapter.write(db.data) .
Holds your db content. If you're using the adapters coming with lowdb, it can be any type supported by JSON.stringify .
For example:
Adapters for reading and writing JSON files.
In-memory adapters. Useful for speeding up unit tests.
Synchronous adapter for window.localStorage .
Adapters for reading and writing text. Useful for creating custom adapters.
If you've published an adapter for lowdb, feel free to create a PR to add it here.
You may want to create an adapter to write db.data to YAML, XML, encrypt data, a remote storage, ...
An adapter is a simple class that just needs to expose two methods:
For example, let's say you have some async storage and want to create an adapter for it:
See src/adapters/ for more examples.
To create an adapter for another format than JSON, you can use TextFile or TextFileSync .
For example:
Lowdb doesn't support Node's cluster module.
If you have large JavaScript objects ( ~10-100MB ) you may hit some performance issues. This is because whenever you call db.write , the whole db.data is serialized using JSON.stringify and written to storage.
Depending on your use case, this can be fine or not. It can be mitigated by doing batch operations and calling db.write only when you need it.
If you plan to scale, it's highly recommended to use databases like PostgreSQL or MongoDB instead.
几个不错的免费MySQL管理工具_MySQL
bitsCN.com MySQL以其简单易用,功能强大赢得了很多开发人员的喜爱,伴随Web 2.0浪潮,MySQL也正经历着前所未有的黄金时段,使用各种精心设计的工具来管理MySQL数据库要比单纯使用传统的方法轻松得的多,开发人员应该不断寻找那些能够缩短开发时间的工具。 但笔者一直在寻找一款满意的MySQL管理工具,并且要是开源或免费,因此诞生了本文,笔者为本文起名为:10个最好的免费MySQL管理工具,但是编者认为世上之物,没有最好,只有更好。不过笔者介绍的几款免费的MySQL管理工具还是很好的,希望这些工具能帮助开发人员和MySQL数据库维护人员简化工作,提高效率。 一、MySQL Workbench MySQL Workbench是一个由MySQL开发的跨平台、可视化数据库工具。它作为DBDesigner4工程的替代应用程序而备受瞩目。MySQL Workbench可以作为windows、linux和OS X系统上的原始GUI工具,它有各种不同的版本,你可以查看下面的链接以获得它的版本信息。 二、phpMyAdmin phpMyAdmin是一款免费的、用PHP编写的工具,用于在万维网上管理MySQL,它支持MySQL的大部分功能。这款含有用户界面的软件能够支持一些最常用的操作(比如管理数据库、表格、字段、联系、索引、用户、许可,等等),同时你还可以直接执行任何SQL语句。 它所具备的特性: >直观的Web界面 >支持大多数MySQL功能: > 浏览和丢弃数据库、表格、视图、字段和索引 >创建、复制、删除、重命名以及更改数据库、表格、字段和索引 >维护服务器、数据库以及表格,能对服务器的配置提出建议 >执行、编辑和标注任何SQL语句,甚至批量查询 >管理MySQL用户以及用户权限 >管理存储的过程(stored procedures)和触发器(triggers) >从CSV 和 SQL文件格式中导入数据 >能够以多种格式导出数据:CSV、SQL、XML、PDF、ISO/IEC 26300等 >管理多台服务器 >为数据库布局创建PDF图表 >使用Query-by-example (QBE)创建复杂的查询 >在数据库中进行全局搜索,或者在数据库的子集中进行搜索 >用预定义的函数把存储的数据转化成任何格式 >还具有其他更多特性... 三、Aqua Data Studio 对于数据库管理人员、软件开发人员以及业务分析师来说,Aqua Data Studio是一个完整的集成开发环境(IDE)。它主要具备了四个方面的功能:1)数据库查询和管理工具;2)一套数据库、源代码管理以及文件系统的比较工具;3)为Subversion(SVN)和CVS而设计了一个完整的集成源代码管理客户端;4)提供了一个的数据库建模工具(modeler),它和最好的独立数据库图表工具一样强大。 四、SQLyog SQLyog是一个全面的MySQL数据库管理工具(/‘GUI’/'Frontend‘)。 它的社区版(Community Edition)是具有GPL许可的免费开源软件。这款工具包含了开发人员在使用MySQL时所需的绝大部分功能:查询结果集合、查询分析器、服务器消息、表格数据、表格信息,以及查询历史,它们都以标签的形式显示在界面上,开发人员只要点击鼠标即可。此外,它还可以方便地创建视图和存储过程,最近几周笔者一直在反复使用这个功能。 五、MYSQL Front 这个MySQL数据库的图形GUI是一个“真正的”应用程序,它提供的用户界面比用PHP和HTML建立起来的系统更加精确。因为不会因为重载HTML网页而导致延时,所以它的响应是即时的。如果供应商允许的话,你可以让MySQL-Front直接与数据库进行工作。如果不行,你也只需要在发布网站上安装一个小的脚本即可。登录信息会存储在你的硬盘上,因此你不必再登录到不同的网络界面上了。 六、mytop mytop是一款基于控制台的工具(不是GUI),用于监视线程以及MySQL 3.22.x、3.23.x和4.x服务器的整体性能。它可以在大多数安装了Perl、DBI以及 Term::ReadKey的Unix系统上(包括Mac系统OS X)运行。如果你安装了Term::ANSIColor,你能得到彩色的视图。如果你安装了Time::HiRes,你还可以得到一个不错的 “每秒查询数” 实时统计。mytop0.7版甚至还能在windows上运行。 mytop的灵感来自系统监视工具“top”。我经常在Linux、FreeBSD和Solaris上使用top,你很可能会在mytop中注意到来自这些操作系统的某些特性。mytop连接到MySQL服务器之后,能定期运行SHOW PROCESSLIST和SHOW STATUS命令,并以一种有用的格式总结从这些命令中所获得的信息。 七、Sequel Pro Sequel Pro是一款管理MAC OSX数据库的应用程序,它可以让你直接访问本地以及远程服务器上的MySQL数据库,并且支持从流行的文件格式中导入和导出数据,其中包括SQL、CSV 和XML等文件。最初,Sequel Pro只是开源CocoaMySQL工程的一个分支。部分特性如下: >你很容易就可以建立起一个到Mac电脑本地MySQL服务器的连接 >它具有全部的表格管理功能,包括索引。 >支持MySQL视图 >它使用多窗口功能,能够立即支持多个数据库或表格 八、SQL Buddy SQL Buddy是一个强大的轻量级Ajax数据库管理工具。它非常易于安装,你只需要把文件夹解压到服务器里就行了,这再简单不过了!你还可以进行常见的绝大部分操作。这个工具还有许多有用的快捷键,你可以从这里查看:SQL Buddy Keyboard Shortcuts. 九、MySQL Sidu MySQL Sidu是一款免费的MySQL客户端,它通过网络浏览器来运行,非常容易上手!Sidu这几个字母表示Select(选择)、Insert(插入)、Delete(删除)和Update(更新)。Sidu其实还有更多的功能,它看起来更像MySQL前端软件的GUI而不是网页。 >SIDU支持SQL选择、插入、删除,更新功能。 >SIDU支持在浏览器上工作,如Firefox、IE、Opera、Safari、Chrome等等。 >SIDU看起来像MySQL前端软件的GUI而不是网页。 >SIDU可以跟MySQL、Postgres 和SQLite DBs一起工作。 十、Navicat Lite MySQL Admin Tool Navicat是一款快速、可靠的数据库管理工具,很受大家的欢迎。Navicat专门用来简化数据库管理并且减少管理成本,它旨在满足数据库管理人员、数据库开发人员以及广大中小企业的需要,它有一个很直观的GUI,可以让你安全便捷的创建、组织、访问以及分享信息。 对于MySQL来说,Navicat工具是一个强大的数据库管理和开发工具。它可以跟任何版本的MySQL数据库服务器(3.21版或者以上版本)一起工作,并且支持MySQL大多数最新的功能,包括Trigger、Stored Procedure、Function、Event, View和 Manage User等。Navicat Lite可以免费下载,但是仅适用于非商业活动。 bitsCN.com
Android系统中的SQLite数据库是如何使用的
Android系统中的SQLite数据库是如何使用的?SQLite数据库是Android系统中最常用的数据库,它可以方便地存储和管理数据,使得开发者可以轻松地在应用程序中实现数据持久化。本文将介绍Android系统中如何使用SQLite数据库。1.创建SQLite数据库要使用SQLite数据库,首先需要创建一个数据库。可以使用SQLiteOpenHelper来创建数据库。SQLiteOpenHelper是一个抽象类,它提供了四个方法:onCreate:当数据库第一次创建时调用。在这个方法中,开发者可以执行创建表等操作。onUpgrade:当数据库升级时调用。在这个方法中,开发者可以执行更改表结构等操作。onOpen:当数据库被打开时调用。getWritableDatabase和getReadableDatabase:分别返回可读写和只读的SQLiteDatabase对象。2.执行SQL操作可以使用SQLiteDatabase对象来执行SQL操作。可以执行一些简单的SQL操作,例如插入、更新、删除和查询等。插入数据:SQLiteDatabasedb=mHelper.getWritableDatabase();ContentValuesvalues=newContentValues();values.put(name,张三);db.insert(user,null,values);更新数据:SQLiteDatabasedb=mHelper.getWritableDatabase();ContentValuesvalues=newContentValues();values.put(name,李四);db.update(user,values,id=?,newString[]{String.valueOf(1)});删除数据:SQLiteDatabasedb=mHelper.getWritableDatabase();db.delete(user,id=?,newString[]{String.valueOf(1)});查询数据:SQLiteDatabasedb=mHelper.getReadableDatabase();Cursorcursor=db.query(user,null,null,null,null,null,null);while(cursor.moveToNext()){intid=cursor.getInt(cursor.getColumnIndex(id));Stringname=cursor.getString(cursor.getColumnIndex(name));}3.使用ContentProvider管理数据在Android系统中,ContentProvider是一个重要的组件,可以用来管理数据。可以通过ContentProvider让其他应用程序访问应用程序的数据。要创建ContentProvider,需要继承ContentProvider类,并实现query、insert、update和delete方法。在这些方法中,开发者可以执行查询、插入、更新和删除操作。总结:使用SQLite数据库要分为三步:创建数据库、执行SQL操作和使用ContentProvider管理数据。SQLite数据库是Android系统中最常用的数据库之一,它是一个轻量级的数据库,非常适合在移动设备上使用。开发者可以使用SQLite数据库来存储用户数据、缓存数据等。使用SQLite数据库可以帮助开发者轻松地实现数据持久化,提高应用程序的稳定性和效率。
什么是轻量级数据库
SQLite和H2也算是吧。
轻量级内存数据库,是一个较新的研究领域,目前对轻量级内存数据库还没有权威、公认的定义。其主要特点是其主拷贝或“工作版本”常驻内存。