정보실

웹학교

정보실

sql MySQL에서 MongoDB로-관리 요령 시트

본문

오늘날 대부분의 소프트웨어 응용 프로그램은 응용 프로그램 자체에서 광범위한 미래 참조를 위해 일부 동적 데이터 저장소를 포함합니다. 우리는 데이터가 데이터베이스에 저장되어 있으며 관계형 및 비 관계형 DBMS라는 두 가지 범주로 분류됩니다.


이 두 가지 중에서 선택하는 것은 데이터 구조, 관련된 데이터 양, 데이터베이스 성능 및 확장성에 전적으로 달려 있습니다.


관계형 DBMS는 SQL (Structured Querying Language)을 사용하여 여러 트랜잭션이 포함 된 응용 프로그램에 적합하도록 행 단위로 데이터를 테이블에 저장합니다. 여기에는 MySQL, SQLite 및 PostgreSQL이 포함됩니다.


https://severalnines.com/blog/mysql-mongodb-admin-cheat-sheet 


반면, MongoDB와 같은 NoSQL DBMS는 문서 지향적이므로 데이터는 문서 측면에서 콜렉션에 저장됩니다. 이는 대규모 데이터 세트에 더 큰 스토리지 용량을 제공하므로 확장성에 있어 또 다른 이점이 있습니다.


이 블로그에서는 MongoDB 또는 MySQL에 대해 더 잘 알고 있으므로 쿼리 및 데이터베이스 구조 측면에서 두 가지의 상관 관계를 알고 싶다고 가정합니다.


다음은 MySQL에서 MongoDB 로의 쿼리에 익숙해지는 치트 시트입니다.


MySQL에서 MongoDB 치트 시트로-용어 

MySQL Terms MongoDB Terms 설명
Table Collection 이것은 포함 된 객체에서 유사한 경향이 있는 데이터를 위한 저장 컨테이너입니다.
Row Document MongoDB의 경우 MySQL 및 콜렉션에 대한 테이블의 단일 오브젝트 엔티티를 정의합니다.
Column Field 저장된 모든 항목에 대해 다른 값과 데이터 유형으로 정의 된 속성이 있습니다. MongoDB에서 동일한 콜렉션의 문서는 서로 다른 필드를 가질 수 있습니다. MySQL에서는 모든 행이 기존 열과 동일한 열로 정의되어야 합니다.
Primary key Primary key MongoDB의 경우 저장된 모든 객체는 고유 한 필드 값으로 식별되며 _id 필드는 자동으로 설정되지만 MySQL에서는 새 행을 만들 때 증가하는 고유 한 기본 키를 정의 할 수 있습니다.
Table Joins Embedding and linking documents 다른 콜렉션 / 테이블의 오브젝트와 다른 콜렉션 / 테이블의 데이터와 연관된 연결.
where $match 기준과 일치하는 데이터를 선택합니다.
group $group 일부 기준에 따라 데이터를 그룹화합니다.
drop $unset 행 / 문서 /에서 열 / 필드 제거
set $set 기존 열 / 필드 값을 새 값으로 설정


스키마 문 


MySQL Table Statements MongoDB Collection Statements 설명

데이터베이스와 테이블은 PHP 관리자 패널을 통해 명시 적으로 생성되거나 스크립트 내에서 정의됩니다.

Creating a Database

1
CREATE DATABASE database_name

Creating a table

1
2
3
4
5
6
7
8
9
CREATE TABLE users (
    id MEDIUMINT NOT NULL
        AUTO_INCREMENT,
    UserId Varchar(30),
    Age Number,
    Gender char(1),
    Name VarChar(222),
    PRIMARY KEY (id)
)

데이터베이스는 암시 적 또는 명시 적으로 만들 수 있습니다. 첫 번째 문서 삽입 중 내재적으로 데이터베이스 및 콜렉션이 작성되고이 문서에 자동 _id 필드가 추가됩니다.

1
2
3
4
5
6
db.users.insert( {
    UserId: "user1",
    Age: 55,
    Name: "Berry Hellington",
    Gender: "F",
 } )

Mongo Shell에서이 주석을 실행하여 데이터베이스를 명시 적으로 작성할 수도 있습니다.

1
db.createCollection("users")

