V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  wxf666  ›  全部回复第 1 页 / 共 31 页
回复总数  602
1  2  3  4  5  6  7  8  9  10 ... 31  
1 天前
回复了 iamtuzi3333 创建的主题 数据库 大佬们,想请教一下数据库设计
@Mithril #36 这种普通关系型数据库,应该也没问题吧?

表结构:( 主键:《设备 ID ,毫秒时间戳》,200 个浮点数组)
1 天前
回复了 iamtuzi3333 创建的主题 数据库 大佬们,想请教一下数据库设计
@iamtuzi3333 #31

你们一天,就要存几千万行,共计 几十 GB 数据吗?


如,假设 300 设备,每设备每秒 200 单精度浮点,

算下来,一天就有 300 x 86400 = 2600W 行数据?

光是存浮点数据,共计就要 2600W x 200 x 4 / 2 ^ 30 = 19.3 GB ?
1 天前
回复了 iamtuzi3333 创建的主题 数据库 大佬们,想请教一下数据库设计
@iamtuzi3333 #24

换成一般关系数据库,你的表结构是这样吗:

( ID ,设备 ID ,毫秒时间戳,浮点数据),其中加了(设备 ID ,毫秒时间戳)索引,

你查询需求是:某设备,在某时间段内的,所有浮点数据?
4 天前
回复了 wuhao1 创建的主题 MySQL 老生常谈 关于 子查询的应用
@ldx78203199 #2

所以数据库的推荐用法,只能是当成 KV 数据库,得到数据后,再手动组装?



@sagaxu #4

不缓存应该也没事吧?

现在千元消费级固态,都能做到 100W 随机读写 / 秒( 4200 x 1024 / 4 = 107.5W ),

换句话说,数据库就算不用内存缓存,读写数据全走固态 IO ,应该也能做到几十万并发?

是这样算吗?

https://i.imgur.com/F29pmQ6.png https://i.imgur.com/F29pmQ6.png

https://i.imgur.com/uB205yf.jpeg
@lonelyparasol #23 三年前,SQLite 支持字段严格检查类型了: https://sqlite.org/stricttables.html
你自己测试好极限速度,给甲方速度保证,可以吗?


比如,几天前用 V 友的场景,测试了下速度:


Python 都能每秒 1W 写入事务,每事务记录 12 字段(几百字节) + 64 字符 唯一索引验证(这个也算读取了吧?)。

