本人最近做一个O2O平台项目(含管理、预约、支付、接入微信等),当初出于人员能力、成本等考虑,选择了标准的MEAN作为技术选型。做起来确实很快,但随着项目需求的迭代,我感觉该技术选型特别是mongodb存在非常多的局限,主要如下:
1、mongodb不支持join的操作,只能简单通过populate扩展,因此,但凡有跨表的查询、统计都非常麻烦;我们现在很多是通过数据的冗余来做的,就是干脆数据字段在几个集合里都存。
2、mongodb不支持事务,因此很多回滚的操作我们现在是在业务的同步框架里处理,代码显得非常冗余,且本质上仍然不是真正意义上的回滚;
我听说业内现在有越来越多的纯MEAN的大项目,我不知道大家是怎么解决上述问题的?还是说核心业务逻辑仍然用的是关系型数据库。
Sesetengah projek saya telah menghadapi masalah menyertai. Penyelesaian saya adalah untuk menyimpan ObjectIds yang sepadan dan menggunakan pengagregatan mongodb untuk mencapai tujuan menyertai. Saya menggunakan enjin WiredTiger, jadi saya menyelesaikan masalah mengunci pangkalan data semasa membaca dan menulis dalam jumlah yang banyak. Juga cuba elakkan pemikiran reka bentuk SQL tradisional dan logik pembangunan semasa mereka bentuk pangkalan data. Koleksi harus cuba sepadan dengan satu acara. Kemudian, disebabkan pengembangan projek, saya memperkenalkan model pembangunan pekerja dan menukar hubungan antara lapisan logik kepada pekerja dengan benang bebas Pada masa ini, ia mempunyai kesan yang baik dalam menangani sejumlah besar konkurensi tanpa sambungan dalam talian (. serupa dengan kesan merebut sampul merah tanpa orang dalam talian). Sekadar sedikit pendapat yang merendah diri untuk rujukan sahaja.
Selain itu, batasan mongodb akan menjadi sangat tidak selesa untuk orang yang terbiasa dengan model pembangunan SQL. Tetapi dalam era data besar, kelebihan mongodb adalah jelas. Pada masa ini, struktur asas projek saya ialah:
Pelayan: nginx+mongodb+php-fpm+ubuntu
Program utama: MVC(php) // Values menyediakan pertukaran hubungan logik
Program tambahan: Pekerja // Pemprosesan berbilang benang bagi perhubungan logik yang sepadan untuk interaksi pangkalan data
Tidakkah anda mempertimbangkannya semasa memilih teknologi? Tidak perlu hanya menggunakan mongo, pelbagai perpustakaan boleh wujud bersama
Semua orang, sebenarnya soalan saya bukanlah sama ada Mongo rosak atau perlu diganti. Sebaliknya, dengan mengandaikan bahawa pangkalan data tidak ditukar, adakah terdapat sebarang penyelesaian kepada masalah di atas? Saya pasti ada orang lain dalam industri yang telah menghadapi dan menyelesaikan masalah ini.
Mongodb tidak sesuai untuk projek jenis ini. Ia sesuai untuk jenis pertanyaan, dan ia mudah untuk projek yang mempunyai hubungan yang kukuh, pangkalan data hubungan masih digunakan