MySQLのは何である(詳細な接続)
MySQLのは、出版や人気のあるオープンソースのリレーショナルデータベース管理システム(RDBMS)のサポート、オラクル社によって開発されました。関係のような他のシステムでは、テーブル内のMySQLのデータを格納し、データベースにアクセスするための構造化照会言語(SQL)を使用するように。MySQLでは、必要に応じてデータベーススキーマをあらかじめ定義され、そしてテーブルのフィールド間の関係を支配するルールを設定することができます。MySQLでは、関連情報は、別個のテーブルに格納されてもよいが、関連するクエリを使用して関連付けること。データの重複が量を最小限に抑えているので、この方法を使用することにより、
MongoDBはどのようなものです(詳細な接続)
MongoDBはMongoDBは、オープンソースデータベースの株式会社ザ・開発です。MongoDBのJSON類似文書、各文書は、JSON文字列データ格納構造を変えることができます。関連情報は、MongoDBのクエリ言語を通じて高速の照会アクセスのために一緒に保存されます。MongoDBは、あなたが最初に、このようなタイプのフィールドや値として、構造を定義せずにレコードを作成することができますを意味し、ダイナミックモードを使用しています。あなたは、新しいフィールドを追加することによって、レコードを変更したり、(私たちは、ドキュメントを呼ぶ)は、既存のレコード構造を削除することができます。データモデルを使用すると、簡単に階層、ストレージアレイおよび他のより複雑な構造を表していることができます。原稿セット必要がフィールドの同じセットを持っていない、非正規化されたデータが一般的です。MongoDBは、高可用性とスケーラビリティのために設計されており、自動複製および断片化を使用する準備を提供します。
用語と概念
MySQLの | MongoDBの |
---|---|
テーブルのテーブル | コレクションコレクション |
行の行 | ドキュメントのドキュメント |
列の列 | フィールドフィールド |
表には参加し参加します | 文書またはリンクに埋め込まれ |
構文の比較
説明 | MySQLの | MongoDBの |
---|---|---|
ライブラリーリストを表示 | ショーデータベース | ショーのDBS |
ライブラリを使用します | mydb1を使用します。 | 使用mydb1 |
ディスプレイテーブルリスト | ショーテーブル | コレクションを表示 |
テーブルを作成します。 | テーブルのユーザーを作成します(年齢int型、性別int型) | db.people.insert({ "名": "紫の神"、 "年齢"、18})PS:暗黙的にテーブルを作成します。 |
インデックスを作成します | ユーザーON INDEXのidxnameを作成します(名前) | db.people.ensureIndex({名前:1}) |
レコードの挿入 | ユーザー値(1、1)に挿入します | db.people.insert({ "名": "紫龙神"、 "年齢"、18}) |
ルックアップテーブル | ユーザーからの選択* | db.peple.find({ "年齢":18}) |
ルックアップテーブル | ユーザーからの選択* | db.people.find() |
条件お問い合わせ | 年齢= 33ユーザから選択* | db.people.find({年齢:33}) |
条件お問い合わせ | 年齢<33ユーザーからの選択* | db.people.find({ '年齢':{$ LT:33}}) |
条件お問い合わせ | ユーザーからの選択*年齢> 33歳と<= 40 | db.people.find({ '年齢':{ LTE:40}}) |
条件お問い合わせ | = 1、B =「Q」のユーザーからの選択* | db.people.find({:1、B: 'Q'}) |
条件お問い合わせ | = 1、B = 2のユーザSELECT * FROM | db.people.find({$または:[{1}、{B:2}]}) |
条件お問い合わせ | ユーザーの制限から選択* 1 | db.people.findOne() |
ファジィクエリ | 名前「%ジョー%」のようなユーザーからの選択* | db.people.find({名:/ジョー/}) |
ファジィクエリ | 名前「ジョー%」のようなユーザーからの選択* | db.people.find({名:/ ^ジョー/}) |
テーブル内のレコード数を取得します。 | ユーザーからの選択数(1) | db.people.count() |
テーブル内のレコード数を取得します。 | バグSELECT COUNT(1)年齢> 30ユーザーから | db.people.find({年齢:{$ G ':30}}カウント()。 |
重複した値を削除します | ユーザーからのDISTINCTのlast_nameを選択 | db.people.distinct( 'LAST_NAME') |
ソート(正シーケンス) | 名前db.people.find(BYユーザーORDER SELECT * FROM)ソート({名前:1})。 | |
ソート(リバース) | 名前BYユーザーORDER SELECT * FROM DESC | db.people.find()ソート({名:-1})。 |
レコードの更新 | 更新ユーザーは= 1、B =「Q」を設定しました | db.people.update({B 'Q'}、{$セット:{1}}、偽、真) |
レコードの更新 | 更新ユーザーは= A + B 2 = 'Q' を設定しました | db.people.update({B 'Q'}、{$ INC:{2}}、偽、真) |
レコードの削除 | Z =「ABC」のユーザーから削除 | すべてのレコードを削除する;. DB people.remove():db.people.remove({ 'ABC' Z}) |
[データベースの削除 | ドロップデータベースIFは、テストをEXISTS | テストを使用します。db.dropDatabase() |
删除表/collection | drop table IF EXISTS test | db.mytable.drop() |
应用场景对比
MongoDB:
更高的写入负载
默认情况下,MongoDB更侧重高数据写入性能,而非事务安全,MongoDB很适合业务系统中有大量“低价值”数据的场景。但是应当避免在高事务安全性的系统中使用MongoDB,除非能从架构设计上保证事务安全。
高可用性
MongoDB的复副集(Master-Slave)配置非常简洁方便,此外,MongoDB可以快速响应的处理单节点故障,自动、安全的完成故障转移。这些特性使得MongoDB能在一个相对不稳定(如云主机)的环境中,保持高可用性。
数据量很大或者未来会变得很大
依赖数据库(MySQL)自身的特性,完成数据的扩展是较困难的事,在MySQL中,当一个单达表到5-10GB时会出现明显的性能降级,此时需要通过数据的水平和垂直拆分、库的拆分完成扩展,使用MySQL通常需要借助驱动层或代理层完成这类需求。而MongoDB内建了多种数据分片的特性,可以很好的适应大数据量的需求。
基于位置的数据查询
MongoDB支持二维空间索引,因此可以快速及精确的从指定位置获取数据。
表结构不明确,且数据在不断变大
在一些传统RDBMS中,增加一个字段会锁住整个数据库/表,或者在执行一个重负载的请求时会明显造成其它请求的性能降级。通常发生在数据表大于1G的时候(当大于1TB时更甚)。 因MongoDB是文档型数据库,为非结构货的文档增加一个新字段是很快速的操作,并且不会影响到已有数据。另外一个好处当业务数据发生变化时,是将不在需要由DBA修改表结构。
缓存
由于性能很高,也适合作为信息基础设施的缓存层。在系统重启之后,搭建的持久化缓存可以避免下层的数据源过载。
Mongodb 应用案例
- 京东,中国著名电商,使用MongoDB存储商品信息,支持比价和关注功能.
- 赶集网,中国著名分类信息网站,使用MongoDB记录pv浏览计数
- Qihooは360、一日あたり200億個のクエリを受け入れるようにMongoBDサポートHULKプラットフォームを使用して有名なウイルス対策ソフトウェアおよびモバイルアプリケーションプラットフォーム、。
- Baiduはソースに関するMongoDBの管理Baiduのクラウドディスク500億のレコードのファイル情報を使用して、クラウド。
- CERN、素粒子物理学の有名な研究所、CERN大型ハドロン衝突型加速器のデータ使用のMongoDB
- MongoDBのを使用してニューヨーク・タイムズ、大手オンラインニュースポータルの1、
- sourceforge.net、オープンソースのソフトウェアは無料で、見つける作成および配布するためのリソースのウェブサイト、MongoDBのためのバックエンドストレージ
MySQLの:
1)これらのデータは、通常、構造化されたクエリは、今回の参加など、リレーショナルデータベースはチップを獲得し、実行する必要があります
2)これらのデータのサイズ、成長速度は通常予想されます
3)トランザクションの一貫性(また、トランザクションをサポートするために始めmongdodb4.0)
4)豊富なロック機構
MySQLのアプリケーション
物事のシステムの高さ
このようなシステムを銀行や会計など、従来のリレーショナル・データベースは、まだ大規模なアトミック複雑なトランザクションを必要とするアプリケーションに適しています。
従来のビジネス・インテリジェンス・アプリケーション
特定の問題のためのBIデータベースは、高度に最適化されたクエリを持っているでしょう。このような用途のために、データ・ウェアハウスは、より適切な選択であってもよいです
推奨読書:
MongdoDBチュートリアル: https://piaosanlang.gitbooks.io/mongodb/
MySQLの最適化の10のヒント: https://www.cnblogs.com/sharpest/p/10390035.html