MySQL에서는 생성중인 테이블에 열을 지정하고이 예에서와 같이 일부 열에 적용되는 데이터 유형 및 길이와 같은 유효성 검사 규칙을 설정해야합니다. MongoDB의 경우 각 문서가 보유해야하는 필드 나 지정된 필드가 보유해야하는 유효성 검사 규칙을 정의 할 필요는 없습니다.

그러나 MongoDB에서 데이터 무결성 및 일관성을 위해 JSON SCHEMA VALIDAT를 사용하여 유효성 검사 규칙을 설정할 수 있습니다

Dropping a table

1
DROP TABLE users
1
db.users.drop()

이것은 MongoDB의 경우 MySQL 및 콜렉션에 대한 테이블을 삭제하기 위한 명령문입니다.

join_date라는 새 열 추가

1
ALTER TABLE users ADD join_date DATETIME

이미 정의 된 경우 join_date 열 제거

1
ALTER TABLE users DROP COLUMN join_date DATETIME

join_date라는 새 필드 추가

1
db.users.updateMany({},{$set:{‘join_date’: new Date()})

컬렉션의 모든 문서가 현재 날짜로 참가 날짜가 되도록 업데이트됩니다.

이미 정의 된 경우 join_date 필드 제거

1
db.users.updateMany({},{$unset:{‘join_date’: “”})

모든 콜렉션 문서에서 join_date 필드가 제거됩니다.

열 / 필드를 추가하거나 삭제하여 스키마의 구조를 변경합니다.

MongoDB 아키텍처는 문서 구조에 대해 엄격하게 시행하지 않기 때문에 문서마다 필드가 다를 수 있습니다.

UserId 열을 오름차순으로 하여 내림차순으로 인덱스 만들기

1
2
CREATE INDEX idx_UserId_asc_Age_desc
ON users(UserId)

UserId 및 Age 필드와 관련된 인덱스를 만듭니다.

1
db.users.ensureIndex( { UserId: 1, Age: -1 } )

쿼리 프로세스를 용이하게 하기 위해 인덱스가 일반적으로 생성됩니다.

1
2
3
4
5
6
INSERT INTO users(UserId,
                  Age,
                  Gender)
VALUES ("user1",
        25,
        "M")
1
2
3
4
5
6
db.users.insert( {
       UserId: "bcd001",
       Age: 25,
       Gender: "M",
     Name: "Berry Hellington",
} )

새 레코드 삽입

1
2
DELETE FROM users
WHERE Age = 25
1
db.users.deleteMany( { Age = 25 } )

나이가 25 인 테이블 / 컬렉션에서 레코드 삭제

1
DELETE FROM users
1
db.users.deleteMany({})

테이블 / 컬렉션에서 모든 레코드 삭제

1
SELECT * FROM users
1
db.users.find()

모든 테이블 / 컬렉션이있는 users 테이블 / 컬렉션의 모든 레코드를 반환합니다.

1
SELECT id, Age, Gender FROM users
1
2
3
4
db.users.find(
   { },
   { Age: 1, Gender: 1 }
)

연령, 성별 및 기본 키 열이 있는 사용자 테이블 / 컬렉션의 모든 레코드를 반환합니다.

1
SELECT  Age, Gender FROM users
1
2
3
4
db.users.find(
   { },
 { Age: 1, Gender: 1,_id: 0}
)

Age 및 Gender 열 / 필드가 있는 users 테이블 / 컬렉션의 모든 레코드를 반환합니다. 기본 키는 생략되었습니다.

1
SELECT * FROM users WHERE Gender = “M”
1
db.users.find({ Gender: "M"})

성별 값이 M으로 설정된 users 테이블 / 컬렉션에서 모든 레코드를 반환합니다.

1
SELECT Gender FROM users WHERE Age = 25
1
db.users.find({ Age: 25}, { _id: 0, Gender: 1})

성별 값만 있고 나이 값이 25 인 users 테이블 / 컬렉션의 모든 레코드를 반환합니다.

1
SELECT * FROM users WHERE Age = 25 AND Gender = ‘F’
1
db.users.find({ Age: 25, Gender: "F"})

성별 값이 F로 설정되고 연령이 25 인 users 테이블 / 컬렉션의 모든 레코드를 반환합니다.

1
SELECT * FROM users WHERE  Age != 25
1
db.users.find({ Age:{$ne: 25}})

Age 값이 25가 아닌 users 테이블 / 컬렉션의 모든 레코드를 반환합니다.

1
SELECT * FROM users WHERE Age = 25 OR Gender = ‘F’
1
db.users.find({$or:[{Age: 25, Gender: "F"}]})

성별 값이 F로 설정되거나 연령이 25 인 users 테이블 / 컬렉션의 모든 레코드를 반환합니다.

1
SELECT * FROM users WHERE Age > 25
1
db.users.find({ Age:{$gt: 25}})

사용자 테이블 / 컬렉션에서 Age 값이 25보다 큰 모든 레코드를 반환합니다.

1
SELECT * FROM users WHERE Age <= 25
1
db.users.find({ Age:{$lte: 25}})

나이 값이 25 이하인 users 테이블 / 컬렉션의 모든 레코드를 반환합니다.

1
SELECT Name FROM users WHERE Name like "He%"
1
2
3
db.users.find(
  { Name: /He/ }
)

사용자 테이블 / 컬렉션에서 이름 값이 He lette 인 모든 레코드를 리턴합니다.

1
SELECT * FROM users WHERE Gender = ‘F’ ORDER BY id ASC
1
db.users.find( { Gender: "F" } ).sort( { $natural: 1 } )

Gender 값이 F로 설정된 users 테이블 / 컬렉션에서 모든 레코드를 반환하고이 결과를 MySQL의 경우 id 열의 오름차순으로 정렬하고 Mongo의 경우에는 시간을 삽입합니다.

1
SELECT * FROM users WHERE Gender = ‘F’ ORDER BY id DESC
1
db.users.find( { Gender: "F" } ).sort( { $natural: -1 } )

Gender 값이 F로 설정된 users 테이블 / 컬렉션에서 모든 레코드를 반환하고 MySQL의 경우 id 열의 내림차순으로 정렬하고 Mong의 경우 시간을 삽입합니다.

1
SELECT COUNT(*) FROM users
1
db.users.count()

or

1
db.users.find().count()

users 테이블 / collecti의 모든 레코드를 계산합니다.

1
SELECT COUNT(Name) FROM users
1
db.users.count({Name:{ $exists: true }})

or

1
db.users.find({Name:{ $exists: true }}).count()

사용자 테이블 / 컬렉션에서 이름 prope에 대한 값을 갖는 모든 레코드를 계산합니다.

1
SELECT * FROM users LIMIT 1
1
db.users.findOne()

or

1
db.users.find().limit(1)

users 테이블 / coll의 첫 번째 레코드를 반환합니다

1
SELECT * FROM users WHERE Gender = ‘F’ LIMIT 1
1
db.users.find( { Gender: "F" } ).limit(1)

성별 값이 F 인 사용자 테이블 / 컬렉션의 첫 번째 레코드를 리턴합니다.

1
SELECT * FROM users LIMIT 5 SKIP 10
1
db.users.find().limit(5).skip(10)

처음 5 개 레코드를 건너 뛴 후 users 테이블 / 컬렉션의 5 개 레코드를 반환합니다.

1
UPDATE users SET Age = 26 WHERE age > 25
1
2
3
4
db.users.updateMany(
  { age: { $gt: 25 } },
  { $set: { Age: 26 } }
)

사용자 테이블 / 컬렉션에서 25 ~ 2 세 이상의 모든 레코드의 연령을 설정합니다.

1
UPDATE users SET age = age + 1
1
2
3
4
db.users.updateMany(
  {} ,
  { $inc: { age: 1 } }
)

사용자 테이블 / 컬렉션에 있는 모든 레코드의 나이가 1 씩 증가합니다.

1
2
UPDATE users SET age = age - 1
WHERE id = 1
1
2
3
4
db.users.updateMany(
  {} ,
  { $inc: { age: -1 } }
)

이는 users 테이블 / collectio에서 첫 번째 레코드의 나이를 줄입니다.




  • 트위터로 보내기
  • 페이스북으로 보내기
  • 구글플러스로 보내기
  • 카카오톡으로 보내기

페이지 정보

조회 58회 ]  작성일19-08-21 12:24

웹학교