목록DataBase (24)
만족
https://startatage30.tistory.com/12 [MongoDB] 우분투(ubuntu 20.04)에 (몽고디비)mongodb 설치 1. wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add - 2. echo "deb [ arch=amd64, arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list 3. sudo ap startatage30.tistory.com
몽고디비를 캐시서버 역할로 사용중이다. 약 1년쯤 되었는데, 상당한 용량이 쌓여 오랫동안 사용되지 않은 데이터는 정리했다. # mongo shell use DB_NAME db.COLLECTION.deleteMany(...); 대략 이런 느낌으로 해서 6달 이상 사용되지 않은 데이터 약 100~200만개를 삭제했다. 그런데 삭제가 완료되었음에도 디스크 용량을 뱉어내질 않는다. 몽고디비는 공간이 남더라도 이후 쓰여질 document를 위해 disk space를 반환하지 않는다고 한다. 디스크 용량 회수 use DB_NAME db.runCommand({ compact: 'COLLECTION_NAME' }); 을 사용하여 해당 컬렉션의 비어 있는 디스크 공간을 회수할 수 있다. 이것을 모든 컬렉션에 대해 반복하..
몽고디비 커넥션이 갑자기 끊기고 작동하지 않았다. mongod 커맨드로 로그를 확인해본 결과 제목과 같은 오류를 얻을 수 있었다. NETWORK [initandlisten] Failed to unlink socket file /tmp/mongodb-27017.sock 해결법 로그에 찍힌 저 파일에 접근하지 못한다는 뜻이다. 따라서 파일의 소유권을 올바르게 변경해 주거나, 삭제하면 다시 시작할 때 몽고가 알아서 복구한다. //solution 1 sudo chown USER_NAME /tmp/mongodb-27017.sock //solution 2 sudo rm /tmp/mongodb-27017.sock 이후 몽고를 재시작한다. sudo service mongod restart https://stackove..
collection 이름이 matches인 데이터셋에서 2021-06-30 이전에 작성된 모든 데이터를 출력하려고 한다. 작성 날짜는 cacheDate라는 attribute에 저장되어 있고 date 타입이다. db.matches.find({cacheDate: {$lt: ISODate("2021-06-30")}}) $lt는 less than의 약자다. 2021-06-30 이후 작성된 모든 데이터를 출력하려면 $gt(greater than)을 사용하면 되겠다.
mongodb는 외부 접속이 기본적으로 막혀 있다. 외부에서 DB 접속 클라이언트를 사용해 접속하기 위해서는 조금 설정을 바꾸어 주어야 한다. https://ianlondon.github.io/blog/mongodb-auth/ How to connect to your remote MongoDB server I have MongoDB running on my Ubuntu server in Amazon EC2. Since there’s no simple all-in-one tutorial out there explaining how to set up user authentication for Mongo so that you can read and write to your MongoDB server from ..
데이터베이스의 성능을 좌우하는 주요 요소인 인덱스에 대해 알아보자. 데이터베이스의 크기가 충분히 크지 않을 때(테이블 하나에 10000개정도?)는 인덱스를 걸지 않아도 딱히 눈에 띌만한 성능 저하가 나타나지는 않지만 10만개, 100만개처럼 늘어나다보면 문제가 두드러진다. 예를 들어, 위 쿼리 결과는 800만개의 행이 저장된 테이블에 대해 무지성 쿼리를 날린 결과인데, 실행 시간이 5초나 걸렸다. 엥? 5초면 괜찮은거 아니냐? 할 수도 있는데, 우리가 데이터베이스를 주로 사용하는 환경은 단일 사용자가 아닌 다중 사용자 대상이므로 여러 명의 사용자가 저런 쿼리를 날리게 되면 걸리는 시간은 더욱 늘어난다. 게다가, 느리기만 하면 그나마 다행이지... 컴퓨팅 자원도 엄청나게 소모한다. https://satis..
SELECT table_schema "DB Name", Round(Sum(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB" FROM information_schema.tables GROUP BY table_schema; 위 SQL로 확인해볼 수 있다. 정상적으로 잘 표시되는 것을 확인할 수 있다. 수정 없이 그대로 갖다 붙이면 된다.
이번에는 데이터 모델링 시 유용하게 사용할 수 있는 패턴들에 대해 알아볼 것이다. Association Pattern 어떤 두 개체가 연관이 있기는 한데, 개체의 속성으로 추가하기에는 애매한 상황일 때 적용할 수 있다. 가령 음식 개체와 음식 제조 회사 개체가 있을 때, 모든 음식 제조 회사가 같은 음식을 만들 때 같은 가격과 같은 재료를 사용하지는 않는다. 이럴 경우 음식 가격과 음식 재료에 대한 정보를 회사 개체에 넣을 것인지, 음식 개체에 넣을 것인지가 애매해진다. 연관 패턴을 적용하면, 음식 가격/재료 속성을 포함하는 음식 제품이라는 새로운 개체를 만들고 음식 개체와 음식 제품 개체는 1:N 관계, 음식 제조 회사 개체와 음식 제품 개체가 1:N 관계를 갖게 만들 수 있다. Multivalued ..