1000W 记录时,仍能 7000 TPS (六七年前的低压轻薄本上测试,[帖子及源码]( /t/1070957#reply13 ))
@JensenQian #2 升级较大的,是核显部分?两倍性能?

另外,这网站是不是屏蔽国内了。。

我记得前一段时间,可以直接访问,还有中文选项的呀。。
14 天前
回复了 tdb11039gg 创建的主题 数据库 有没有推荐用的轻量本地数据库
@tdb11039gg #22

前两天,我还见人吐槽,Python 的 *args, **kwargs (相当于支持接收一个 array 和 object )

原因是动态字段太灵活,太不严谨,文档代码对不上,后期维护太困难等问题。


我很疑惑,用 MongoDB 的,是怎么解决这些问题的呢。。

加上 json 还能字段想变就变,会不会前后期数据,字段都不统一呢。。


帖子:/t/1071840#reply91
14 天前
回复了 tdb11039gg 创建的主题 数据库 有没有推荐用的轻量本地数据库
@tdb11039gg #17


1. 请教下,存 json 的优势是什么呢?

- 增删查改方便?(如果不写 SQL ,而是用 ORM ,应该无所谓吧?)
- 物理上,这些数据聚在一块儿,查找起来速度更快?
- ……?



2. 逻辑上说,非关系能干的,关系应该都能干吧?

就是可能慢些,或其他缺陷?



3. SQLite 支持 json 增删查改聚合处理( json_* 或 jsonb_* 系列函数,或者 -> 及 ->> 操作符)

但没有 jsonPath 那样简洁的方式。。(做个插件,或者宿主语言里实现个函数给 SQLite 用也行)

比如查某帖里,某人近一年来的回复:

```sql
SELECT 回复 ->> '内容'
FROM 帖子表
JOIN json_each(回复数组) 回复
WHERE 帖子 ID = 1072404
  AND 回复 ->> '作者' == '某人'
  AND 回复 ->> '时间' >= '2023-09-13'
```

也支持对 json 字段做索引( Indexes On Expressions ),但目前不支持多值索引(如索引一个数组)。

真要实现,可以做个触发器,将数组里的差异项,更新到另一个索引里(如《帖子 ID ,回复人 ID ,楼层 or 楼层数组》索引)。



但我感觉,这些实现成一般关系表,就足够了。。
14 天前
回复了 tdb11039gg 创建的主题 数据库 有没有推荐用的轻量本地数据库
@dreamk #10

1. 有提供 Cli 版本,以及其他语言使用的库吗?

2. 支持并行写吗?





@tdb11039gg #12

SQLite 还不能满足你吗?


1. Python 都能每秒 1W 写入事务,每事务几百字节 + 64 字符 唯一索引验证。

1000W 记录时,仍能 7000 TPS 。(六七年前的低压轻薄本上测试,[源码](/t/1070957#reply13))



2. 几年前,微信说,手机上百万百字聊天记录,

搜索三个词,只需 0.0029 秒。10 秒全文索引完毕。

可无限读事务同时查询,也不影响写事务并行。

支持:拼音及首字母(自动解决多音字)和汉字任意混合、模糊(通过 NEAR )、同义词(错别字是这个原理吗?)等

([文章链接]( https://mp.weixin.qq.com/s/Ph0jykLr5CMF-xFgoJw5UQ))



3. 我测试过,在电视盒子上(单核 Nginx 默认页压测 1W QPS ,性能不及 6 年前骁龙 636 千元机一半),

Python 的 FastAPI + SQLite + 去年本站被爬的千万数据(此时 5GB 数据库):

- 200 模拟发帖回帖 + 全文索引 / 秒
- 1100 获取整帖(包括回帖者信息) / 秒
@Chinsung #6

1. 会不会多个请求,同时发现 redis 里没有,又都从 DB 读,导致多次消耗,却只有一次记录呢?

2. 感觉楼主不是关注一致性问题,而是 redis 持久性没得到保证问题。。
16 天前
回复了 saveai 创建的主题 程序员 请问如何实现大文件夹即时浏览器下载
@okakuyang #4 能不能遍历下文件,提前算好总大小,以《打包存储》形式压缩,传输过程中由 gzip 压缩呢?
16 天前
回复了 weiqk 创建的主题 Python 这几天被 Python 搞得快崩溃了
@yb2313 #6
@miaotaizi #13

动态字段,很烦人吗?

那用 MongoDB 的,是咋忍下去的。。
18 天前
回复了 shrugginG 创建的主题 MySQL mysql 小白请教大佬一个问题
感觉你的场景,用 SQLite 也挺好呀。。


## 测试结果

*(同样表结构,每次开事务插入一行再提交)*

- 100W 行,104 秒,平均约 10000 TPS ,共 360MB
- 1000W 行,1450 秒,平均约 7000 TPS ,共 3.6GB


## 环境

- CPU:i5-8250U (六七年前的低压轻薄本)
- 内存:测试时占用 14 MB
- 系统:Deepin V20 (基于 Debian 10 )
- 软件:Python 3.9
- 固态:顺序:500 MB/s 读,300 MB/s 写;随机:20 MB/s 读,64 MB/s 写


## 代码

```python
# V 站吞空格,缩进改为全角空格了

import time
import random
import hashlib
import sqlite3

ROWS_PER_INSERT = 1
ROWS_TOTAL = 1000_0000
DB_PATH = '/数据库存放路径/名称.db'

db = sqlite3.connect(DB_PATH)
db.execute('PRAGMA journal_mode = WAL')
db.execute('PRAGMA synchronous = NORMAL')
db.execute('PRAGMA wal_autocheckpoint = 10000')

db.execute('''
   CREATE TABLE IF NOT EXISTS phishtank_database (
     id          INTEGER PRIMARY KEY,
     phish_id       INT,
     url         TEXT,
     url_sha256      TEXT UNIQUE,
     phish_detail_url   TEXT,
     submission_time   DATETIME,
     verified       TEXT,
     verification_time DATETIME,
     online        TEXT,
     target        TEXT,
     created_at      DATETIME DEFAULT (datetime('now', 'localtime')),
     etag         TEXT
  )
''')

insert_sql = '''
   INSERT OR IGNORE INTO phishtank_database
  (phish_id, url, url_sha256, phish_detail_url, submission_time, verified, verification_time, online, target, etag)
   VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
'''

first_id, = db.execute('SELECT IFNULL(MAX(id), 0) + 1 FROM phishtank_database').fetchone()
for next_id in range(first_id, first_id + ROWS_TOTAL, ROWS_PER_INSERT):

   rows = []
   now = time.strftime('%Y-%m-%d %H:%M:%S')
   for phish_id in range(next_id, min(next_id + ROWS_PER_INSERT, first_id + ROWS_TOTAL)):
     url = f'https://free-{phish_id}.webadorsite.com/'
     detail_url = f'http://www.phishtank.com/phish_detail.php?phish_id={phish_id}'
     rows.append((
       phish_id, url, hashlib.sha256(url.encode('utf-8')).hexdigest(),
       detail_url, now, 'yes', now, 'yes', 'Other', random.randbytes(16).hex(),
    ))

   with db:
     db.executemany(insert_sql, rows)
```
@PopRain #10 有没有 greaterEqualThan() 啥的。。

还是叫 greaterThanOrEqualTo()。。

https://i.imgur.com/krir4IG.png https://i.imgur.com/krir4IG.png
@ty29022 #11 为嘛 / 只能是除法的意思,而不能是分隔符呢?(比如斜杠青年)

那同理,字符串拼接,也不该用 +,而是像拼接矩阵那样,[str1 str2 str3] ?

https://i.imgur.com/F29pmQ6.png https://i.imgur.com/F29pmQ6.png
21 天前
回复了 archxm 创建的主题 Android 安卓手机的性能够不够外接显示器?
如果真能替代了,厂商的低端本可咋卖呀。。
@AEnjoyable #2 如果执行完 minio.uploadfile(xxx,yyy),就突然崩了,数据是不是就不一致了
21 天前
回复了 Xrall 创建的主题 数据库 数据库查询优化到底该怎么做?
@showB1 #35 你的意思是,虽然现在消费级固态,能做到 100W 随机读写 / 秒,

但 MySQL 没能完全利用好这个资源,所以做不到?


请教一下,主要是什么方面耗时过多了呢?

- 网络 IO ?
- 等待锁?
- ……?

https://i.imgur.com/F29pmQ6.png https://i.imgur.com/F29pmQ6.png
22 天前
回复了 Xrall 创建的主题 数据库 数据库查询优化到底该怎么做?
@xuanbg #32 按理说,现在平民级固态完全做得到呀?

5000 条就算全走固态 IO ,应该 0.005 秒就好?


耗时在什么地方呢?网络 IO 吗?还是 MySQL 的锁啥的?

https://i.imgur.com/F29pmQ6.png https://i.imgur.com/F29pmQ6.png
1  2  3  4  5  6  7  8  9  10 ... 31  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   928 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 33ms · UTC 22:05 · PVG 06:05 · LAX 15:05 · JFK 18:05
Developed with CodeLauncher
♥ Do have faith in what you're doing.