V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xss
V2EX  ›  数据库

有没有类似 SQLite 的 NoSQL 数据库?

  •  
  •   xss · 2017-03-01 21:19:07 +08:00 · 3750 次点击
    这是一个创建于 2858 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求如下:

    1. 0 配置.
    2. 数据库文件为单文件, 考走文件即意味着考走数据库.
    3. 有较为丰富的语言支持(C/C++/Python/JavaScript etc.)

    看了一下, 好像目前市面上并没有这种方案.

    第 1 条附言  ·  2017-03-02 11:30:59 +08:00
    好吧, 貌似有歧义, 我再说明一下:

    1. 数据库文件需要是单文件(其实和 sqlite 没关系, 只不过用 sqlite 举个例子, sqlite 的最终库文件就是一个单文件)
    2. 不需要部署任何支持(下面朋友说的 BDB 需要 erlang)和服务, 拿过来就用(比如 py 里面 import sqlite 之后直接用就可以了)
    3. NoSQL 类型数据库, 最好是 document oriented (例如 mongo 这种使用 json 为基础数据格式的)

    上面的需求主要是一下场景:

    比如我要写个 wiki, 此 wiki 只限于很小范围内使用, 而且文章数量在 3000 篇以内.
    同时又要支持文章内容检索.

    我主要是想直接 cp 工程目录直接用就行了(例如我用 nodejs 写这个 wiki, cp 过去直接 npm 就搞定了), 不需要搭 mysql/mongo/nginx/php 之类的服务了.
    49 条回复    2017-03-02 18:34:24 +08:00
    phx13ye
        1
    phx13ye  
       2017-03-01 21:31:35 +08:00   ❤️ 3
    kindjeff
        2
    kindjeff  
       2017-03-01 21:55:14 +08:00
    可是 SQLite 是关系型数据库啊~
    changwei
        3
    changwei  
       2017-03-01 22:00:17 +08:00 via Android
    这个问题是钓鱼吗? sqlite 明明是关系型数据库啊!
    changwei
        4
    changwei  
       2017-03-01 22:01:13 +08:00 via Android
    单文件,可以考走数据库,并且具有丰富语言支持,除了第三点有点麻烦,其他的需求,微软的 access 可以做到。
    lcsoft
        5
    lcsoft  
       2017-03-01 22:02:57 +08:00   ❤️ 1
    unqlite 可以,但第三点不太符合。
    fzleee
        6
    fzleee  
       2017-03-01 22:03:15 +08:00   ❤️ 1
    redis ?貌似满足楼主的三个需求
    RE
        7
    RE  
       2017-03-01 22:11:05 +08:00
    json 可以吗……
    wind3110991
        8
    wind3110991  
       2017-03-01 22:25:34 +08:00
    除了 redis ,还能想到其他?

    1.除了第一条,基本都满足
    2.rdb 烤走带走数据
    3.支持几乎所有主流语言客户端

    然而, 0 配置,你能列举一个给我吗
    这样的数据库是没有任何意义的
    Muninn
        9
    Muninn  
       2017-03-01 22:26:04 +08:00
    单文件数据库因为没有服务端
    相当于每个语言要完全实现一遍
    使用场景又少
    性能注定不好
    还不如自己用自己的语言写个内存结构异步持久化
    所以注定是找不到这样的东西的啦
    linpf
        10
    linpf  
       2017-03-01 22:27:19 +08:00
    @kindjeff
    @changwei

    题主的意思是像 SQLite 那样单文件存储的数据库,方便传输和保存。
    jininij
        11
    jininij  
       2017-03-01 22:30:27 +08:00 via Android   ❤️ 1
    这和 sqlite 是不是 nosql 有什么关系?
    『有没有和旺财一样蠢的狗』
    和『有没有和旺财一样蠢的人』是一个意思么。
    RIcter
        12
    RIcter  
       2017-03-01 22:30:46 +08:00   ❤️ 3
    你们语文都怎么学的..
    fuxiaohei
        13
    fuxiaohei  
       2017-03-01 22:33:59 +08:00
    boltdb
    vultr
        14
    vultr  
       2017-03-01 22:43:40 +08:00
    Berkeley DB
    billlee
        15
    billlee  
       2017-03-01 23:24:24 +08:00
    你把 SQLite 当成 key-value 数据库来用就行了
    wellsc
        16
    wellsc  
       2017-03-01 23:42:24 +08:00
    redis.dump
    holmesabc
        17
    holmesabc  
       2017-03-01 23:56:16 +08:00
    leveldb.
    polythene
        18
    polythene  
       2017-03-02 01:17:49 +08:00
    Rocksdb ,生产中有使用
    beginor
        19
    beginor  
       2017-03-02 07:13:42 +08:00 via Android
    db4o
    loading
        20
    loading  
       2017-03-02 07:47:43 +08:00 via Android
    Sqlite 能当 kv 库用。可能很多 api 没有,但是都不是必须的。
    owt5008137
        21
    owt5008137  
       2017-03-02 08:18:08 +08:00 via Android
    直接用 leveldb 或者 rocksdb 呗
    iloveyou
        22
    iloveyou  
       2017-03-02 08:40:39 +08:00   ❤️ 7
    看这个帖子真感觉目前 v2 用户智商下降的厉害
    dsg001
        23
    dsg001  
       2017-03-02 08:48:51 +08:00
    目前用 sqlite 做 kv 库,很多不爽,但胜在小巧方便
    BOYPT
        24
    BOYPT  
       2017-03-02 09:08:44 +08:00   ❤️ 1
    起码 unqlite 有楼主举例的 C/C++/Python/JavaScript 的绑定实现了……
    xdeng
        25
    xdeng  
       2017-03-02 09:10:09 +08:00
    tabris17
        26
    tabris17  
       2017-03-02 09:19:35 +08:00
    berkeley db
    mudone
        27
    mudone  
       2017-03-02 09:28:49 +08:00
    BDB
    lijinma
        28
    lijinma  
       2017-03-02 09:32:29 +08:00
    没看懂题目的人,你确定你看了题目了?
    incompatible
        29
    incompatible  
       2017-03-02 09:38:57 +08:00 via iPhone   ❤️ 1
    一些时间之前有一个几乎一模一样的帖子,供楼主参考一下
    https://www.v2ex.com/t/293540

    顺便建议一下请你下次发帖之前可不可以先搜索一下是否同样的问题已经有答案了?
    xss
        30
    xss  
    OP
       2017-03-02 11:40:50 +08:00
    @BOYPT
    @Muninn
    @RE
    @RIcter
    @beginor
    @billlee
    @changwei
    @dsg001
    @fuxiaohei
    @fzleee

    多谢各位关注, 发现有的人明白我的意思了, 有的人没明白. 没有明白的人看一下我的 append 吧.
    目前来看, 最为满足条件的就是这货了:
    https://unqlite.org/

    单文件, 无服务进程, 0 配置, API 支持的语言还算可以. 最主要的是 document oriented, 正好满足存放文章的需求.

    kv 型的数据库用来做快速索引还不错, 但是无法满足我存文章的这个场景. 不过见识了很多没见过的 kv 型数据库. 又涨姿势了....
    xss
        31
    xss  
    OP
       2017-03-02 11:44:51 +08:00
    @wind3110991 sqlite 不就是 0 配置么, 我就是小规模数据, 性能根本就不是我需要考虑的问题. python 里面,直接 import sqlite, 然后写 sql 语句就行了.
    enenaaa
        32
    enenaaa  
       2017-03-02 12:05:35 +08:00
    你这个需求 sqlite 就很好,用其他不太成熟、流行的系统, 后期反而可能各种坑。
    loading
        33
    loading  
       2017-03-02 12:12:02 +08:00 via Android
    其实我不知道为什么楼主一定要用 nosql 。
    建议直接用 sqlite ,我一直在用。

    我真的很难理解前几楼的语文水平。

    我一直没开始用 nosql 也是没找到在小规模使用场景下,比 sqlite 方便的。
    loading
        34
    loading  
       2017-03-02 12:14:54 +08:00 via Android
    目前我用 golang 配合 sqlite ,真正实现了 cp 部署。
    jianzhiyao020
        35
    jianzhiyao020  
       2017-03-02 12:17:24 +08:00
    access(手动滑稽
    nilai
        36
    nilai  
       2017-03-02 12:23:44 +08:00 via iPhone
    txt 记事本。 逃。。。。。。。。。。。。
    yalay
        37
    yalay  
       2017-03-02 13:01:07 +08:00
    也推荐 bolt db
    ikaros
        38
    ikaros  
       2017-03-02 13:31:12 +08:00
    程序内置的 map, 程序结束之前把 map dump 出来,下次启动读取进去
    21grams
        39
    21grams  
       2017-03-02 14:00:39 +08:00
    sql 数据库也可以当 nosql 来用
    scipio
        40
    scipio  
       2017-03-02 14:03:56 +08:00 via Android
    zhicheng
        41
    zhicheng  
       2017-03-02 15:25:39 +08:00
    楼主说的这个叫 Embedded database

    https://en.wikipedia.org/wiki/Embedded_database
    ctftemp
        42
    ctftemp  
       2017-03-02 16:08:39 +08:00
    直接用文件存 json 。。。完美满足需求。
    Michaelssss
        43
    Michaelssss  
       2017-03-02 16:27:20 +08:00
    简单来说。。。因为这个需求可以化简成两部,建立一个 Map ,然后序列化它。。。。= =
    rppig42
        44
    rppig42  
       2017-03-02 17:14:56 +08:00
    json+1
    j4fun
        45
    j4fun  
       2017-03-02 17:20:15 +08:00
    分析一个我们公司在用的,比较冷门的 kyotocabinet 不过不是 NOSQL
    xss
        46
    xss  
    OP
       2017-03-02 18:23:57 +08:00
    @enenaaa
    @loading

    实在不行只能 sqlite 了.

    golang 太屌....直接静态了, cp 部署无压力....
    xss
        47
    xss  
    OP
       2017-03-02 18:24:57 +08:00
    @ikaros 你这个方案, 程序一崩溃, 所有的增量操作都丢了.....到头来还得想办法持久化....
    xss
        48
    xss  
    OP
       2017-03-02 18:26:27 +08:00
    @Michaelssss 所以...搜索的时候得配合 grep...? Orz
    再或者我用 kv 存个倒排索引...然后支持搜索也可以......
    xss
        49
    xss  
    OP
       2017-03-02 18:34:24 +08:00
    @j4fun 这个, 的确很冷门~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1022 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 19:26 · PVG 03:26 · LAX 11:26 · JFK 14:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.