MySQL 뿐만 아니라 다른 쿼리 언어에서도 가장 많이 사용되는 것이 아마 데이터 조회에 사용되는 select문일 것입니다.. 이 select문을 가장 많이 사용되면서 간단하지만 반대로 가장 어려울 수도 있는 부분입니다.데이터베이스에 존재하는 데이터 중에서 원하는 정보만 찾아오려면 select문과 함께 사용되는 다양한 키워드에 익숙해져야합니다. 이 들 중에서 많이 사용되는 것은 where, and, or, between 그리고 like 등등이 있습니다. 그 외에 기호도 사용되죠. || , % 등등... 아래에는 많이 사용되는 이 키워드와 기호를 정리해보고자 합니다.아래의 예제들은 이 다양한 방법을 사용하여 테이블안에 있는 필드에서 원하는 값만 찾는 방법들입니다. like, not을 이용한 방법외에도 여러가
Last Modified : 2017-12-11 07:25:17데이터베이스, SQL과 관련된 내용을 찾다보면 용어 부분이 이해하기 어렵거나 혼동을 주기도 합니다. 아래는 데이터베이스와 관련된 용어를 간략하게 정리한 내용입니다.! RDBMS, 관계형 데이터베이스에 사용되는 용어기본적으로 많이 사용되는 용어들 위주로 정리하였습니다.Database(데이터베이스)// 저장소에 구분되는 가장 큰 단위로 백업, 복구 등의 기준이 되기도 함Table(테이블)// 데이터베이스에 저장되는 가장 큰 단위의 테이블은 여러 개의 테이블이 하나의 데이터베이스에 생성 될 수 있으면 기본적인 쿼리문을 수행하고 인덱스를 설정할 수 있는 단위Column(컬럼)// 테이블의 세로 줄 하나 하나를 컬럼이라고 부름. 날짜, 시간, 제목 등등 하나의 특징들이 컬럼으로 나뉘어 짐Row(행)// 여러 개의 컬
Last Modified : 2020-08-08 13:21:04MongoDB(몽고db)를 사용하면서 외부파일을 가져오거나 내보낼 경우가 있을 수 있습니다. 백업을 위한 경우도 있으며 아니면 서버를 이전하면서 기존의 데이터베이스를 마이그레이션(Migration)하려고 많은 데이터를 한번에 옮길 수도 있겠죠~ 그럼 아래는 어떻게 import 또는 export하는지 알아보겠습니다.참고로 비슷한 기능으로 mongodump, mongorestore 명령어가 있습니다. 이 명령어는 컬렉션 일부 등을 선택하여 보내거나 가져오는 목적과 달리 데이터베이스 전체를 내보내고 가져오는 경우에 많이 사용하니 참고하시기 바랍니다. 아래 링크를 참고하세요.링크 바로가기 >https://webisfree.com/2020-08-20/[mongodb]-몽고db-mongodump-그리고-mongores
Last Modified : 2021-04-05 10:40:30MongoDB를 사용하는 경우 서비스를 시작 또는 중지하는 방법입니다. OS에 따라 다를 수 있습니다.# Linux 환경아래 명령어는 mongodb의 시작, 재시작, 중지, 상태보기 등을 수행합니다.service mongodb startservice mongodb restartservice mongodb stopservice mongodb status? /var/run/mongodb/mongod.pid exists 에러가 발생하는 경우이 경우 인증, 퍼미션 부분이 해결되어야 합니다. 아래 명령어를 수행 후 다시 확인해보세요.sudo rm /var/run/mongodb/mongod.pidsudo chown mongod:mongod /tmp/mongodb-27017.sockservice mongod status
Last Modified : 2017-08-07 08:02:22서버와 통신하기 위해 동기식 또는 비동기식 방법을 택할 수 있습니다. 아무래도 비동기식 방법은 서버에 부하를 덜어주기 때문에 유용한데요... 제 블로그의 경우 포스팅을 수정하거나 등록시 기존의 동기식 방법을 비동기식으로 변경하였습니다. 변경을 통해 얻을 수 있던 장점들은 아래와 같습니다.! 비동기식 변경 후 장점1. 서버에 전달 할 내용이 비동기식으로 변경하여 전체 소스를 읽는 리소스 낭비가 없다.2. 1번 덕분에 자동 저장 기능을 만들 수 있다. 예를 들어 30초 마다 자동으로 서버에 데이터 전송(기존 방식은 리소스 부담으로 어려움)# 비동기식 방법을 위한 자바스크립트 코드 추가<script>$(function() { var save_bt = $('#save_bt'); // 저장할 버튼을 변수에 선언 sa
Last Modified : 2015-11-02 17:59:07몽고DB, MongoDB에서 Auth 사용시 즉 권한 설정이 되어 있는 경우 로그인 방법에 대하여 알아봅니다.먼저 username, password가 설정된 경우에 Shell에서 로그인하려면 인증(Auth)이 필요합니다. 이때 인증을 수행하여 Mongo Shell에 접속하는 방법은 아래와 같습니다.# MongoDB에 사용자, 패스워드로 로그인 방법아래에서 admin은 admin 권한으로 로그인하겠다는 뜻입니다. 뒤의 username과 패스워드를 사용해 mongodb에 접근하도록 합니다.> mongo admin -u username -p 'password'이때 password는 따옴표를 사용하여야 에러가 발생 안하므로 주의하여야 합니다. 위 방법대로 해야 에러가 안나고 Mongo Shell에 접속이 가능합니다
Last Modified : 2018-04-06 05:32:23input 태그의 checkbox 속성을 사용한 값들이 하나가 아닌 여러개인 경우 이 값들이 서버에서 불러오게 된 뒤 자동으로 체크되게하려면 어떻게 해야하는지 알아보려 합니다.먼저 서버에 저장 할 경우 넘겨주는 name 값을 배열로 넘겨줍니다. 아래처럼요#1. 작성될 폼 양식<form><input name="fruit[]" type="checkbox" class="fruitValue" value="사과" />사과</span><input name="fruit[]" type="checkbox" class="fruitValue" value="배" />배</span><input name="fruit[]" type="checkbox" class="fruitValue" value="바나나" />바나나</span></f
Last Modified : 2015-11-06 01:16:22여러이유가 있겠지만 MongoDB의 권한설정은 반드시 필요합니다. 대표적인 이유로 개발중에 remote ip가 필요한 경우가 Auth 설정은 필수적입니다.RemoteIp를 열어둔 경우 ip주소와 port만 알면 누구나 접속할 수 있어 해킹의 위험이 발생합니다. 외부 접속이 반드시 필요하다면 Auth를 사용하기 위해서 User 및 Password를 설정해야합니다.# MongoDB Auth 설정방법 알아보기먼저 아래는 Auth 설정에 필요한 단계입니다. 순서대로 필요한 과정을 설정해야합니다.1. admin 데이터베이스 선택2. 사용할 User 및 Password 추가하기3. auth 권한설정으로 mongoDB 실행하기위 과정은 몽고DB에서 권한 설정하여 사용하는 방법입니다. 자세하게 알아보겠습니다.! admin
Last Modified : 2018-04-06 05:14:00일반적으로 단일 서버로 운영하거나 아니면 데이터베이스 서버를 분리하여 사용하는 경우가 많습니다. 그렇다면 이 둘의 차이점은 무엇이고 언제 그리고 왜 이렇게 사용하는지 알아보려고 하니다.# 서버 구축시 단일 서버와 데이터베이스 서버 분리 방법의 차이는?일반적으로 단일 서버를 사용하는 경우... 즉 WAS 서버와 Database서버를 하나의 머신에 사용할 경우 여러가지 이유에서 사용하지 않을 것을 권장합니다. 그리고 분리하면 더 많은 동시 접속이 가능하다고 알려져 있습니다. 그렇다면 무조건 분리하는 것이 나은 선택일까요? 아니면 두 방식의 장단점이 있을까요?먼저 이 둘의 차이점(단일 서버에서 데이터베이스 서버를 분리한 경우)은 물리적으로 아래와 같습니다.@ 단일 서버 구성웹 클라이언트 => 연결 <= 웹서버
Last Modified : 2020-06-16 20:18:29만약 MongoDB에서 특정 컬럼이 있거나 없는 경우의 쿼리문을 작성하고자 합니다. 어떻게 하면 컬럼의 존재 여부를 적용하여 찾을 수 있을까요? 아래에서 알아봅니다.# MongoDB에 없거나 있는 컬럼으로 쿼리문 작성쿼리문에 find()를 사용하여 일치하는 데이터를 가져오려고 합니다. 이때 name이라는 필드가 있는 경우의 데이터만 필요할 수 있겠죠. 아니면 반대로 name 이름의 컬럼이 없는 데이터만 가져와 name의 값을 추가할 필요도 있을 것입니다. 이때 사용 가능한 방법이 바로 $exists입니다.$exists // <boolean> 컬럼의 여부 바로 간단한 예제를 만들어 보겠습니다.!MongoDB 컬럼이 없는 경우의 데이터 불러오기아래는 쿼리문을 사용하여 만약 name 이름의 컬럼이 없는 경우만 해
Last Modified : 2020-10-21 11:50:06MongoDB 전체 개수를 가져오는 가장 쉬운 방법에 대하여 알아봅니다. 데이터베이스에서 가져온 컬렉션이 몇개인지 확인하려면 아래의 쿼리문을 사용합니다.# MongoDB에서 불러온 컬렉션의 전체개수불러온 collection의 개수를 알려면 count()를 사용하여 가능합니다.db.collection.count()예를들어 컬렉션이 가진 개수가 총 10개라면 위 결과는 10이 나타나게됩니다. 여러 방법들 중에서 가장 쉽고 많이 사용되는 방법이죠.
Last Modified : 2017-10-21 09:15:36Flask를 사용하여 Python을 구동하는 경우 디버깅(Debugging)을 목적으로 중단점(breakpoint)을 설정하여 사용하고 싶다면 어떻게 해야하는지 알아봅니다.! breakpoint(중단점)브라우저의 개발자 모드에서는 쉽게 자바스크립트 코드에 중단점을 설정하여 사용하죠. 서버 언어 역시 중단점을 사용하여 디버깅할 수 있으며 Python의 Flask 역시 가능한데요 ~ 중단점을 설정하면 코드에 에러를 수정할 때 매우 편리하게 사용할 수 있죠. 설정한 breakpoint에서 코드의 다음 단계로 넘어가지 않고 멈춰있어 어떤 부분이 문제가 있는지 쉽게 파악하고 수정 가능합니다.참고로 중단점을 사용하는 방법은 위와 같이 코드에 추가하여 사용하는 방법과 VSC(Visual Studio Code) 등의 에디
Last Modified : 2019-08-01 08:08:52개발환경을 한 곳이 아닌 여러 곳에 세팅 된 경우 파일 등은 git 또는 svn을 사용하여 작업하면 되지만 데이터베이스의 경우는 이런 방식을 적용하기 어렵습니다. remote 백업을 활용하는 방법 역시 있겠지만 업데이트가 빈번하다면 이것 역시 다소 번거로울 수 있죠. 이런 경우 외부에서 바로 데이터베이스에 접속하는 Remote Access를 활용하는 방법이 있습니다.# 리눅스 기준 MongoDB 외부 접속 가능하도록 변경하기 먼저 /etc/mongod.conf 파일에 접근하여 수정합니다.vim /etc/mongod.conf이제 bindIp 0.0.0.0과 같이 설정된 곳을 찾아 주석처리합니다.bindIp 0.0.0.0 // 변경 이전# bindIp 0.0.0.0 // 변경 후mongoDB
Last Modified : 2017-08-16 17:08:38SQL이 새로운 시대를 맞이하고 있다. NoSQL의 등장이후 변화의 모멘텀을 찾지 못했던 sql에게 클라우드(cloud)가 등장하면서 다시 한번 활기를 불어넣을 것 같다. 클라우드 sql은 무엇이고 차이점 및 장단전에 대하여 알아보고자한다.최근들어 여러업체에서 클라우드 데이터베이스 서비스를 제공하기 시작했다. 대표적으로 ms의 azure(애저)와 구글의 Google Cloud SQL, AWS가 대표적이다. 이 들 서비스들 모두 클라우드 sql의 대표적인 서비스 제공업체이며 Cloud DB와 NoSQL 역시 제공하고 있다. 데이터베이스 클라이두는 이제 본격적인 시작을 알리듯 치열한 홍보가 여러 곳에서 진행중으로 보이는데 이처럼 앞으로 DB 핵심 키워드는 클라우드 데이터베이스가 될 것으로 예상된다. 그럼 클라우
Last Modified : 2017-09-21 00:13:25데이터베이스로 사용되는 Redis와 MongoDB를 비교하는 글을 작성하려고 합니다.# Redis와 MongoDB 비교하기글을 시작하기에 앞서서 두 데이터베이스를 비교하는 것 자체는 무리가 있습니다. 그 이유는 보통 Redis와 MongoDB를 함께 사용하는 경우가 더 많기 때문입니다...이런 이유로 장점과 단점을 따지기는 조금 어렵습니다. 둘 다 사용하는 목적이 다르고 그 목적에 따라 각각의 장점을 지니고 있습니다.! 아래는 간략한 두 DB의 비교입니다.아래는 간략한 두 DB의 비교입니다. 두 개의 쓰임 및 목적에 차이가 있어 아무래도 비교보다는 어떤 장점이 있는지에 초점을 맞추었습니다.<table border="1"><tr><td bgcolor="#999" align="center">구분</td><td
Last Modified : 2020-07-23 23:25:31데이터베이스의 조인이랑 다수의 테이블을 서로 묶어서 사용함에 있어 '조인(Join)한다'라고 합니다. 이때 서로 다른 테이블중 최소 하나의 필드는 서로 같은 값을 가지는 조인할 수 있는 컬럼(필드)이 반드시 필요합니다. 뒤의 예제는 각각의 id필드가 동일할 때 사용할 수 있습니다.조인(join)에서 각각의 테이블에 별칭(alias)를 설정할 수 있으며 별칭은 FROM절의 참조테이블 뒤에 한 칸 띄고 입력하면 됩니다. 이때 주의할 점이...i. 동일한 별칭이 존재할 수 없음ii. 테이블 내의 필드명과 동일한 별칭은 사용말 것위의 내용이 반드시 지켜져야만 합니다.그러면 아래에는 서로 다른 테이블의 조인 방법을 예제를 통해 알아보겠습니다. 만약 아래와 같이 두개의 서로 다른 테이블이 존재한다면...table 1
Last Modified : 2015-11-15 14:57:30얼마 전 수 많은 데이터를 처리해야하는 웹사이트를 구축하면서 데이터베이스를 NoSQL, MongoDB로 처리하였습니다. MongoDB를 사용했던 이유는 조금이라도 빠르고 간단한 개발 프로세스가 목적이었죠. 혼자서 개발에 많은 시간을 최대한 줄이려면 상대적으로 NoSQL이 편하다고 생각했습니다.# NoSQL 성능 개선 및 팁 정리아래는 MongoDB를 사용하면서 겪었던 어려움과 성능 개선을 위한 방법들을 정리한 내용입니다. 이 중에서도 중요한 부분들을 위주로 적어보았습니다.! 정확하고 효과적인 인덱스 설정RDB와 마찬가지로 많은 데이터베이스가 인덱스 기능을 지원합니다. 산재된 수 많은 데이트를 검색할 때 인덱스를 설정한 것과 하지 않는 것은 검색이나 소팅을 수행할때 엄청난 속도 차이를 보여주게됩니다. 또한 인
Last Modified : 2018-03-12 23:19:27하나가 아닌 여러개의 값을 서버에서 받아 MongoDB에 저장하려고 합니다. 예를들어 다수의 글이나 목록 등을 저장하려면 어떻게하면 될까요? 먼저 클라이언트의 요청을 서버에 전달해야합니다. 만약 request로 데이터를 전달할때 다수의 값은 어떻게 받을 수 있을까요?# Python flask에서 배열로 값을 전달받기items로 전달된 값을 우리는 배열로 받아 저장해야합니다. 하나가 아니니까요... 원래 하나의 값은 아래처럼 받았었죠.request.form.get('item')하지만 이번에는 다수의 값이므로 배열로 받아 처리해야합니다. 아래 코드처럼 get을 getlist로 변경하여 수행합니다. 참고로 Django에서는 getList를 사용합니다. 이처럼 배열로 받는 경우는 여러개의 파일을 첨부하여 처리할때도
Last Modified : 2020-08-06 09:41:12Webisfree에는 다양한 메뉴가 존재하고 있다. 간단하게 HTML, CSS, Javascript 마지막으로 PHP의 카테고리가 존재한다고 생각해보자.이 메뉴들이 보여지는 순서를 만약 관리자가 직접 변경하는 것이 가능하다면? 또한 이렇게 구현하기 위한 방법으로 데이터베이스의 구조에 대하여 어떤 설계가 필요할지 논의해보고자 한다. 예를들어 ... 아래의 A는 B가 되고 싶다.< A >1. PHP2. HTML API3. Javascript< B >1. HTML2. PHP3. Javascript일반적으로 생성시점... 날짜에 따라 순서가 정해질 것이다. 또는 문자의 오름 및 내림차순으로 정렬할 수도 있다. 하지만 뭔가 더 중요하다고 판단되는 것이 위에 나오게 하기 위한 방법이 기획자의 의도라면?# 순서를 정하기
Last Modified : 2017-02-01 13:47:57간단한 몽고DB관련 명령어 및 MongoDB CLI(Command Line Interface)에서 사용 가능한 간단한 명령어들도 함께 알아보겠습니다. 먼저 데이터베이스를 조작하는 방법입니다.# 데이터베이스 관련 명령어 알아보기MongoDB CLI에서 출력, 조회를 비롯하여 생성, 삭제 등등의 다양한 명령어입니다. 아래에서 확인해보세요.! 설치된 모든 데이터베이스 리스트 출력하기존재하는 모든 데이터베이스를 보여줍니다.> show dbs> show databases아래와 같이 현재 MongoDB에 저장된 모든 데이터베이스의 이름과 크기를 출력합니다. 만약 local, test라는 데이터베이스를 가지는 경우라면 아래와 같이 나타납니다.local (empty)test 0.099GB여기서 local은 기본으
Last Modified : 2020-10-22 14:26:35만약 MongoDB 데이터베이스에서 무작위로 아무 값이나 가져오려면 어떤 방법이 있을까요? 아래에서 한번 알아봅니다.# MongoDB 컬렉션에서 랜덤한 값 가져오기아래 방법은 가장 많이 사용되는 간단한 방법들입니다.! skip() size를 랜덤하게 바꾸는 방법다양한 방법이 존재하나 그 중에서 가장 쉽고 편리한 방법이라 할 수 있습니다. 만약 아이템의 개수가 총 100개라면 skip()값을 랜덤하게 0부터 99까지 설정하면 매우 쉽게 가능합니다. 그럼 아래 예제를 봐주세요.! MongoDB 데이터베이스 내용컬렉션 site에는 다음과 같이 총 3개의 값이 있다고 가정합니다. 우리는 여기서 랜덤한 값을 불러오려 합니다.* DB명 : site{ id: 1, name: web}{ id: 2, name: is
Last Modified : 2017-10-24 10:24:37몽고DB를 비롯하여 NoSQL 역시 다른 Database, RDBMS처럼 인덱스 설정이 필요합니다. 그렇지 않으면 Slow Query 등 검색, 소팅 단계에서 성능에 큰 차이가 발생할 수 있습니다. 아래는 MongoDB에 인덱스를 설정하는 방법과 조회, 추가 및 관련 예제를 자세히 알아봅니다.# MongoDB 인덱스 조회 및 확인하기가장 먼저 설정된 인덱스를 조회하기 위한 방법입니다. 현재 설정된 MongoDB의 인덱스를 확인하기 위해서는 getIndexes()를 사용합니다.> db.collection.getIndexes()명령어를 실행하면 아래와 같이 나타납니다.[ { 'v': 1, 'key': { '_id': 1 }, 'name': '_id', 'ns': 'co
Last Modified : 2020-12-23 13:20:32MongoDB에 접속하는 경우 만약 뒤늦게 Auth 설정을 하였다면 Python에서도 MongoDB에 Auth설정이 필요합니다. 아래는 Auth 설정된 MongoDB에 접속하는 방법입니다.# 기존 코드먼저 원래 설정된 MongoClient() 설정코드입니다.client = MongoClient('mongodb://127.0.0.1:27017') 위 코드는 변경 전 코드입니다. 설정된 Auth값의 id와 password를 MongoClient()에 아래와 같이 추가합니다.# 수정된 코드이제 Auth설정이 된 코드입니다. 앞에 user와 password정보를 추가합니다.client = MongoClient('mongodb://myUser:password1234@127.0.0.1:27017')위 예제는 id가 m
Last Modified : 2018-02-12 01:34:03MongoDB(몽고DB)에서 특정 문자열을 찾아 모든 row의 값 한 번에 바꾸려고 합니다. 어떻게 하면 될까요? 이 경우 find() 쿼리에 forEach() 루프를 사용하여 전체 row에서 특정 문자열을 replace()를 사용하여 변환할 수 있습니다. 다시 말해 아래의 두 가지 과정이 필요합니다.- forEach()를 사용하여 모든 row의 값을 변경하기- 찾아 변경하기 위해서 replace() 사용하기그럼 아래에서 자세히 알아보고 동시에 간단한 예제를 만들어 보겠습니다.! MongoDB 전체 문서에서 특정 문자열을 모두 변경하는 방법아래는 컬렉션 이름이 site인 MongoDB가 있습니다. 이제 replace()를 사용하여 이전 문자열을 변경할 문자열로 바꿀 수 있겠죠.db.site.find().f
Last Modified : 2021-02-03 13:08:47가장 넓리 사용되는 Storage Engine 중 MyISAM과 InnoDB를 빼놓을 수는 없을 것입니다. 각각의 장점과 단점, 그리고 가장 큰 차이점은 무엇인지 알아보도록 하겠습니다. 우선 이 둘이 무엇인지 간략하게 알아봐야겠죠.먼저 일반적인 기업에서는 아무래도 복구 등의 기능을 가진 트랜잭션(Transaction)이 매우 중요하기 때문에 InnoDB를 사용하는 곳이 많을 것입니다. 특히 쇼핑몰처럼 많은 쿼리가 발생할 경우 InnoDB를 선호할 수 있다하겠습니다.1. MyISAM- ISAM의 업그레이드된 엔진임- 단순한 기능을 제공하는 대신 빠른 속도를 제공한다. (특히 Select문 반복사용시)- 무결성에 대한 보장이 되지 않는다.- 풀텍스트 인덱싱이 가능하다.- 테이블 단위의 락이 이루어짐2. Inno
Last Modified : 2016-05-03 01:27:54요즘은 워낙 많이 사용되고 있는 nosql에 대하여 알아보겠습니다. 왜 NoSQL이 등장하였고 그 이유는 무엇이며 장점은 무었일까요...기존의 데이터베이스의 대부분은 거의 모두 RDBMS, 즉 관계형 데이터베이스입니다. 시작 역시 그러했고 아직까지 대부분의 기업이 NoSQL의 등장하였지만(Google을 예외) 대부분 RDBMS를 구축하여 사용하고 있습니다. 물론 두 가지 형태의 DB를 혼합하여 각자의 장점만을 이용하는 기업도 나타나고 있습니다. 구글처럼 말이죠~ 지금까지 주로 사용되던 관계형 데이터베이스 RDBMS는 데이터들을 단순히 저장하기 보다 좀 더 구조화, 분석화하여 기업의 필요에 좀 더 부합된 데이터베이스 시스템이였습니다. 그렇기 때문에 데이터를 분류하고 관리하는데 보다 효과적이라 할 수 있습니다
Last Modified : 2015-11-15 14:31:19어제 새롭게 서버 이전을 계획하던 웹페이지에 접속했더니 데이터베이스의 자료를 읽어오지 못하던 오류가 나타났습니다... 갑자기 무슨 일인가 싶어 db에 직접 연결해보니 사용하던 MongoDB의 collection이 존재하지 않더군요. 이게 무슨 일인가 싶었는데 컬렉션을 조회해보니 모르는 데이터베이스가 새로 생성되어 있었습니다. 그 이름이 JUST_READ_ME였습니다..."혹시 해킹?"불길한 마음에 내용을 읽어보니 제 데이터를 보관하고 있다는 내용입니다. 내용은 길지 않았고 너는 해킹을 당했으며 아래로 비트코인을 보내라는 내용이었습니다. 또한 문의사항은 secmail.pro라는 곳의 이메일 계정으로 보내도록 되어있더군요... 그래서 알았습니다. 해킹은 결코 남의 일이 아니라는 것을!# 어떻게 해킹을 당했는가다
Last Modified : 2017-08-16 17:02:01어플리케이션 아키텍처(Architecture) 단계에서 많이 고려되는 Redis 데이터저장소에 대하여 자세히 알아봅니다. Redis는 무엇이고 어떤 장점과 단점이 있는지 그리고 설치하는 방법 등에 대하여 알아봅니다.# Redis란 무엇인가, Redis의 이해Redis는 Remote Dictionary Server의 약자입니다. Redis는 In-Memory 방식으로 메모리를 사용하여 CRUD를 수행, 데이터를 저장하는 Data Storage입니다. NoSQL 방식의 데이터베이스로 Redis는 다른 데이터저장소에 사용되는 하드디스크(HDD), SSD 방식이 아닌 메모리를 사용하므로 성능 및 속도가 매우 빠르다는 장점이 있습니다. 다만 메모리는 용량에 따른 비용이 기하급수적으로 커지기 때문에 일반적으로 텍스트
Last Modified : 2020-08-09 12:23:20쿼리를 사용할 때 함게 사용가능한 함수들이 있습니다. 이런 함수를 사용하면 복잡한 쿼리문을 간단하게 코드에서 함수와 함께 사용하여 만들 수 있는데 아래는 자주쓰이는 대표적인 SQL 함수들을 정리한 내용입니다. 그럼 아래 목록을 봐주세요.!! 숫자 및 날짜 관련된 함수들1. ROUND() // 반올림을 수행SELECT ROUND(Column1, range of decimals)FROM tableA;2. TO_CHAR() // 현재의 타입에서 문자타입(String)으로 변환함SELECT TO_CHAR('ABC1234', 옵션)FROM tableC;3. TO_NUMBER() // 현재의 타입에서 number타입인 숫자로 변환함SELECT TO_NUMBER('ABC1234', 옵션)FROM tableD;4. TO_
Last Modified : 2016-01-13 13:15:14이번에 관계형 데이터베이스(RDBMS)에서 NoSQL로 이전을 진행하였습니다. 이런 과정에서 느낀 점들을 정리하려고합니다.? 왜 NoSQL로 바꾸었는가처음에는 스키마가 없는 구조의 NoSQL을 사용하여 성능 향상을 이루러던 것이 가장 큰 목적이었습니다. 하지만 RDBMS도 데이터에 따라서 어떤 솔루션을 사용하느냐에 따라서... 그리고 성능을 개선한 정도에 따라서 많은 속도 차이가 있더는 것을 알았습니다. 즉, 반드시 NoSQL이 빠르다고는 볼 수 없겠죠.? 직접 써보고 싶은 욕구"그렇다면 한번도 안써본 NoSQL을 사용해보자"라는 이유에서 선택하였습니다. 호스팅 역시 Cloud 형태의 AWS로 이전하였기에 AWS에서 제공하는DynamoDB를 사용할까 생각하였지만 NoSQL은 MongoDB를 먼저 접하는 것
Last Modified : 2017-08-16 17:08:50다수의 DB에 연결할 일이 있을 수 있습니다. 또 다른 보유한 호스트에 다른 DB가 있다면? 그런데 그 DB 역시 하나의 페이지에서 함께 보여줘야하는 경우가 될 것입니다. 아래는 일반적인 DB 연결방법입니다.$dbc = mysqli_connect("127.0.0.1", "user", "password", "db_name", "port_name");$query = "SELECT * FROM db_name;";$data = mysqli_query($dbc, $query);위 과정은 일반적으로 사용하는 하나의 DB를 연결할때 방법입니다. 두 개를 사용하기 위해 dbc2를 만들어보겠습니다.$dbc2 = mysqli_connect("128.128.128.1", "user", "password", "db_name",
Last Modified : 2015-11-15 19:24:30MongoDB에서 find()를 사용하여 원하는 문서를 검색할 때 하나의 필드가 아닌 여러개의 필드 안에서 값을 찾는 방법에 대하여 알아봅니다.예를들어 만약 webisfree라는 키워드를 mongodb에서 검색하고자 할때 제목뿐만 아니라 본문과 태그에서도 검색되도록 하기 위해서 여러개의 컬럼에서 검색이 되도록 하려면 쿼리문을 어떻게 작성하면 될까요?! $or를 사용하여 여러개의 컬럼에서 찾기이때 사용 가능한 방법이 바로 $or를 사용하는 방법입니다. 즉 쿼리에 or 조건을 사용해 여러개의 컬럼에서 모두 검색할 수 있겠죠. 만약 아래와 같이 데이터가 MongoDB에 존재하는 경우를 생각해봅니다.@ Collection: website{ title: '웹이즈프리', content: 'Hello, Hi, Goo
Last Modified : 2020-11-04 09:59:03Python에서 pymongo를 사용하는 예제에 대하여 알아봅니다. pymongo는 파이썬에서 MongoDB를 사용할 수 있는 모듈 이름입니다. 참고로 아래 예제는 Flask를 사용하였습니다.* 디렉토리 구조--- app.py | |--- templates | |--- fruits.html위 구조와 같이 render_template()은 templates 경로에 위치한 해당 파일을 불러옵니다.먼저 PyMongo가 설치되지 않은 경우 설치가 필요합니다. pip를 사용하여 pymongo를 설치합니다. 그 전에 pip 패키지 라이브러리를 최신버전으로 업그레이드 하면 좋을 것입니다. 아래와 같이 실행합니다.$ pip install --upgrade pip$ pip install pymongo#
Last Modified : 2018-02-12 01:51:21MongoDB를 사용하는 경우 만약 웹페이에 새로운 유저가 방문시 방문자 카운트 필드의 값을 +1 하려고 합니다. 어떻게하면 될지 아래에서 알아봅니다.! MongoDB에서 auto incrementMongoDB는 다른 RDBMS처럼 auto increment를 설정하는 것이 없습니다. 즉 자동으로 숫자를 1씩 더할 수 없기 때문에 아래와 같이 직접 쿼리문에 1을 더하여 업데이트하는 방법이 필요합니다. 아래에서 자세히 알아봅니다.# MongoDB 특정 필드 값에 1 더하기auto increment 대신 MongoDB에서 숫자 1을 더하는 방법으로 $inc 연산자를 사용할 수 있습니다. 이를 사용하면 간단하게 해당하는 필드의 값을 변경할 수 있죠.$inc: { 필드명: 변경할 값의 크기 }위와 같이 방법은 간단
Last Modified : 2020-11-16 17:25:53웹사이트의 글을 읽다보면 이전글 또는 다음글로 이동하는 링크를 볼 수 있습니다. 만약 MongoDB를 사용하는 경우 이전 또는 다음글을 가져오려면 어떻게해야할까요?# MongoDB에서 이전글 다음글 구현방법아래의 쿼리문은 특정한 필드를 기준으로 이전 또는 다음에 위치한 아이템을 가져오는 방법입니다. 우선 아래와 같은 과정으로 수행합니다.1. 기준이 되는 글 찾기2. 이전 글 또는 다음글을 쿼리를 사용하여 찾기먼저 아래는 현재 글을 찾는 일반적인 쿼리문입니다. _id 필드명을 기준으로 이전 또는 다음 값을 찾아보려합니다.this_id = collection.find_one({'_id': myId})['_id']변수 this_id는 기준이 되는 글의 id값을 저장하고 있습니다. 이 id값을 기준으로 이전 또는
Last Modified : 2017-09-26 11:19:15데이터베이스를 생성할 경우 선택 가능한 타입이 존재하는데 innodb 또는 isam 등을 선택할 수 있습니다. 이 방법들은 각각 장단점이 존재합니다. 이에 대하여 알아보겠습니다.InnoDB(이노디비)의 장점은 트랜잭션(transaction)의 사용이 가능하다는 점, 그리고 외래키의 사용 역시 가능한 점입니다. 트랜잭션 기능을 사용하면 서버에 업데이트시 롤백(Rollback) 및 커밋(Commit) 등등 다양한 기능을 수행할 수 있습니다.이노디비(innodb)가 가진 단점이라면 조금 느리다는 점이있을 수 있겠습니다.참고로, 이노디비는 테이블의 생성 뒤에도 엔진타입의 변환이 가능합니다. 아래의 예제코드를 봐주세요.alter table name type=innodb;! 트랜잭션이란?위에 언급한 InnoDB의 장
Last Modified : 2015-11-15 14:55:45MongoDB에서 컬렉션 이름을 변경하려면 어떻게 하는지 알아봅니다.# MongodB 컬렉션 이름 변경하는 방법컬렉션 이름을 다른 것으로 바꾸는 방법입니다. 이 경우 renameCollection() 명령어를 사용합니다.db.myCollection.renameCollection('변경 할 컬렉션 이름')간단하게 예를들어 현재 posts라는 컬렉션이 존재하는 경우 이를 articles로 바꾸려면 mongo cli에 접속 후 아래와 같이 입력합니다.db.posts.renameCollection( "articles" )// Okay위와 같이 실행 후 기존 컬렉션 이름은 새롭게 변경됩니다.- 기존 컬렉션 이름 : posts- 변경 후 컬렉션 이름 : articles추가로 아래에서는 adminCommand()를 사용
Last Modified : 2020-07-17 21:37:27MongoDB에서 삭제할 데이터가 있는 경우 remove()를 사용합니다. 만약 find()에 sort(), limit()이 적용된 값들을 삭제하려면 어떻게 할까요?# MongoDB 데이터에서 sort() limit() 적용된 값 삭제방법collection에 find()를 사용하면 커서 객체를 반환되며 여기에 sort(), limit()을 적용할 수 있습니다. 하지만 이렇게 찾아낸 결과값을 삭제하는 메소드는 없기때문에 이와 같은 방법으로 삭제할 수는 없겠죠. 그렇다면 다른 방법은 없을까요? 이 경우 toArray()와 map()을 사용하는 방법이 있습니다. 아래에서 알아보세요.! 배열로 변환 후 변수에 id값을 저장하여 삭제하기반환된 커서객체를 배열로 변환... map()을 사용하여 id값을 모두 반환합니다
Last Modified : 2018-02-17 06:31:35MongoDB에서 컬렉션 조건으로 검색할 경우 AND 및 OR 조건에 따른 정규표현식 검색 방법을 알아봅니다.먼저 아래를 봐주세요.nameStr: 'webisfree again';nameStr 필드가 다음의 값을 가지는 경우 검색 조건 AND, OR을 알아봅니다.! AND 조건을 수행하는 방법만약 web 그리고 again이 포함된 데이터를 찾을 경우 아래의 정규식을 사용합니다.nameStr.match(/(?=.*web)(?=.*again)/)정규식에서 사용하는 AND 조건식 방법입니다.! OR 조건을 수행하는 방법만약 web 또는 again이 포함된 데이터, 즉 OR 조건인 경우를 찾는다면 아래의 정규식을 사용합니다. 비슷해 보이나 중간에 | 기호가 있습니다.nameStr.match(/(?=.*w
Last Modified : 2020-11-03 17:43:07MongoDB client를 설치 후 접속하기 위해 mongo 커맨더를 입력할 경우 만약 아래와 같이 에러 메시지를 보았다면 어떻게 할까요?mongoclient couldn't connect to server이 경우 mongoclient에서 cli에 접속할 수 없기에 나타납니다. 원인은 몇 가지가 있을수있는데 아래와 같은 경우를 의심해야합니다.! MongoClient만 설치되고 서버에 서비스될 MongoDB가 설치되지 않은 경우이 경우 아래와 같이 mongodb를 설치하고 다시 시도하면 가능합니다. mongoclient는 서버 데이터베이스에 필요한 모든 기능이 아닌 커맨드라인 인터페이스를 제공합니다.sudo apt-get install mongodb! MongoDB 서비스가 동작중이지 않은 경우데이터베이스
Last Modified : 2018-02-12 02:44:26몽고DB의 컬렉션에서 Document를 찾은 후 이를 출력할 때 정렬(sorting)하는 방법을 알아봅니다.# MongoDB find() 후 정렬하는 방법MongoDB의 데이터를 원하는 방식으로 정렬하고자 합니다. 먼저 원하는 데이터만 찾기 위해서 find()를 사용하고 반환된 cursor 객체에 sort() 함수를 사용해 아래와 같이 정렬 할 수 있습니다.db.collectionName.find().sort(sort조건)여기서 조건값을 설정하는 방법을 아래에서 간략하게 알아보겠습니다.조건값은 정렬할 필드명과 1, -1을 사용하여 오름차순 또는 내림차순을 결정하게됩니다. 아래처럼 사용되죠.db.site.find().sort({ 'date': -1 })여기서 sort() 메소드의 내부에 소팅할 값을 key와
Last Modified : 2020-07-30 10:43:03MongoDB를 사용하는 경우 만약 불필요한 컬럼이 존재할 수 있습니다. 예전에는 사용했었지만 현재는 사용하지 않는 경우의 필드가 그런 경우가 되겠죠.이 경우 더 이상 필요없는 컬럼은 바로 삭제하는 것이 좋을 것입니다. 그렇다면 어떻게 하면 MongoDB의 컬럼을 삭제할 수 있을까요? 아래에서 알아봅니다.# MongoDB 불필요한 컬럼 삭제하는 방법이때 많이 사용하는 방법 역시 update를 사용하는 쿼리문입니다. update는 컬렉션의 값을 새롭게 변경하거나 추가할 수도 있지만 반대로 삭제하는 것도 가능합니다. 이를 위해서 추가로 연산자 $unset을 사용해야 합니다.db.collection.update( { 'columnName': { '$exists': true } }, // 일치하는 컬럼, 필드를
Last Modified : 2021-04-11 19:38:32MongoDB에서 두 개 이상의 컬렉션을 특정 필드 값을 기준으로 하나로 합치는 방법에 대하여 알아봅니다.# MongoDB 컬렉션 필드 기준 합치기컬렉션을 하나로 합치는 방법은 몇 가지가 있습니다. 그 중에서 csv나 엑셀 등의 포맷으로 변경하는 방법도 하나의 방법입니다.! Collection 엑셀, csv로 합치기말 그대로 csv, excel 포맷을 변경한 후 다시 합치는 방법입니다. 간략하게 설명하면 아래와 같습니다.하나. 여러 개의 MongoDB 컬렉션들을 텍스트 파일로 변경둘. 하나의 파일로 합친 다음 다시 MongoDB로 옮기기위와 같이 저 각 컬렉션 데이터를 csv나 엑셀로 변환하기 위해 먼저 모든 데이터를 export합니다. 그 후 일치 될 필드를 기준으로 vlookup을 사용해 추가할 값을 찾
Last Modified : 2020-07-30 20:51:42만약 AWS 환경에 아마존 리눅스를 사용하는 경우 MongoDB를 인스톨하는 경우 아래와 같이 수행합니다.먼저 Amazon Linux의 경우 기본적인 프로그램들이 미리 설치되어 있을 것입니다. 여기에 yum을 사용하여 MongoDB를 설치합니다. 먼저 리눅스 환경에 repository 설정을 완료하여야합니다./etc/yum.repos.d/mongodb-org-3.0.repo 파일을 생성한 후 아래의 설정을 추가합니다.파일을 생성할 경우 아래처럼 vim을 사용할 수 있을 것입니다.sudo vim /etc/yum.repos.d/mongodb-org-3.0.repo이제 repository에 대한 설정이 끝났습니다. 아래의 설정을 추가하세요.[mongodb-org-3.0]name=MongoDB Repositoryb
Last Modified : 2019-02-09 10:28:05ubuntu 환경의 MongoDB(몽고db)에서 에러가 발생하거나 동작하지 않는 경우 해결 방법에 대하여 알아봅니다.! MongoDB에러가 발생하는 원인은?언제 에러가 발생할까요? 일반저긍로 아래와 같은 수행 이 후 예기치 못 한 에러가 나타날 가능성이 높습니다. - mongodb 재설치 이 후- 최신버전의 mongpdb 업데이트 이 후- 데이터베이스 쿼리 변경원인은 여러가지가 있을 수 있습니다. 정확한 원인을 파악하기 위해 가장 중요한 것은 무엇보다 동작하지 않을 때의 로그 메시지를 잘 확인하고 대응하는 것이 중요하죠.아래는 각 현상에 따라 해결할 수 있는 방법들을 구분하였습니다.@ dbpath 데이터 베이스를 찾지 못하는 경우데이터 저장소의 위치를 찾지 못하는 경우가 발생할 수 있습니다. mongodb
Last Modified : 2020-09-16 12:25:12제이쿼리 1.8부터 사용이 가능한 메소드 addBack()에 대하여 알아보겠습니다. 아래는 기본적인 사용방법입니다..addBack().이어서 수행 할 메소드 및 속성;addBack() 메소드를 수행하면 이전에 선택되었던 제이쿼리 요소를 반환합니다. 즉 이전에 선택된 요소를 찾기 위한 노력이 줄어들 수 있습니다. 자세한 내용은 아래 예제를 참고해주세요.# addBack() 예제보기아래는 addBack() 메소드를 사용하여 이전 요소를 선택하는 방법입니다. 만약 선택한 요소가 가진 텍스트 값을 자식 노드 input 태그의 값으로 교체한 후 다시 자신을 선택하여 가진 값을 0을 변경할 경우의 예제를 알아보겠습니다. 코드는 아래와 같습니다.<body> <p>123-456-7890</p> <input nam
Last Modified : 2015-12-27 17:40:18데이터베이스를 조작하는 경우 해당 쿼리문의 결과가 매우 오래 걸리는 경우가 있습니다. 이런 경우 어떻게 표현할까요?'튜닝이 되지 않은 쿼리' 또는 '느린 쿼리'라고 표현할 수 있지만 자주 사용되는 표현으로 아래의 두 가지가 많이 사용됩니다.1. Expensive Query2. Slow Query Expensive Query는 Slow Query와 동일한 의미로 매우 늦은 쿼리를 의미합니다. Expensiver Query, Slow Query라는 용어를 듣게 된다면 더 나은 성능을 위해서 튜닝 등을 통해 쿼리문을 개선할 필요가 있겠습니다.
Last Modified : 2020-08-04 14:50:37HTML5에서 적용 가능한 새로운 Attribute sandbox에 대하여 알아봅니다.# HTML5 sandbox attributesandbox는 HTML5에서 추가된 iframe에 적용 가능한 attribute입니다. iframe의 경우 Cross domain, 호스트에 영향을 받게 되는데 이에 대하여 크로스 도메인이나, 스크립트, 제한 등을 설정하는 방법으로 사용할 수 있습니다. 참고로 현재 이 속성은 최신 브라우저에는 대부분 지원되나 전체 모든 환경에서 지원되지는 않으므로 확인이 필요합니다.<iframe sandbox src="http://webisfree.com"></iframe>간단한 사용방법입니다. 위와같이 sandbox property를 사용할 경우 해당 iframe의 경우 아래와 같이 몇 가지
Last Modified : 2018-07-20 08:48:09Python 웹어플리케이션에서 MongoDB를 사용하여 검색어를 찾을때 검색어가 하나가 아닌 여러 개인 경우 이를 해결하는 방법입니다.! 검색어의 빈공백을 사용하여 함께 포함된 and 조건 찾기하나가 아닌 여러 개의 검색어를 사용하기 위한 방법으로 스페이스(공백)을 많이 사용합니다. 즉 제목에서 찾을 때 '웹 이즈'로 검색어를 입력한 경우에는 아래처럼 검색이 되야합니다.'웹 이즈' => '웹' and '이즈' 모두 들어있는 제목을 찾기이 경우 공백을 사용한 정규표현식을 방법이 많이 사용됩니다. 즉 빈 여백(space)인 경우 각각 다른 문자열로 보고 이를 각각 and 조건으로 포함하는 쿼리문을 만들면 되겠죠. 이때 키워드의 공백은 아래와같이 replace()를 사용하여 변경합니다.---------------
Last Modified : 2020-11-06 11:57:13angularjs에서 이벤트를 동작시킬때 클릭이 아닌 더블 클릭을 태그 요소에 바인딩하는 방법을 알아봅니다.# angularJS 더블 클릭 디렉티브더블 클릭을 위해서 ngDblclick 디렉티브를 사용할 수 있습니다.ngDblclick이 디렉티브는 해당 요소를 더블 클릭해야 이벤트를 동작합니다. 만약 아래와 같은 코드를 작성한 경우 더블 클릭할 때 doSomething() 메소드를 호출하게 됩니다.<span ng-dblclick="doSomething();">Click</span>testController에는 아래처럼 doSomething()을 가지고 있습니다.app.controller('testController', function() { this.doSomething = function() { a
Last Modified : 2019-08-18 15:05:53