Mangodb 的缺点是什么?性能? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shyrock
V2EX    MongoDB

Mangodb 的缺点是什么?性能?

  •  
  •   shyrock 2015-07-01 17:39:52 +08:00 21129 次点击
    这是一个创建于 3755 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近一个项目打算采用mangodb替换mysql。吹了一堆好处后,销售问我,这些好处的代价是什么?他不懂技术,但是坚持一个朴素的理念“有得必有失”。

    我翻了一下网络,发现根据CAP原则,mangodb的归类是CP,是牺牲了可用性来保证一致性和分片容忍性,换句话说mangodb的性能比归类为CA的mysql在性能上应该有所降低。
    但是很遗憾,网上做两者性能对比的文章观点互相矛盾,且都不具权威性。

    所以想问问各位有没有权威的说法啊?
    88 条回复    2015-08-25 23:20:12 +08:00
    CIVITAS
        1
    CIVITAS  
       2015-07-01 17:40:55 +08:00
    Mongodb.
    EPr2hh6LADQWqRVH
        2
    EPr2hh6LADQWqRVH  
       2015-07-01 17:41:32 +08:00
    就是没有事务,没有Join
    tabris17
        3
    tabris17  
       2015-07-01 17:41:50 +08:00
    没有事务
    blacktulip
        4
    blacktulip  
       2015-07-01 17:42:25 +08:00
    没有权威说法,实测方知
    9hills
        5
    9hills  
       2015-07-01 17:43:51 +08:00
    你看到的什么文章。MongoDB性能不如MySQL,人用它干嘛,难道没有事务比带事务还要慢?
    lilydjwg
        6
    lilydjwg  
       2015-07-01 17:45:19 +08:00
    我的感受:

    1. 不支持事务
    2. 不支持 schema、值约束等等 SQL 才有的东西
    3. 程序都是静态链接的,一个程序十几 M
    4. mongo 命令行 shell 使用 linenoise 而不是 readline,中文支持问题严重

    另据说 MongoDB 存 JSON 的性能不如 PostgreSQL 9.4 的 jsonb 数据类型。
    shyrock
        7
    shyrock  
    OP
       2015-07-01 17:53:50 +08:00
    小结一下,截止6楼提到的都是没有事务和值约束、外键这些,然而这些都跟CAP原则中的A可用性没有关系啊。换句话说,Mangodb比mysql多了分盘容错性的好处,但是却没有因此而付出代价。
    TheJuli
        8
    TheJuli  
       2015-07-01 17:59:55 +08:00
    @shyrock
    MongoDB
    *
    aisk
        9
    aisk  
       2015-07-01 18:00:04 +08:00
    CAP 理论是针对分布式系统的,跟你单机使用没有关系。
    另外求楼主千万不要用 mongodb,因为 mongodb 现在最大的问题就是属于这种「不知道现在系统有什么问题」「不知道新的系统解决了什么问题」的人误用导致的各种问题。
    blacktulip
        10
    blacktulip  
       2015-07-01 18:05:26 +08:00
    CAP 不单是针对分布式系统的,而且跟性能没有关系,可用性跟性能是两回事
    Had
        11
    Had  
       2015-07-01 18:16:58 +08:00
    坑很多... 修坑很慢,尤其Query Plans相关的... 很痛苦有没有...
    shyrock
        12
    shyrock  
    OP
       2015-07-01 18:18:13 +08:00
    @aisk 忘了在问题里面说明,就是在分布式系统中使用的,可没有说是单机系统。
    我这不是在使用之前专门求教MangoDB的优缺点吗?您的意思是只有生而知之的人配得上用MangoDB?
    shyrock
        13
    shyrock  
    OP
       2015-07-01 18:18:46 +08:00
    @blacktulip 求教CAP中的A可用性是指什么?
    shyrock
        14
    shyrock  
    OP
       2015-07-01 18:19:35 +08:00
    @Had 被你一说,心里有点怕。。。都这么些年了,应该还是基本可用吧?
    xlrtx
        15
    xlrtx  
       2015-07-01 18:20:32 +08:00
    好像不支持acid
    Had
        16
    Had  
       2015-07-01 18:24:34 +08:00   1
    @shyrock 来看看这张卡。
    https://jira.mongodb.org/browse/SERVER-13866

    最后那个人的回复就是我们遇到的:
    If I drop and regenerate the index the problem resets itself, but I assume that's similar to just restarting mongod. What is normally a 1ms query jumps to 100ms or more.
    yoa1q7y
        17
    yoa1q7y  
       2015-07-01 18:33:55 +08:00
    Mongodb
    Mongodb
    Mongodb
    Mongodb!!!
    shyrock
        18
    shyrock  
    OP
       2015-07-01 18:37:24 +08:00
    @Had 看懂了,不过这应该是bug。其实我想问的是MangoDB在设计上所付出的代价是什么,也就是说理论上无法通过补丁解决的问题。
    shyrock
        19
    shyrock  
    OP
       2015-07-01 18:38:15 +08:00
    @yoa1q7y Sorry,前几个人的提醒我以为重点是大小写呢。。。
    shyrock
        20
    shyrock  
    OP
       2015-07-01 18:38:59 +08:00
    @9hills 不是所有数据库设计都以性能为第一诉求的。。。
    seki
        21
    seki  
       2015-07-01 18:40:01 +08:00
    实在忍不住吐槽了
    一堆人在指出拼写错误楼主还是我行我素 - -
    shyrock
        22
    shyrock  
    OP
       2015-07-01 18:42:17 +08:00
    @seki 喏,你看前一个回复。
    incompatible
        23
    incompatible  
       2015-07-01 18:46:05 +08:00   1
    CAP讲的是分布式系统
    我们讨论数据库时要讨论的是ACID

    mongodb无法做到ACID,所以对事务有要求的应用不适合用它。
    blacktulip
        24
    blacktulip  
       2015-07-01 18:56:46 +08:00
    zxp
        25
    zxp  
       2015-07-01 18:57:23 +08:00
    https://github.com/dcramer/mangodb

    License
    If you use this, you must donate $1 to someone more intelligent than you.
    shyrock
        26
    shyrock  
    OP
       2015-07-01 19:11:19 +08:00
    仔细看了wiki,确实说到CAP是适用于分布式计算系统。
    那么问题是MongoDB作为分布式NoSQL数据库,在Availability这项上面付出的代价到底是什么?
    shyrock
        27
    shyrock  
    OP
       2015-07-01 19:13:14 +08:00
    @zxp 这不算代价。
    lijianying10
        28
    lijianying10  
       2015-07-01 19:31:23 +08:00
    我觉得,要是做的话,还是结合各家所长来用比较好。

    其实MongoDB数据库里面有函数:
    之前我就研究过: http://www.philo.top/1899/11/30/788MongoDB%E5%AD%98%E5%82%A8%E8%BF%87%E7%A8%8B%E6%80%A7%E8%83%BD%E8%B0%83%E4%BC%98/

    MongoDB的入性能是非常好的,只是你不能建立太多的Index最好是用有意义的ID来存储。
    Update也不推荐
    千万不要Delete不然文件里面就有个洞。
    Select的时候直接拿ID说话就可以了。

    所以不管是是用什么数据库,得看业务啊。
    脱离业务讨论技术,不会有什么结论。
    wintersun
        29
    wintersun  
       2015-07-01 19:32:47 +08:00
    @shyrock 晕死,人家调侃的是Mangodb,而不是Mongodb
    anubiskong
        30
    anubiskong  
       2015-07-01 19:45:28 +08:00
    @lijianying10 delete会有个洞是什么意思?
    TangMonk
        31
    TangMonk  
       2015-07-01 20:01:14 +08:00
    坑多
    lijianying10
        32
    lijianying10  
       2015-07-01 20:06:45 +08:00
    @anubiskong
    http://stackoverflow.com/questions/5518581/mongodb-data-remove-reclaim-diskspace
    删除数据会在硬盘文件上。
    mongodb虽然删除数据了。但是不能释放该数据的存储空间。造成碎片。
    然后你懂得。
    lijianying10
        33
    lijianying10  
       2015-07-01 20:09:17 +08:00
    其实我想问LZ说的是不是这个数据库啊:
    http://www.oschina.net/p/mangodb?from=rss
    我看大家(包括我)都在讨论MongoDB
    morethansean
        34
    morethansean  
       2015-07-01 20:12:09 +08:00
    主页上这么大大的 Mangodb ,处女座实在是不能忍!!!
    bramblex
        35
    bramblex  
       2015-07-01 20:24:49 +08:00
    千万不要随意入坑,先确保你的业务是否一定需要mongo
    shyrock
        36
    shyrock  
    OP
       2015-07-01 21:47:31 +08:00
    @lijianying10 是笔误哈
    shyrock
        37
    shyrock  
    OP
       2015-07-01 21:47:54 +08:00
    @morethansean Sorry,原帖无法编辑
    aisk
        38
    aisk  
       2015-07-01 21:49:30 +08:00
    @shyrock 生而看文档,生而 google 之的人。
    sanddudu
        39
    sanddudu  
       2015-07-01 22:13:53 +08:00
    @lijianying10
    @morethansean
    这个 py 脚本的主要功能就是监听个端口,然后把接受到的数据全部写入 /dev/null(也就是没了)
    嘲讽可以,OSC 居然收录了,这是智商问题吧
    Ricky123
        40
    Ricky123  
       2015-07-01 22:25:09 +08:00
    自己用的时候太占磁盘了
    烧不起
    shyrock
        41
    shyrock  
    OP
       2015-07-01 22:27:33 +08:00
    @aisk 生而google之的人注册技术论坛账号是专门为了吐槽用的吧?已block,不谢。
    anubiskong
        42
    anubiskong  
       2015-07-01 22:32:09 +08:00
    @lijianying10 不是吧, 这点问题都解决不好?
    df4VW
        43
    df4VW  
       2015-07-01 23:23:45 +08:00
    缺点是,一般从sql来的人,都还是用sql的思维方式在用mongo,然后发现不好用,就在网上疯狂吐槽。

    我也不喜欢mongo,但是我自认为我还没有100%的用对mongo,就不吐槽了。
    zhangsoledad
        44
    zhangsoledad  
       2015-07-01 23:33:14 +08:00
    据说坑多 已被吓退
    typcn
        45
    typcn  
       2015-07-01 23:38:36 +08:00
    再慢,也比 MySQL 快几倍
    9hills
        46
    9hills  
       2015-07-02 01:10:42 +08:00 via iPhone
    @shyrock 我的意思是你不懂性能也不懂CAP 。言尽于此
    9hills
        47
    9hills  
       2015-07-02 01:15:39 +08:00 via iPhone   1
    @aisk 苦口婆心被人block ,也是悲剧。

    把mongo 仅仅是当作没有事务的mysql 来用,是现在mongo 的最大误用。


    Nosql 和sql的思想完全不同。
    nine
        48
    nine  
       2015-07-02 01:43:32 +08:00
    那MongoDB 优点是什么?为什么不用PostgreSQL?
    Septembers
        49
    Septembers  
       2015-07-02 04:06:40 +08:00 via Android
    @9hills
    NoSQL的重点是围绕文档
    DBMS的重点是围绕关系
    不知是否有理解错误?
    vietor
        50
    vietor  
       2015-07-02 06:32:26 +08:00 via Android   1
    最大不同,不支持关联查询,性能的确提升,索引难建对
    mengzhuo
        51
    mengzhuo  
       2015-07-02 07:49:37 +08:00   1
    没法join比较蛋疼,只能用embeddocument,配合ORM+预先载入内存才能感受到爽快
    木有事务,只能自己用程序保证

    对于我司手游这样的应用,用mongodb就很好,结构灵活,反正性能不是啥问题,都是赚了1年钱就跑的(逃
    imlonghao
        52
    imlonghao  
       2015-07-02 07:57:28 +08:00 via Android
    我滚到 Github 上看了看 mangodb,
    感觉就是一个用来搞笑的....

    License
    If you use this, you must donate $1 to someone more intelligent than you.

    楼主我来拿你的$1了.....
    virusdefender
        53
    virusdefender  
       2015-07-02 08:33:49 +08:00
    反正我用的时候就是MySQL之类的存储小数据,有关系的数据

    mongo存储大字段,而且不会再修改的,防止把MySQL撑的太大。
    safilar
        54
    safilar  
       2015-07-02 08:46:55 +08:00
    mongoDB 其实学习成本很低,类别 hadoop 等其他大数据库框架来说。它的性能不是很杰出,如果按穿传统意义上的关系数据库来设计的话,也不支持所谓的跨表查询。
    realpg
        55
    realpg  
    PRO
       2015-07-02 08:51:24 +08:00
    不同功能的东西,实现的功能都不同。损失的就是功能。
    RDMBS跟noSQL实现的基本功能都不一致,比较个卵啊。
    举个极端的例子,我以前用MYSQL,现在自己写了个内存存数据的引擎叫rCache替换MYSQL,实现的功能就是一个只有get和set和remove的KV内存存储器,总代码100行,因为我的业务需求就是一个单一存储器,只需要这一个功能,以前的mysql表两列key,value查询也就是三个查询 按主键select,按主键删除,插入记录
    对于这个项目,性能提升1000%以上,我的代价是啥?没有。
    dingyaguang117
        56
    dingyaguang117  
       2015-07-02 08:52:38 +08:00 via iPhone
    @vietor mongodb转mysql,觉得 应该是mysql索引难建吧

    毕竟还有查询条件复杂多了
    josephok
        57
    josephok  
       2015-07-02 09:11:50 +08:00
    能把标题改一下吗?
    Sight4
        58
    Sight4  
       2015-07-02 09:25:03 +08:00   1
    首先,这里面有一点误导的是,CAP不是说,只要有A,就一定没P,而是究竟是A的优先级高一点,还是P的优先级高一点。好了,回到正题

    一般而言,MySQL是传统的RMDBS,是以ACID为第一守则,实现分布式,CA成为首要优先级,这里的表述不是很到位,可以看看下面这篇参考

    http://www.infoq.com/cn/articles/cap-twelve-years-later-how-the-rules-have-changed/

    所以,并不是牺牲什么为代价,只是处理事情的优先级的先后顺序,这个的使用还是需要结合实际生产应用。


    再者,mongoDB跟RMDBS是完全不一样的东西,没事务,没关联,没约束,这些在实际的生产应用中可能会产生很多的问题,所以,mongoDB是那种看起来很爽,用起来就各种问题的存在。如果没有实际将模型拿去验证,又或者把SQL那一套塞进去的话,很多时候会得不偿失。
    shyrock
        59
    shyrock  
    OP
       2015-07-02 09:27:36 +08:00
    @9hills 你第一个回复就纯吐个槽而已,第二句就来个言尽于此,真谢谢你的技术讨论精神了。
    shyrock
        60
    shyrock  
    OP
       2015-07-02 09:31:29 +08:00
    @Sight4 我看到CAP的解释是,在一个实用的分布式系统中,CAP三者只能取其二。这里当然没说完全没有第三个选项,而是说在设计上第三个选项的优先级最低。
    说道NoSQL比起RDBMS少了事务、约束等功能(或者说限制),我觉得首先可以思考一下这些限制是否本身就是CAP模型中的一个维度呢,比如说是否事务本身就是C的一个具体表现。
    feetbig
        61
    feetbig  
       2015-07-02 10:45:10 +08:00   1
    CP的好处是在一个cluster里面即使有几个nodes互相无法通信了,整个cluster仍然是可用的(P)。在通信恢复后仍然可以通过比如互传transaction logs之类的方法保持所有nodes的数据是一致的(C),但是这个同步的过程中用户是无法访问这个cluster的,即牺牲了可用性(A)。

    关系数据库是CA没有P,意思是只要cluster中没有partitons就一直可用(A)并且所有nodes的数据是一致的(C)。但是如果cluster中出现partitions从而导致各个nodes的数据不同步,即使nodes间的通信恢复了,数据库系统本身是无法解决数据不同步的问题的。
    shyrock
        62
    shyrock  
    OP
       2015-07-02 11:46:40 +08:00
    @feetbig 懂了,谢谢。
    Sight4
        63
    Sight4  
       2015-07-02 11:49:40 +08:00
    @shyrock 事务本身的确是C的一种具现;

    你的问题是mongoDB的缺点是?我的回答是拿模型去试试,理论这东西,有指导意义,但远不及实操的体会深刻。当你要自己去实现关联/限制/约束,还要考虑性能的问题时候,你自然而然会体会到所谓的缺点,缺点也是因场景而异的。当然,不是所有的应用都需要关联/限制/约束,所以mongoDB才有存在的意义。
    shyrock
        64/div>
    shyrock  
    OP
       2015-07-02 11:52:01 +08:00
    @Sight4 我的观点是,理论指导实践。实操和测试都是为了印证理论而做的。否则实验的结果很难有说服力,看看网上各种自相矛盾的测试数据就知道了。
    lilydjwg
        65
    lilydjwg  
       2015-07-02 11:54:45 +08:00
    MangoDB 好棒~
    Sight4
        66
    Sight4  
       2015-07-02 11:57:27 +08:00
    @lijianying10 还真有MangoDB额.....
    lilydjwg
        67
    lilydjwg  
       2015-07-02 12:03:17 +08:00
    @shyrock 那如果理论错了呢?出一本 IT 界的《水知道答案》?
    Sight4
        68
    Sight4  
       2015-07-02 12:16:42 +08:00
    @shyrock 自相矛盾的测试数据不就是 理论->实验->理论 不断重复修正的过程么,而你一旦实验测试,就会涉及到场景模型,单纯撇开模型或者实际场景先讨论一番理论,很多情况只是徒生口水仗而已
    zonghua
        69
    zonghua  
       2015-07-02 12:49:03 +08:00 via iPhone
    @lijianying10 电子档案咧?很多数据都要细分的。
    shyrock
        70
    shyrock  
    OP
       2015-07-02 13:46:00 +08:00
    @Sight4 我就是这个意思,实验要有理论模型支撑,所以我先问一下CAP模型合适不,如果合适,那么从模型就可以推断CP类的MongoDB必然在A上有损失。如果数据推翻了这个模型,那么就要想一个新的模型。
    lijianying10
        71
    lijianying10  
       2015-07-02 13:46:06 +08:00
    @zonghua 没明白你说的是什么意思、
    shyrock
        72
    shyrock  
    OP
       2015-07-02 13:46:29 +08:00
    @lilydjwg 如果理论错了,就找一个或者想一个新理论
    sampeng
        73
    sampeng  
       2015-07-02 14:44:48 +08:00
    想知道?
    招聘的时候,不要再问有什么优点了。。问缺点。。。
    lilydjwg
        74
    lilydjwg  
       2015-07-02 14:46:41 +08:00
    @shyrock 你没明白我的意思。如果「实操和测试都是为了印证理论而做的」,那么不可能发现理论是错的;你只会看到与理论相符的部分。
    shyrock
        75
    shyrock  
    OP
       2015-07-02 15:23:10 +08:00
    @lilydjwg 不觉得。测试数据可能支持理论假设也可能背道而驰,如果是后者,就需要调整甚至改变理论假设。
    fractal314
        76
    fractal314  
       2015-07-02 15:31:40 +08:00 via Android
    我觉得这个数据库太消耗内存了,512的vps跑个mongodb,别的就跑不动了
    lilydjwg
        77
    lilydjwg  
       2015-07-02 16:01:12 +08:00
    @shyrock 那么你的「实操和测试」的目的是「印证或者否定」理论,而不是「为了印证理论而做」。不想纠结这个了。
    ixiaohei
        78
    ixiaohei  
       2015-07-02 22:43:38 +08:00
    缺点没有事务,优点效率很高。完爆mysql,可能是没有事务一堆的约束吧。另外产品开发一直使用,单机并发很高。再就是面向文档,某些应用很爽,另外没有关系数据库的join,一些场景还是很别扭。。另外建议系统不需要事务可以尝试
    movieqiu
        79
    movieqiu  
       2015-07-03 09:10:15 +08:00
    @lijianying10 我看mongodb的描述是采用双链表结构存储,delete以后不释放,但是如果下次有同样大小的会重用。所以我在想,如果每个条目都一样大小的话,应该可以避免碎片问题。
    onelee
        80
    onelee  
       2015-07-03 09:53:31 +08:00
    3000W用户的生产环境使用mongodb 2年中(社交类,含交易支付)。。。 有遇到过问题,但是用其他数据也会遇到过问题,(用什么没问题?呵呵) 好好解决就行了,, 可以mysql+mongodb呀 ,或者这2都不用(任性。。。还有其他选择,,O(∩_∩)O~) 根据自身需求来吧。
    Neveroldmilk
        81
    Neveroldmilk  
       2015-07-03 10:23:45 +08:00
    我觉得纠结半天,还不如实际试试。数据量不是太大的情况下,No SQL的缺陷可以通过代码流程来补足。
    ly827
        82
    ly827  
       2015-07-03 10:33:28 +08:00
    我觉得先用起来才会知道 我是没用过~~
    lijianying10
        83
    lijianying10  
       2015-07-03 11:15:34 +08:00
    @movieqiu 但是,得具体业务看来,如果是存储数字的话还好说。如果是字符串之类的,那就难受了。
    movieqiu
        84
    movieqiu  
       2015-07-03 12:26:38 +08:00
    @lijianying10 恩这倒是没错。那如果在设计的时候,就将字符串的长度做一些限制,比如固定多少长度。会不会好一些呢?感觉mongodb就是牺牲了不少老式数据库的特性达到的高性能,那么为了用这些高性能,自己就得动手做一些调整。
    movieqiu
        85
    movieqiu  
       2015-07-03 12:29:32 +08:00
    @lijianying10 恩这倒是没错。那如果在设计的时候,就将字符串的长度做一些限制,比如固定多少长度。会不会好一些呢?感觉mongodb就是牺牲了不少老式数据库的特性达到的高性能,那么为了用这些高性能,自己就得动手做一些调整。
    kamushin
        86
    kamushin  
       2015-07-03 13:44:16 +08:00
    @lilydjwg MYSQL有个引擎BLACKHOLE,效果和MangoDB一样样的~
    lijianying10
        87
    lijianying10  
       2015-07-03 23:01:20 +08:00   1
    @movieqiu 我觉得比较好的方案是:
    1. 合理使用删除与更新数据
    1.1 删除只是一个状态,不真正的删除
    1.2 更改数据内容只加入一个新的对象到Collection中顺便还能做版本管理或者类似时间轴这种的常见需求。
    2. 合理的根据建立Collection让数据尽量分散一些
    如果数据量可预测的非常长,可以针对业务分类。让Skip的数据量减少,或者说是让Skip大量数据的概率减少。
    3. 单索引,ID查询为王。

    我也许说的不对,或者还是不够理想,当然我自己也认为我对数据库设计还是不够深刻,同时我也是个开发新手,欢迎批评,也希望能有更多的讨论。

    最后希望能够帮到LZ。
    aspirin2d
        88
    aspirin2d  
       2015-08-25 23:20:12 +08:00 via iPhone
    @lijianying10 还有一个就是尽量让每个文档的长度都一致,且尽可能多预留写占位的 field
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2743 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 11:43 PVG 19:43 LAX 04:43 JFK 07:43
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86