본문 바로가기
데이터 시각화 및 애플리케이션 개발/AI 컴퓨터 비전프로젝트

AI 컴퓨터 비전 프로젝트_2개월차_데이터베이스와 MongoDB

by 바다의 공간 2024. 6. 6.

1. 데이터

데이터(data)는 정보나 사실들의 원시적이고 구조화되지 않은 형태입니다. 

이것은 숫자, 문자, 이미지, 소리  다양한 형태로 나타날  있습니다. 

예를 들면, 온도 측정 결과, 사진, , 음성 녹음 파일 등이 데이터에 해당합니다.


2. 데이터베이스

데이터베이스(database)는 관련된 데이터를 체계적으로 저장하고, 관리하고, 검색할 수 있도록 설계된

전자적 시스템입니다.

간단히 말하면, 데이터베이스는 "정보의 보관소" 같습니다.

데이터베이스를 사용하면 크거나 작은 양의 데이터를 안전하게 저장하고 필요할  쉽게 찾아낼  있습니다.


3. 데이터베이스 관리 시스템(소프트웨어)

DBMS 데이터베이스 관리 시스템(Database Management System) 약자입니다. DBMS 데이터베이스를 생성하고, 유지하고, 조작하기 위한 소프트웨어 도구의 집합입니다. 일반적으로 DBMS는 두 가지 유형으로 나뉩니다.

 

1. RDBMS (관계형 데이터베이스 관리 시스템): 데이터를 2차원 테이블 형태(엑셀 비슷)로 저장하며, 테이블 간의 관계를 정의할 수 있는 시스템입니다. 예로는 Oracle, MySQL, Microsoft SQL Server, PostgreSQL 등이 있습니다.

비슷한 테이블을 여러개를 만들어서 저장하는 형식입니다. 그래서 관계형이라고 불림

데이터베이서를 조작하기 위해서SQL이라는 언어를 사용합니다.

 

2. NoSQL DBMS: 관계형 모델을 사용하지 않는 데이터베이스 시스템으로,  데이터 량이나 유동적인 데이터 구조를 지원하기 위해 설계되었습니다. 예로는 MongoDB, Cassandra, Redis 등이 있습니다.

단점은 속도가 조금 느리지만 장점은 굉장히 안정적입니다.

✔️ 데이터의 인풋,아웃풋의 속도가 중요하기문에  AI쪽에서는 가장 많이 쓰이는 DBMS는 NoSQL입니다.

 

 DB-ENGINES

데이터베이스 관리 시스템을 매월 검색엔진에서 노출 빈도 등 다양한 요소로 DB를 평가하여 순위를 지정해 주는 사이트

https://db-engines.com/en/ranking

 

DB-Engines Ranking

Popularity ranking of database management systems.

db-engines.com


4. MongoDB

MongoDB(몽고디비) NoSQL 데이터베이스 시스템  하나로, 문서 지향(document-oriented) 데이터베이스입니다. 이는 관계형 데이터베이스와는 다르게 데이터를 테이블이 아니라 JSON 스타일의 BSON(Binary JSON) 형식의 문서로 저장합니다. MongoDB 개발자가 유연하게 데이터를 저장하고 *쿼리  있도록 하는 목적으로 만들어진 것이며, 대규모의 분산 데이터베이스 환경에서도  동작합니다.

*쿼리 : 데이터를 넣고 빼고 하는 행동.

 

문서 지향 데이터베이스: MongoDB는 데이터를 BSON 형식의 문서로 저장합니다. 이 문서는 키-값 쌍(key-value pairs)으로 이루어져 있으며, 여러 종류의 데이터 유형을 포함할 수 있습니다.

 

스키마 없음 (Schema-less): 관계형 데이터베이스와 달리 MongoDB는 데이터베이스의 스키마를 명시적으로 정의하지 않습니다. 이는 동적인 스키마를 사용하여 데이터 모델을 유연하게 변경할 수 있도록 합니다.

 

유연한 데이터 모델: MongoDB는 다양한 데이터 형식을 지원하며, 중첩된 문서와 배열을 허용하여 복잡한 데이터 구조를 표현할 수 있습니다.

 

분산 데이터베이스: MongoDB는 여러 서버에 데이터를 분산하여 저장하고 처리할 수 있는 분산 데이터베이스 시스템을 지원합니다.

 


5. MongoDB Cloud

소프트웨어로 컴퓨터에서 설치를 해야하지만 cloud 서비스로 웹에서 연습해볼 수 있도록 서비스를 합니다.

 

MongoDB Cloud는 MongoDB 데이터베이스를 클라우드 환경에서 제공하는 서비스입니다. 

MongoDB Cloud는 MongoDB, Inc.가 제공하는 공식 클라우드 서비스로서, MongoDB를 쉽게 관리하고 배포할 수 있도록 도와줍니다.

이 서비스는 데이터베이스 클러스터를 호스팅하고 관리하며, 사용자는 몽고DB 클라우드를 통해 데이터베이스를 쉽게 설정하고 확장할 수 있습니다.

 

 

클라우드 접속(Free)

https://www.mongodb.com/atlas/database

 

MongoDB Atlas Database | Multi-Cloud Database Service

The multi-cloud database service at the heart of our developer data platform that accelerates and simplifies how you build with data. Try MongoDB Atlas today!

www.mongodb.com

 

MongoDB Shell 다운로드

https://www.mongodb.com/try/download/shell

 

Try MongoDB Tools - Download Free Here

Free download for MongoDB tools to do more with your database. MongoDB Shell, Compass, CLI for Cloud, BI Connector and other database tools available.


5-1. MongoDB Cloud+Shell  가입&이용

