다음을 포함한 데이터베이스에서의 기본적인 데이터 입출력을 다룬다. 컬렉션에 새 도큐먼트 추가하기 컬렉셔네서 도큐먼트 삭제하기 기존 도큐먼트 갱신하기 연산(operation)을 수행할 때 안전성과 속도 중 맞는 수준 선택하기 3.1 도큐먼트 삽입 삽입은 몽고DB에 데이터를 추가하는 기본 방법이다. 컬렉션의 insertOne 메서드를 사용한다. db.movies.insertOne({"title": "STand by Me"}) 3.1.1 insertMany 여러 도큐먼트를 컬렉션에 삽입하려면 insertMany로 도큐먼트 배열을 데이터베이스에 전달한다. 코드가 삽입된 각 도큐먼트에 대해 데이터베이스로 왕복하지 않고 도큐먼트를 대량 삽입(bulk insert)하므로 훨씬 효율적이다. insertMany는 여러 ..
몽고DB는 매우 강력하면서도 진입장벽이 낮다. 몽고 DB의 기본 개념을 소개한다. 몽고DB 데이터의 기본 단위는 도큐먼트이며, 이는 관계형 데이터베이스의 행과 유사하다(하지만 더 다양한 자료 표현이 가능하다.) 같은 맥락에서 컬렉션(collection)은 동적 스키마(dynamic schema)가 있는 테이블과 같다. 몽고DB의 단일 인스턴스는 자체적인 컬렉션을 갖는 여러 개의 독립적인 데이터베이스를 호스팅한다. 모든 도큐먼트는 컬렉션 내에서 고유한 특수키인 "_id"를 가진다. 몽고 DB는 몽고 셸(The mongo Shell)이라는 간단하지만 강력한 도구와 함께 배포된다. mongo 셸은 몽고DB 인스턴스를 관리하고 몽고DB 쿼리 언어로 데이터를 조작하기 위한 내장 자원을 제공한다. 또한 사용자가 다..
몽고 DB 몽고 DB는 강력하고 유연하며 확장성 높은 범용 데이터베이스이다. - 보조 인덱스(secondary index) - 범위 쿼리(range query) - 정렬(sorting) - 집계(aggregation) - 공간 정보 인덱스(geospatial index) 1.1 손쉬운 사용 몽고 DB는 관계형 데이터베이스가 아니라 도큐먼트 지향 데이터베이스다. 관계형 모델을 사용하지 않는 주된 이유는 분산 확장을 쉽게 하기 위함이지만 다른 이점도 있다. 도큐먼트 지향 데이터베이스에서는 행 개념 대신에 보다 유연한 모델인 도큐먼트(document)를 사용한다. 내장 도큐먼트와 배열을 허용함으로써 도큐먼트 지향 모델은 복잡한 계층관계를 하나의 레코드로 표현할 수 있다. 이 방식은 최신 객체 지향 언어를 사용..
트랜잭션의 격리 수준(isolation level) 여러 트랜잭션이 동시에 처리될 때 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있게 허용할지 말지를 결정하는 것 격리 수준 Dirty Read Non-Repleatable Read Phantom Read READ UNCOMMITTED 발생 발생 발생 READ COMMITTED 없음 발생 발생 REPEATABLE READ 없음 없음 발생 (innoDB는 없음) SERIALIZABLE 없음 없음 없음 4개의 격리 수준에서 순서대로 뒤로 갈수록 각 트랜잭션 간의 데이터 격리(고립) 정도가 높아지며, 동시 처리 성능도 떨어지는 것이 일반적이다. 격리 수준이 높아질수록 MySQL 서버의 처리 성능이 많이 떨어질 것으로 생각하는 사용자가 ..
update query를 사용할 때, set절에 multi row가 입력되어야 하는 경우가 있습니다. update 대상 테이블 set 업데이트할 칼럼 = ( 업데이트 값 추출 서브 쿼리); ex) update MEMBER a set mod_date = ( select reg_date from MEMBER_HISTORY b where member_seq in (1,2,3) and a.member_seq = b.member_seq); MSSQL multiple row update https://055055.tistory.com/34 [MSSQL] multiple row update update query를 사용할 때, set절에 multi row가 입력되어야 하는 경우가 있습니다. update 대상 테이블 ..
한동안 JPA로 개발을 하다가 이직하며 오랜만에 mybatis로 개발을 하게 됐다. 기존 레거시 소스를 수정하는 부분이 있었는데 수정 후 아래와 같은 오류가 나타났다. mybatis invalid comparison: java.util.ArrayList and java.lang.String 왜 발생했을까.. 소스는 이런 형태이다. 변경 전 소스 AND ITEM_STATUS IN (${itemList}) 변경 후 소스 AND ITEM_STATUS IN #{item} itemList는 예전에는 String 타입으로 데이터를 A,B 이런식으로 강제로 넣어 줬었다. 이번에 소스를 수정하게 되며 기존에 java소스단에서 String으로 받던 것을 ArrayList로 받도록 하여 mybatis에서 foreach로 ..
MS-SQL은 기본 설정이 AUTO_COMMIT으로 되어있습니다. INSERT, UPDATE, DELETE 등 명령어를 사용할 때 COMMIT 명령어를 입력할 필요가 없습니다. 그렇기 때문에 UPDATE, DELETE 쿼리 수행 중 실수를 하게 된다면... 지옥을 경험할 수도 있습니다.. ㅠㅠ 예를 들어서 MEMBER라는 테이블이 있다고 가정하겠습니다. 멤버 테이블의 회원 삭제는 이력을 남기기 위해서 소프트 delete처리를 합니다. 이런일이 생기면 안되겠지만, 쿼리를 사용하여 회원을 삭제한다고 가정하겠습니다. UPDATE MEMBER SET DELETED = 1 WHERE MEMBER_SEQ = 1; 위와 같이 정상적으로 작성하면 좋겠지만, 우리는 사람이라 가끔 실수를 하곤 합니다. UPDATE MEM..
update query를 사용할 때, set절에 multi row가 입력되어야 하는 경우가 있습니다. update 대상 테이블 set 업데이트할 칼럼 = 업데이트 값 from 테이블 where 조건 ex) update MEMBER set MOD_DATE = a.REG_DATE from ( select MEMBER_SEQ, REG_DATE from MEMBER_HISTORY where MEMBER_SEQ IN(1,2,3)) a where MEMBER.MEMBER_SEQ = a.MEMBER_SEQ; oracle multiple row update https://055055.tistory.com/55 [ORACLE] multiple row update update query를 사용할 때, set절에 multi..
- Total
- Today
- Yesterday
- 이것이 자바다
- MSSQL
- 슬랙
- java
- 몽고DB 완벽가이드
- update query set multiple
- update query
- update set multiple
- 뱅크샐러드
- multiple row update
- 다중 업데이트
- 이펙티브자바
- SpringBoot
- 슬랙 /
- update set multi
- spring-boot-starter-data-redis
- springboot https
- Slack
- 뱅셀 유전자
- gradle
- update query multi row
- 슬랙봇
- 업데이트 쿼리
- update query mutiple row
- vue.js
- 그레이들
- 뱅크샐러드 유전자
- 싱글턴
- visual studio code
- effectivejava
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |