목록DB (15)
오늘은 몰랐으면 내일은 알면 된다
[Schema, Model] 폴더구조를 다음과 같이 만들고, User API를 만들기 위해서 User.js파일을 생성한다. const mongoose = require('mongoose') const UserSchema = new mongoose.Schema({ }) Schema에는 User라는 객체는 어떠한 key value를 가지는지, 각 key value의 필수 여부등의 정보를 명시해준다. 그러면 mongoose에서 Schema에 맞는 데이터인지 한번 확인을 거치고 맞는 경우에 DB에 저장을 해준다. const UserSchema = new mongoose.Schema({ username: {type: String, required: true}, name: { first: {type:String, ..
Asynchronous Programming Event Driven, Non Blocking I/O 가게에 가서 웨이터가 주문을 받는다고 해보자. 기존의 동기식 프로그래밍으로 치면, 웨이터는 1. 한 손님의 주문을 받고 주방장에게 전달한다음 2. 요리가 끝날때까지 대기하고, 3. 완료가 되면 해당 손님에게 요리를 가져다준다. 따라서 여러명의 손님이 온다고 하면 대응할 수 없는 문제점이 있는데, 이를 해결하기 위해서는 웨이터의 수를 늘리게 된다. 그러나 테이블이 늘고 손님이 늘어날 때마다 웨이터를 늘릴 수는 없는 노릇이다. 또한 웨이터는 요리가 진행되는 동안 그냥 대기만 하는 수밖에 없기 때문에, 웨이터라는 자원을 낭비하는 셈이 된다. 이렇게 하는 대신에, 웨이터는 손님들에게서 주문이 들어올 때마다 바로바..
간단히 express 모듈을 돌려보자. 아래는 express 페이지에 들어가면 확인할 수 있는 기본적인 문법이다. require 이라고 하면, npm에서 해당 모듈을 불러온다는 모양이다. const express = require('express') const app = express() app.get('/', function (req, res) { res.send('Hello World') }) app.listen(3000, function() { console.log("3000번에서 도는 중") }) npm run start 해보면, 3000번 포트에서 서버가 동작하는 것을 확인할 수 있다. 그러나 코드를 수정하면 실시간으로 반영되지 않는 것을 확인할 수 있는데, 이를 위해서 nodemon이라는 것을..
https://nodejs.org/ko/download/ 다운로드 | Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org JavaScript를 서버사이드에서 실행시켜주는 것이라고 한다.(자세한 것은 다음에..) 설치를 완료하면 cmd에서 다음과 같이 확인할 수 있으며, node 명령어를 통해서 js 를 사용할 수 있다. node와 npm이 필요하다고 한다. ctrl+c를 두 번 눌러서 나올 수 있다. npm은 node package manager를 의미한다고 한다. 아래의 사이트에서 필요한 모듈을 찾고 사용할 수 있다. https://www.npmjs.com/ npm Bring the best..
compass를 열어서 간단한 조작을 해보자. 아래의 Shell을 열어서 몇가지 입력해보았다. db를 선택하는 명령어인데, 이렇게 선택한다고 생기는 건 아니고 데이터가 생성이 되면 그때그때 생성이 되는 시스템이라고 한다. 데이터를 하나 넣어보자. users라는 db에 하나의 데이터를 넣었다는 것 같다. 그렇다면 넣은 데이터는 어떻게 보느냐? 여러가지 find 메소드가 있다는 것 같다. find 만 해보면 아래와 같이 insert된 데이터를 확인할 수 있다. 이제 데이터를 하나 더 추가해보자. 그런데 이번에는 name에 객체를 넣어볼 것이다. 그 다음 확인해보면 아래와 같이 서로 다른 데이터 형식이 들어간 것을 확인할 수 있다. RDBMS에서 표 형식으로 데이터를 저장하는 것과 다르게, MongoDB에서는..
1. mongoDB atlas preferences 로 가서 Create New Organization을 선택한다. 2. 적당한 이름을 넣고 Next를 선택한다. 그 다음 나오는 Pernission을 누구한테 줄 것인가 하는 화면은 생략하고, Project를 만들어보자. 마찬가지로 적당한 이름을 넣고 프로젝트를 생성해준다. 또 마찬가지로 권한을 줄 수 있는데, 생략한다. 강의와는 약간 다른데, Build a Database를 선택한다. 그 다음, 무료버전을 선택한다. 그러면 아래와같이 cloud provider를 선택하는 화면이 나오는데, 여기서 클라우드 이용 비용은 atlas측에서 지불한다고 한다. 적당한 클러스터명을 입력하고 생성해준다. 생성이 되면 아래와 같이 화면이 나오게 되는데, connect를..
Oracle DB 와 ojdbc 간의 버전 차이때문에 발생하는 에러이다. 아래의 글을 참고하였다. aljjabaegi.tistory.com/379 ORA-28040: 일치하는 인증 프로토콜 없음, No matching authentication protocol 해결방법 ORA-28040: 일치하는 인증 프로토콜 없음, No matching authentication protocol 해결방법 ※ 발생원인 ojdbc14.jar 를 사용하는데, Oracle 11g 에서 Oracle 12c 로 업데이트 하였을 경우 버젼 차이에 의한 에러.. aljjabaegi.tistory.com 1.첫번째로 ojdbc를 8 버전으로 바꿔주었다. 2.두번째로는 sqlnet.ora 의 하단에 아래와 같이 추가해주었다. SQLNE..
간만에 오라클을 쓰려고하니 정말 난리법석이 아닐 수 없다. 설치하고 hr 계정을 열어준 것 까지는 좋았는데, 어째선지 계속 connection이 성공하질 못했다. sqldeveloper에서도 그렇고, 이클립스에서도 그렇고. 제일 처음에는 IO Exception이 뜨면서 연결이 되지 않는다고 했다. 프로젝트에서 사용했던 db.properties에서 localhost라고 표기가 되어있어서 문제인가? 하고 ip주소로 바꿔보았더니 이제는 아래와 같은 에러들이 뜬다. SID 를 잘못 준 것 같다. 그럼 SID는 어디서 알 수 있을까? 아래의 블로그를 참고하였다. hunit.tistory.com/211 Oracle〃ORA-12505 오류해결 Listener refused the connection with foll..
개인 프로젝트를 한번 다시 볼 일이 있어서 정말 간만에 오라클 db를 설치했다. hr 계정을 사용하려는데 hr 계정을 여는 방식이 뭔가 내가 전에 알던 방법과 좀 다르길래 포스팅을 해놓고자 한다. 일단 무턱대고 검색결과로 나온 hr_main.sql을 실행했더니 다음과 같은 처참한 꼴이 났다. ALTER USER HR ACCOUNT UNLOCK IDENTIFIED ~ 를 해봤으나 HR 계정이 존재하지 않기 때문에 실행할 수 없다고 한다. 그래서 찾아봤더니 다른 방법이 있었던 모양이다. HR 스키마를 먼저 설치해야 한다고 한다. 1. 먼저 시스템 계정으로 접속한다. 설치할 때 설정해놓았던 비밀번호를 입력한다. conn sys/as sysdba 2. 다음을 차례대로 입력한다. SQL> ALTER SESSION..
평소와 같이 작업을 하고 있는데 몇분전까지는 잘 되더니 갑자기 DB에러가 뜨기 시작했다. debug 로그를 확인해보니 아래와 같았다. Cause: java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction; Lock이 걸렸으니 트랜잭션을 재시작하라고 한다. 결론만 이야기하면 나의 경우에는 commit이 되지 않아서 Lock이 걸린 상태였고, commit을 하니 해결이 되었다. 그런데 만약에 commit 문제가 아니라 트랜잭션이 밀리거나 오류가 발생해서 Lock이 걸려버린 경우에는 트랜잭션을 어떻게 확인하고 어떤 조치를 취할 수 있는것일까? 아래의 블로그를 참고하였다. www.popit.kr/mysql-lock-%EC%83%8..