首页 > 数据库 >libsql 多租户namespace模式试用

libsql 多租户namespace模式试用

时间:2025-01-18 09:00:13浏览次数:1  
标签:8181 libsql 租户 namespace db -- 0.0 db1

libsql 支持基于db 分离的多租户模式,但是需要开启namespace 能力,以下是一个简单说明以及测试

开启namepace

我基于docker-compose 部署, 目前docker 部署的缺少环境变量支持,我基于了cmd 运行,核心是--enable-namespaces

  • docker-compose
services:
  db1:
    image: ghcr.io/tursodatabase/libsql-server:latest
    entrypoint:  /bin/sqld --db-path iku.db --http-listen-addr 0.0.0.0:8080  --admin-listen-addr 0.0.0.0:8181 --grpc-listen-addr 0.0.0.0:5001 --enable-namespaces
    ports:
      - "8080:8080"
      - "8181:8181"
      - "5001:5001"
    volumes:
      - ./data1/libsql:/var/lib/sqld
  db2:
    image: ghcr.io/tursodatabase/libsql-server:latest
    entrypoint: /bin/sqld --db-path iku.db --http-listen-addr 0.0.0.0:8080 --admin-listen-addr 0.0.0.0:8181 --primary-grpc-url http://db1:5001  --enable-namespaces
    ports:
      - "8081:8080"
      - "8182:8181"
      - "5002:5001"
    volumes:
      - ./data2/libsql:/var/lib/sqld

测试

  • 创建db

基于namespace

curl  -X POST \
  'http://localhost:8181/v1/namespaces/db1/create' \
  --header 'Accept: */*' \
  --header 'Content-Type: application/json' \
  --data-raw '{}'
  • 配置host

目前对于namespace 的支持基于了dns,当然对于本地测试也支持基于路径模式的

127.0.0.1 db1.local
127.0.0.1 db2.local
  • 写入以及查询测试
// 写入

curl -d '{"statements": ["CREATE TABLE IF NOT EXISTS usersv2 (username)", "INSERT INTO usersv2 VALUES (\"alice\")"]}' http://db1.local:8080

// 查询

curl -d '{"statements": ["SELECT * FROM usersv2"]}' http://db1.local:8081

效果

说明

目前测试写入速度比较慢,可能是dns 解析处理有关系,然后分析下,同时基于路径模式的似乎也不行,可能和配置使用有关系,后边研究下

参考资料

https://github.com/tursodatabase/libsql/blob/main/docs/USER_GUIDE.md

https://github.com/tursodatabase/libsql/blob/main/docs/ADMIN_API.md

标签:8181,libsql,租户,namespace,db,--,0.0,db1
From: https://www.cnblogs.com/rongfengliang/p/18549126

相关文章