木叉博客


  • 首页

  • 归档

  • 搜索

如何在没有服务器的情况下拥有云数据库服务?

时间: 2023-11-07 字数: 1292 字 阅读: 3分钟 阅读次数:

对于资金充裕的人来说,这个问题根本就不是问题,因为直接买就完事了。但是对于资金紧张的人来说,比如刚毕业的大学生、比如现在的我(虽然我现在还有两台服务器没到期,但是到期之后我应该不会续费了),在没有服务器的情况下拥有云数据库服务,可以为自己带来很多便利。

我的解决方案是使用免费的云存储平台,并且在程序中使用本地文件存储方案来代替云数据库,比如 Sqlite。

云存储平台

我自己用的云存储平台是坚果云,主要是因为这个平台用得比较多,而且在现在的公司网络里可以直接访问坚果云。

首先创建一个专门用于存储数据的目录,我自己创建的目录名叫 v.assistant.data,我给自己写了一个助手类程序,用于做一些事项的记录以及帮我抉择晚餐该吃什么,我把这个程序的数据全部放在了 v.assistant.data 这个目录下。

在此,我建议把创建好的目录同步到系统盘根目录,对于 windows 就是 c:\xxxx,对于其他类 unix 系统则是 /xxxx,因为这样在程序中就可以直接通过 /xxxx 来访问该目录,而不用根据不同平台、不同电脑来改变路径了。

本地文件存储方案

说到这个,大家第一时间想到的肯定是 Sqlite,这是一个通用的解决方案,因为几乎所有语言都支持 Sqlite,并且也会有比较好的配套类库,比如基于 Sqlite 的 ORM 框架 。

或者基于本地文件的嵌入式 NoSQL 类库 作为本地文件存储方案。

但是我自己所使用的是自己开发的一个类库 V.Talog.Mapper ,该类库主要是基于之前开发的标签化日志类库,由于突然想要试试看能不能加上 ORM 支持,将这个类库作为数据库使用,所以就尝试写了 V.Talog.Mapper 这个类库。结果令我自己还挺满意的,主要是因为我所设想的内容都能较好地实现出来,虽然这个类库看起来不像其他主流的 ORM 类库,性能大概率也不怎么样,但是对我来说刚好合适,而且顺手,因为这个类库的每一行代码都是我自己写的,我很清楚所有的运行逻辑。

V.Talog.Mapper

  1. 首先创建一个实体类

    [Index(Name = "record")]
    public class Record
    {
        public string Id{get;set;}
    
        [Tag(Name = "type")]
        public int Type{get;set;}
    
        [Tag(Name = "tag")]
        public string Tag{get;set;}
    
        public string Title{get;set;}
    
        public string Remark{get;set;}
    
        public DateTime CreateTime{get;set;}
    
        public DateTime UpdateTime{get;set;}
    
        public DateTime Deadline{get;set;}
    
        public bool Done{get;set;}
    
        public bool IsValid{get;set;}
    
        public long DataVersion{get;set;}
    }
    

    Index 特性用于标识 Record 类的数据将会被存储于 record 数据目录下

    Tag 特性用于标识哪些字段是作为数据标签的,标签在 V.Talog 中可以理解为是传统数据库中的索引,当然这其中肯定是完全不一样的,但是这么解释比较容易理解。

  2. 接着需要在程序启动时,对 V.Talog 进行一定的初始化操作。

    using var talogger = new Talogger();
    talogger.Config.DataPath = "/v.assistant.data";
    TaloggerExtension.SetIndexMapping(new TypeMapper());
    

    第一行初始化了 Talogger 对象,对于程序来说,只需要创建一个 Talogger 对象即可。

    第二行配置了一下数据存储路径,正如前面所说,对我这个程序来说数据路径就是 /v.assistant.data,如果未指定数据路径,默认为 ./data。

    第三行是用于告知 V.Talog index 下每个字段的数据类型,在 V.Talog.Mapper 中,只需要创建 TypeMapper 的实例就行,TypeMapper 会扫描程序中所有带有 [Index] 特性的类,并解析、保存下这些类每一个字段的数据类型。

    完成以上三步即完成了程序的初始化,可以开始使用 V.Talog 进行存储、读取数据了。

  3. 存储数据则较为简单,只需要创建实体类实例,然后调用 Talogger 的 Save 方法即可。

    var record = new Record();
    talogger.Save(record);
    
  4. 查询数据其实也比较方便,只是需要知道如何写出规范(对于 V.Talog 来说)的查询语句,这部分在 V.Talog 项目文档中有提到,感兴趣可以了解一下。

    var records = talogger.Query<Record>("type == 1", "Id == 'xxxxxx'");
    

最后,看一下目前我的程序存储到坚果云中的数据

以及程序的数据展示

#云存储# #V.Talog#
QQ扫一扫交流

标题:如何在没有服务器的情况下拥有云数据库服务?

链接:/post/how-to-use-db-with-no-server/

作者:Venyo Wong

声明: 本博客文章除特别声明外,均采用 CC BY-NC-SA 3.0许可协议,转载请注明出处!

创作实属不易,如有帮助,那就打赏博主些许茶钱吧 ^_^
WeChat Pay

微信打赏

Alipay

支付宝打赏

自制单机日志解决方案 7. 使用 Talog 记录应用日志
Venyo Wong

Venyo Wong

Hou tui, wo yao kai shi zhuang bi le.

26 日志
0 分类
23 标签
GitHub
友情链接
© 2010 - 2024 木叉博客
Powered by - Hugo v0.120.4 / Theme by - NexT
Storage by Github / 闽ICP备2023011022号-2
0%