V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  zzmark06  ›  全部回复第 1 页 / 共 2 页
回复总数  38
1  2  
300w 个商品,1000 个客户,sku 总计 30 亿以上,你比 amazon 规模还大。
淘宝十几年,估计也就这数量级吧
都这规模了,要不去硅谷挖几个人吧
哈哈哈哈
5 天前
回复了 seedhk 创建的主题 程序员 求一款符合需求的 Redis 开源中间件
不太长看 v2 ,许久后回复。

redis 和 db 异构,必然得面临数据不一致的问题。
redis 是 KV 型存储,没有足够的描述结构。

我们当时的方案,是有个针对的,就是只用 redis 存储 IOT 报文,业务上没有 update/delete ,纯 insert ,所以只是针对 key 设计就够了。

没有用 kafka 主要还有个问题,业务侧有明细数据查询的时效性需求,给的指标是端到端不超过 2s(从 iot 网关开始计算,实际上是不合理需求,但甲方爸爸……)。kafka 其实是守不住 2s 的,所以用了大把的 redis 写。
数据 set ,数据对应的一级索引 hset 。
设计两个 key 就行,然后有 batch 任务每隔多久来扫走并删除相应数据( redis 最多存 2 个时间窗口,batch 扫走第二个,删掉第一个)

至于你们领导的想法,那是扯淡,完全置数据复杂度于不顾。数据库不可用,两个思想方向:
1. 保证数据库高可用,既然 sql server ,那成熟的 always on 体系砸就是了。
2. 若是真的没法保证(成本因素 or 技术难题),数据库不可用就该让他不可用,保证 RPO=0(数据恢复点,就是不能丢数据不能错数据),然后才是尽量缩短 RTO(业务恢复时间)
不然,照着主库能挂然后靠 redis 来缓解,那么面临的必然是时间段内的数据不一致,
5 天前
回复了 jwh199588 创建的主题 程序员 mybatis 结果集太多导致转换对象太慢
返回 10w ,零散对象就是多。
在任何有必要优化的专门点位,使用原生 JDBC API 来针对性优化,是完全正确且合乎情理的。
所以,遇到此类问题别和框架死磕,直接动用更底层的原始 API 就好。
5 天前
回复了 readman 创建的主题 NAS 突然想不通了,做备份的意义是什么?
请参考存储的 321 原则
46 天前
回复了 seedhk 创建的主题 程序员 求一款符合需求的 Redis 开源中间件
你的第二句话,好像不太通畅。

以前我们有做过利用 redis 批量写 db 。
拿 redis 当 buffer 用。
逻辑基本是手搓的。redis 只管 SET ,定时会用 SCAN 扫,都是时序数据没有 update 。

不要问为啥不用 kafka ,甲方有安规,kafka 被卡供应了过不去。
1. 少做无用设计
2. 少造轮子。

然后分析场景:
问 1:数据收集到后,是否需要有各种处理和校验
问 2:数据接收到后,时效性要求是什么程度
问 3:数据格式是否是时序型数据,有没有高基数问题
问 4:数据收集后,用来支持什么服务

预先做几个回答
海量打点采集,时效性要求一般都很低,所以此类业务都是入队列(如 kafka ),再攒批次,写列存/写时序库。
秒 10w 行,就得看每行多大了。clickhouse 单机 16 核心写速到 200mb 没啥问题。
至于时序库,这东西有门槛,除非是场景化很强烈,不然都不太推荐选用。尤其是 prometheus/victoriametric ,一旦有高基数,资源占用很难控制。
常规来说,这类数据都是拿来做聚合分析,时序库在一些方向的分析很快,压缩比也很高;列存更通用些,也看设计。
60 天前
回复了 wildlynx 创建的主题 Windows windows11 还是个半成品
Explorer 卡死,要么是什么软件加了钩子,要么是硬件初始化比如机械盘起转
1. 设备兼容性。你不能要求用户不使用老设备,也不能要求老业务组去升级基础设施(真的会死)
2. 证书轮换,项目各种奇葩部署方式导致证书根本收不上来,难不成每 2 个月就要到七八个项目组二三十个证书轮换点挨个去轮换?
3. OCSP ,Lets encrypt 的 OCSP 经常被墙,导致 ios 用户首次请求直接寄(超时 10s )。
4. 业务多了,Lets encrypt 的免费单域名不够用,通配解析又存在分发问题(参照第二点)。
5. 安规,你以为买 OV 和 EV 只是个证书?其实买的是审查和设计。