* 가입 시 비밀번호는 자동으로 생성되는걸 기록해두기!

* network Access에서 IP를 0.0.0.0/0 을 입력해주기

설정하는 이유는 몽고디비의 데이터를 구축하고 파이썬이나 다른 언어를 활용하여 연계를 할건데,

파이썬을 만든 프로그램의 IP가 어디있느냐를 묻는건데,

공유기를 사용하거나 하면 IP가 안 잡힐수도있으니 다 열어둡니다.

즉 IP를 활용하여아무나 들어올 수 있도록 설정해줍니다. 

 

*MongoDB Shell

개발자도 원격지에 있기에 접속해야해서 접속tool을 다운로드 받도록 합니다.

링크로 들어가면 본인 컴퓨터에 맞게 셋팅이되어있고 다운로드만 누르면 됩니다.

그 이후 bin 폴더 안에 들어가면 실행파일이 있고 실행을 하면 프롬포트가 나오게 됩니다.

프롬포트에 내가 사용할 경로를 입력해주면 되고 프롬포트에 입력해주면 

'

이 모습이 나오면 정상적으로 나오게 되는겁니다.

 

이후 몽고디비와 연결하기 위해서는 2번 3번의 Install your driver아래에 나와있는 코드를 내가 사용할 연결할 프로그램에

복사, 입력해주면 됩니다.


6. MongoDB 문법

내 컴퓨터를 통해서 클라우드에 데이터를 넣는것이라서 프롬포트로 데이터를 생성,제거하면 됩니다.


 

데이터베이스 확인

show databases

 

 

데이터베이스 생성

*기존에 있다면 그 데이터베이스를 선택해주는 역할합니다.

use aiproject

 

 

컬렉션 생성

-컬렉션은 하나의 자료 덩어리를 의미합니다.

-"user"라고 쓰면 user컬렉션이 됩니다.

-쉽게 말해서 저장폴더가 만들어졌다고 생각하면 됩니다

db.createCollection("user")

 

 

컬렉션 확인

show collections

 

 

데이터 추가

-데이터를 넣을때는 딕셔너리 형태로 넣어주면 됩니다.

-key:value

 

db.user.insertOne({userid: "apple", name: "김사과", age: 20})

-몽고디비는 틀이 정해져있지않고 그냥 값만 있으면 들어갑니다

그래서 동일한 값이나 이름이 있어도 덮어쓰이는것이 아니라 그대로 하나 더 생성이 됩니다.

이렇게되면 같은 이름이나 값은 어떤게 어떤건지 잘 모르기에 MongoDB에서 ObjectId라는것을 자동생성해줍니다. 

 

데이터 조회

#전체조회
db.user.find()

#userid가 apple인사람만 조회
db.user.find({"userid":"apple"})


#ObjectId가 6657174874b992fafecdcdf6인 id만 조회
db.user.find({"_id":ObjectId("6657174874b992fafecdcdf6")})

 

 

데이터 수정

db.user.updateOne({userid: "apple"}, {$set: {age: 25}})

 

 

데이터 삭제

db.user.deleteOne({userid:"apple"})

를 이용하여 데이터를 사용할 수 있습니다.


7. 파이썬을 활용한 MongoDB

파이썬을 활용한 MongoDB를 이용하기 위해서는 

(저는) 이전에 사용했던 구글코랩을 이용하게됩니다.

위에는 프롬포트of컴퓨터, 현재는 구글코랩을 사용할 수 있는 문법들입니다.


구글코랩의 파이썬 버전확인

!python --version

버전이 확인되어야 몽고디비에 맞는 파이썬 버전을 선택할 수 있기때문에 확인해야합니다.

 

 

구글코랩에서 드라이브서버 설치

!python -m pip install "pymongo[srv]"==3.11

 

파이몽고, 몽고클라이언트 를 임포트하기.

from pymongo import MongoClient

여기서 만약 설치중 오류가 발생되었다면 선모두 다시시작을 눌러 시작하면 오류가 해결이 됩니다.

 

코랩-몽코디비클라우드 연결

url = 'mongodb+srv://korea:PLph5FCClyaUqSw3@cluster0.vru6slk.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0'
client = MongoClient(url)
print(client)

 

 

database = client['aiproject'] # DB명
collection = database['user'] # collection명

7-1. 데이터 추가하기

user_insert = {'userid':'banana', 'name':'반하나', 'age':25}
result = collection.insert_one(user_insert)
print(f'입력된 데이터 id: {result.inserted_id}')

7-2. 데이터 조회

MongoDB
구글코랩

7-3. 데이터 수정

$set을 이용하여 데이터 수정할 수 있습니다.

변경된 값이 제대로 들어갔다면 변경성공 이라고만 print될 수 있도록 해줍니다.

update_one는 하나만 변경되는 매소드입니다.

user_update = {"userid":"orange"}
new_value = {"$set":{"age":31}}
collection.update_one(user_update,new_value)
print('데이터 변경 성공!')​
MongoDB

7-4. 데이터 삭제

update_one는 하나만 변경되는 매소드입니다. 즉 하나만 삭제가 되는 매소드인거죠.

user_delete = {"userid":"orange"}
collection.delete_one(user_delete)
print('데이터 삭제 성공!')

이렇게 되면 하나는 사라지게 됩니다. 확인은 MongoDB에서 확인할 수 있습니다.

 

*CRUD(Create: 테이블을 생성하거나 insert하는것을 의미함, Read, Update, Delete)

 

이상 데이터베이스 가지고 CRUD(넣고, 빼고, 바꾸고, 지우고)하는것을 해보았습니다.