V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐工具
RoboMongo
推荐书目
50 Tips and Tricks for MongoDB Developers
Related Blogs
Snail in a Turtleneck
mlxy123123
V2EX  ›  MongoDB

MongoDB 什么量子数据库

  •  1
     
  •   mlxy123123 · 2022-06-22 16:33:30 +08:00 · 4072 次点击
    这是一个创建于 878 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在 VPS 上起了一个 MongoDB 服务,存一些爬虫抓来的数据

    结果隔三差五就会丢失一部分 collection ,代码里没查出问题,加上每天都会重抓补齐数据,就一直没管

    前两天想着还是解决一下,用 Celery 做了一个每分钟执行的任务,检查 collections 里缺少某一张表就发消息报警

    结果三天过去了,数据都没再丢了

    MongoDB 是第一个使用概率云形式存储数据的数据库吗,一直被观察就会坍缩,不观察就会逸散的

    (其实是想问问丢数据的原因,和排查的方法)

    20 条回复    2022-06-23 14:14:10 +08:00
    Envov
        1
    Envov  
       2022-06-22 16:56:22 +08:00
    薛定谔的数据库
    ClericPy
        2
    ClericPy  
       2022-06-22 17:19:08 +08:00
    果然不观察就会坍缩...

    一般稍微正经一点的公司都不会让直连数据库吧, 直接查操作日志不行么
    acehowxx
        3
    acehowxx  
       2022-06-22 17:38:41 +08:00 via Android
    也可能是你的记忆出了问题。是不是看了啥不该看的东西被黑衣人删记忆了。
    Buges
        4
    Buges  
       2022-06-22 17:46:01 +08:00 via Android
    这个常见啊,你存入数据库的代码有什么 bug ,比如哪里吞了报错、存在 data race 、变量覆盖等原因,导致部分数据没有真的存入数据库。
    这种 bug 也是很多程序员喜欢在离职前故意留的,难以发现,难以追责,当真正发现的时候不知道多久过去了,而且数据已经被完全污染了,几乎无法挽回。
    mlxy123123
        5
    mlxy123123  
    OP
       2022-06-22 17:52:53 +08:00
    @Buges 不是该存进去的没有存住,而是原本存在的数据,不知何时突然消失了
    InternetExplorer
        6
    InternetExplorer  
       2022-06-22 18:58:56 +08:00
    有没有可能是你爬的数据,在你爬过之后又新增了一些,看上去像丢了
    jin7
        7
    jin7  
       2022-06-22 19:10:22 +08:00 via Android
    mongodb 真不建议使用。 用 es 不行吗
    adekyou06
        8
    adekyou06  
       2022-06-23 00:34:09 +08:00 via Android
    量子数据库,笑死
    dream4ever
        9
    dream4ever  
       2022-06-23 08:59:42 +08:00
    感觉很大可能是代码层面的问题,或者 MongoDB 没有用对,都商业化了还出这种问题,那 MongoDB 也太菜了。
    Saxton
        10
    Saxton  
       2022-06-23 10:06:54 +08:00
    《量子数据库》
    Saxton
        11
    Saxton  
       2022-06-23 10:12:41 +08:00
    @dream4ever MongoDB 性能这块 一直是个密, 这个数据库说到底还是不太成熟。
    haoliang
        12
    haoliang  
       2022-06-23 10:17:01 +08:00
    以我对 mongodb 跟楼主代码的理解,我不相信是数据库的问题,也不相信这些上来就“xx 就是不行”的结论。
    libook
        13
    libook  
       2022-06-23 10:42:18 +08:00
    我用过 7 年 MongoDB ,做公司的支付和订单系统的数据库,没出过什么幺蛾子,性能也不错;遇到过觉得不好用的要么是对这个数据库的特性不够了解,要么就是拿来当存关系模型。

    查一下数据库日志呗,看看有没有 drop 记录,没有的话问问 VPS 运营商是不是回滚来着,滚到了 collection 产生之前的快照。

    @jin7 #7 ES 是搜索引擎,跟 MongoDB 根本不是一类东西,各有擅长的场景,所以通常可以拿 ES 跟业务数据库组合使用,我们之前就是使用 MongoDB 的 Change Streams 特性来同步数据给 ES 用的,用于支持一些实时性要求低的复杂表单搜索场景。
    karloku
        14
    karloku  
       2022-06-23 10:42:36 +08:00
    丢失 collection 不至于.
    就算古早的 mongodb 会丢数据, 但那也是 2.0 以前的默认配置下, 写入数据不需要 ack 时期的事情了.
    mlxy123123
        15
    mlxy123123  
    OP
       2022-06-23 11:19:08 +08:00   ❤️ 1
    喷了,查到了原因,原来是被勒索了

    ```{ "_id" : ObjectId("62b32c12a4e36a7a7746a711"), "content" : "All your data is a backed up. You must pay 0.01 BTC to 12nx7Q6FAczH6yfhaEMJRmvRkavDTcwUJK 48 hours for recover it. After 48 hours expiration we will leaked and exposed all your data. In case of refusal to pay, we will contact the General Data Protection Regulation, GDPR and notify them that you store user data in an open form and is not safe. Under the rules of the law, you face a heavy fine or arrest and your base dump will be dropped from our server! You can buy bitcoin here, does not take much time to buy https://localbitcoins.com with this guide https://localbitcoins.com/guides/how-to-buy-bitcoins After paying write to me in the mail with your DB IP:\[email protected]\[email protected]" }
    ```

    勒去吧,玩具服务器而已
    alexsunxl
        16
    alexsunxl  
       2022-06-23 11:22:44 +08:00
    哈哈哈哈哈。 这也太好笑了。
    勒索的人估计也没想到,你会往 mongodb 丢数据去想,完全没发现。
    不是发出来给 v 友喷了一下,估计 up 都发现不了真相
    documentzhangx66
        17
    documentzhangx66  
       2022-06-23 11:55:35 +08:00
    不会又是那种数据库端口开公网的大聪明吧?
    mlxy123123
        18
    mlxy123123  
    OP
       2022-06-23 11:58:26 +08:00
    @documentzhangx66 确实是,没太在乎
    刚看了一下甚至 auth 都没开
    dk7952638
        19
    dk7952638  
       2022-06-23 13:18:30 +08:00
    @libook 真心请教,Mongo 怎么保证事务呢?没有事务怎么保证订单和支付的可靠性呢?我一直认为 mongo 只能做一些对事务要求很低的业务
    libook
        20
    libook  
       2022-06-23 14:14:10 +08:00   ❤️ 1
    @dk7952638 #19 https://www.mongodb.com/docs/manual/core/transactions/

    早期版本确实不支持事务,但是可以自己用锁和二段提交等手段来模拟事务,后来官方直接就支持了。

    而且现在凡是上规模的系统,架构也会变得很复杂,尤其是多服务、微服务、第三方合作的场景,很多时候数据库本身的事务也无法满足需求,必须引入分布式事务方案。

    技术一直在变化的,比如我现在喷 Java 没有 Lambda 、Go 没有泛型、Apple Selicone 不支持 x86 程序,估计会被喷死。

    另外 MongoDB 也支持 Decimal 数据类型,可以有效解决金额计算的浮点问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2752 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 10:04 · PVG 18:04 · LAX 02:04 · JFK 05:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.