问出这个问题,难道没赶上 Lets Encrypt 更换根证书的时候吗,证书只是运维的一个小部分,没有人天天能盯着这么多东西的。
至于说做好监控,或者自动 acme.sh ,现实情况远比梦里的复杂,你觉得是雇个人天天盯着成本低,还是直接花几千块钱买个证省下一年十几个 (人/日) 成本低。
想的话,必然是 golang ,python ,scala 。
但实际写起来,还是 java 和 nodejs 最熟悉,最终还是会选传统派

啥顺手选啥,选熟悉的,不选(政治)正确的
机器都睡眠了……
你还指望用户进程的 ssh 端口转发活着

快递小哥睡着了,还能派件吗
79 天前
回复了 crc8 创建的主题 Python 为什么 Python 会有那么多人喜欢用?
建议写 c
只会 panic
79 天前
回复了 chen0520 创建的主题 NAS diy NAS 系统一般推荐什么?
运维功底差,考虑 windows server
运维功底差,考虑咸鱼买个 黑群晖安装服务,找人代装
运维功底有些,考虑基于 debian 的 openmediavault ,全开源可控

量极大,TrueNAS ,得有运维基础,不好伺候,纯 nas 产品,最好别搞幺蛾子,连 docker 都别折腾

其余,啥都不要
问题不是一个。
1. like 优化的问题,上 ngram 分词索引,限制最短 like 字符串长度,n 越大效果越好,能效很强,n=4 情况下索引大概是 5 倍存储
楼上有 pgtrgm ,这个也是种 ngram 分词索引。
#86 说分词无法解决这种精确问题的,ngram 这种暴力分词手段专门破这种局面,

至于,ocr 的结果要模糊,记得一点,like 不是搜索,搜索要多关键词权重匹配,上 es 最简单

2. 归档数据也要查,这个自己业务上区分查询口,长期的数据归档到列存,clickhouse/doris/hive/iceberg 都行,主要是查询引擎用啥。至于速度,看表设计
哪怕用列存,like 这种场景,该上 ngram 也是要分的,无索引速度上不来必须要成为基础认知
80 天前
回复了 yuanyao 创建的主题 数据库 如何解决空数想据的缓存穿透?
实际业务,一般是交由风控 ban 了客户 ip
至于穿透,硬干的多,水文方案没见几个落地的
80 天前
回复了 perr123 创建的主题 数据库 双币种计费,数据库怎么设计
先考虑好是计费还是付费,这两个方向的账期、汇率参照点,基准值思考方向不同


计费一般来说和自身成本挂钩,是折算到某个币种上产生固定币种的账单。
预付费和后付费,账期和扣款时间点不同,一般是设计成支持负数的、带币种的钱包,
预付费是充值,后付费是先扣款到负数再充值。
结算时,该扣哪个那是业务考量

汇率按充值时间点计算,这样把汇率复杂度限定在系统边界

至于使用哪个币种,一般是按公司结算账户,或者按成本货币
要不,优化优化文档?
这文档看了不止一圈,也没搞明白 casbin 和 casdoor 咋配合使用

casdoor 的 sdk 只给了登录相关,但页面有模型配置,难不成要用 casbin-jdbc 适配器直接对接?
若是前端鉴权,难不成每个都用 API 发 enforce ?
基于 API 鉴权,前端想要拉取一个列表用于动态路由,没有接口啊。
给的五个 API 分别是,enforce, 批量 enforce ,剩下那仨到底是干啥的?

还有 casdoor 的配置,也太麻烦了,各个配置间有依赖,需要讲究顺序,但文档哪里提了这个东西,暴力的摸索半个小时过去,一套流程都没配置出来

最蠢的是,sdk 都不给 API 文档的,想知道有啥功能还得去翻源码……

加群也是跳来跳去没个回复,
@wxf666 sqlite 这属于单节点玩具 db ,对于并发性 web 服务,是跟不上用的。
并发访问,就成了两种情况,1. 串行排队,2. 程序内实现类似于 db 的 buffer cache

至于 duckdb ,这东西底层是列结构存储,读取需要解压,不适合并发访问,也不适合频繁写入。
duckdb ,和 sqlite 一样也是进程级,对于并发性 web 服务,也是一样的毛病。

#39 做的成本估算,有些细节可以调整。
OSS 和服务器的流量成本均应采纳 CDN 价格,不过按经验上看,CDN 回源也要再算,比较麻烦,流量成本占比低时没啥必要。

最优方案还是 OSS + CDN 存放 zstd 压缩后的文件。zstd 压缩使用小样本预训练词典,词典随客户端下发。
至于传输,zstd 压缩后,不要再计算 gzip 之类的量。

还有,算流量别算那么精确,oss 对于小文件有对齐,2kb 塞进去也会按 4k 计算(标准存储),而且访问 OSS 是 http 协议,头部塞了一大堆东西,几 kb 的文件算不准的。

至于整本存储,lzma 依然不是优化方案,还是首选 zstd ,新代的压缩算法几乎是全方面碾压老代。
这东西参数很多,把 level 开高压缩比不错,解压速度也可以。


当然,若是私有云自建,这方面有个优秀的方案,HBase + HDFS 。


#77 提到,sqlite 100g 1.3 亿数据,1w 随机写事务,这种测试没用,这数值是 WAL 的数值,而且是无事务写。

顺便再补个,我们做大规模爬虫类任务,是 crawl 爬后存文件丢进 DFS ,再有独立中间件提取再入库。至于入什么库就看情况了,多数是 kafka 。
再有服务消费 kafka 进行分拣、清洗、预先处理,按业务分类入业务库。
所以,什么并发写之类的都不存在。


#77 还有一个,支持多少并发写,占用资源问题。
对于 db ,mysql 也好 pg 也好,并发写并不是大批量导入的最优解,大规模数据导入是靠 batch ,而不是并行。
以我们的经验,mysql 导入 100w 行,字段 50 ,行均大小 5k 左右,单并发写速到 1w/s 不难。


至于题主,大概率是个新入行没做过项目的年轻人,脑子里想的都是不切实际的笑话,甚至还想搞 redis 缓存,也不知道缓给谁看的
oss ,唯一选择。
云上的存储单价,你拉出来列个表。
例如你说的,存到磁盘,吞吐量有多少?吞吐量能到多少?
oss 密集操作网络 IO 开销大,但你考虑过磁盘能吃多少 IOPS 吗,云上的话这个比 OSS 成本要高。
对于这类业务,OSS + CDN 是最优选择,服务器只管授信,流量走 CDN 自然分层,存储有对象存储便宜大碗。

若存储量到 pb 级,可以私有云自建,进一步降低成本。
自建 CDN 源站,存储自建分布式存储,比如 seaweedfs ,小说分块 + 压缩后,都是小文件,不适合 hdfs
95 天前
回复了 tdb11039gg 创建的主题 数据库 有没有推荐用的轻量本地数据库
非联网的单机 db ,oltp 用 sqlite ,olap 用 duckdb ,都是王者级

若是适配麻烦,postgre 也有 embed 版本,mysql 也有但很难搞不推荐,mysql 试着用 h2 平替,只是兼容性很垃圾。
95 天前
回复了 vyuai 创建的主题 数据库 问下各位大佬, 关于数据库类型 bigint
参见文档: https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html

是个历史因素,自 8.0.17 已经标记弃用,后续会移除
1  2  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1824 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 34ms · UTC 07:45 · PVG 15:45 · LAX 23:45 · JFK 02:45
Developed with CodeLauncher
♥ Do have faith in what you're doing.