본문 바로가기

IT 실무148

yum install/update 과정에서 pre-existing rpmdb 문제 ** Found 17 pre-existing rpmdb problem(s), 'yum check' output follows: cloog-ppl-0.15.7-1.2.el6.x86_64 has missing requires of libgmp.so.3()(64bit) goaccess-1.2-1.el6.x86_64 has missing requires of libtokyocabinet.so.8()(64bit) libkadm5-1.10.3-65.el6.x86_64 has missing requires of krb5-libs(x86-64) = ('0', '1.10.3', '65.el6') libkadm5-1.10.3-65.el6.x86_64 has missing requires of libkdb5.so.6()(6.. 2020. 2. 23.
데이터베이스 병행제어 실패 현상 다수의 사람이 동시에 이용하는 데이터베이스에서 일관성을 유지하기 위해선 병행제어 기법이 필수이다. 하지만 수많은 경우의 수 속에서 완벽한 병행제어란 쉬운 것이 아닌데, 병행제어를 엄격하게 하려고 하면 할수록 병행성이 나빠진다. 그 말인 즉슨 속도가 느려지거나(지연시간이 길어짐) 불편해지게 되는 것이다. 그래서 흔히 사용되는 고신뢰 기업용 데이터베이스(Oracle 등)도 완벽한 병행제어를 제공하진 않는다. 옵션으로 제공하긴 하지만 대부분의 default 값은 조금 완화된 수준이다. 그렇다면 병행제어를 좀 덜 엄격하게 하면 발생되는 현상이 무엇일까? 예를 들면 한 트랜잭션 내에서 데이터를 여러번 읽는데 값이 바뀐다던가 하는 문제가 생길 수 있는데, 이런 현상들을 가리키는 말이 여러가지라는 것이 문제이다. 내.. 2019. 12. 29.
금융권에서 사용되는 시스템 간 연계 용어 1. MCI/MCA Multi Channel Integration / Multi Channel Architecture 주로 기업 내부 동기종 또는 유사기종 시스템을 연계시키는데 사용된다. 예를 들어 은행에서 여신 업무와 수신 업무는 MCI/MCA를 통해 연계된다. MCI와 MCA는 기업마다 다르게 부를 수 있지만 의미 차이는 두지 않는다. 2. EAI Enterprise Application Integration 주로 기업 내부 이기종 시스템을 연계시키는데 사용된다. 시스템 구조나 개발 언어가 다를 수 있어서 어댑터를 사용한다. 예를 들어 은행에서 채널계와 계정계는 EAI를 통해 연계된다. 3. ESB Enterprise Service Bus SOA에서 사용되는 개념이다. EAI와 유사하게 사용된다. 기.. 2019. 12. 26.
데이터베이스 회복 기법 정리 Database Recovery트랜잭션들을 수행하는 도중 장애로 인해 손상 된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구시키는 작업 1. 장애의 유형 트랜잭션 장애: 트랜잭션의 실행 시 논리적인 오류로 발생할 수 있는 에러 상황 시스템 장애: H/W 시스템 자체에서 발생할 수 있는 에러 상황 미디어 장애: 디스크 자체의 손상으로 발생할 수 있는 에러 상황 2. Undo와 Redo Undo: 트랜잭션 로그를 이용하여 오류와 관련된 모든 변경을 취소하여 복구 수행 Redo: 트랜잭션 로그를 이용하여 오류가 발생한 트랜잭션을 재실행하여 복구 수행 3. 로그 파일 트랜잭션이 반영한 모든 데이터의 변경사항을 데이터베이스에 기록하기 전에 미리 기록해두는 별도의 데이터베이스 안전한 하드디스크에 저장되며 전원.. 2019. 12. 7.
숫자형과 문자형이 섞여 있을 때 order by 방법 MySQL이든 MariaDB든 Oracle이든 마찬가지일 것 같다. 1,2,3,4,5,6,7,8,9,10,11,12 가 string 형태의 필드에 저장되어 있을 때 order by를 하면1,11,12,2,3,4,5,6.. 이런식으로 정렬이 되어 버린다. 숫자가 아닌 문자를 기준으로 보자면 11보다 2가 더 크기 때문이다. 이럴 때 형변환(CAST)을 하여 사용하는 경우가 많은데 문제는 아래와 같은 경우이다. 1,2,3,4,5A1, A2, A3A1, B1, B2 이런 숫자와 문자들이 섞여 있는 경우. 예를어 앨범의 '트랙넘버' 필드 같은 경우가 저렇게 생겨먹을 수 있다. (CD는 1,2,3,4로 가지만 테잎이나 LP는 앞뒤면을 나누기 위해 문자가 붙음) 이럴때 조금 복잡한 방법으로, zero padding.. 2019. 3. 17.
PHP 7.0 부터 지원되는 변수 초기값 할당 GET이나 POST 등을 통해 파라미터로 값을 넘겨 받는 경우 $var = $_GET['foo']; 와 같은 식으로 값을 넘겨 받는 경우가 많다.하지만 foo 값이 넘어오지 않을 경우, 개발과정에서 큰 문제가 발생할 확률은 적지만 그래도 Notice 나 Warn 등의 에러기록이 남기 때문에 FM대로 처리하고 싶다. $var = null;if(isset($_GET['foo'])) {$var = $_GET['foo'];} 이런식으로 하게 되는데, 한줄이 4줄이 되었다. 보기에 너무 복잡해서 3항연산자로 많이 줄여들 쓰는데, 그럼 옆으로 길어지고결국 initialize해야 되는 변수가 너무 많으면 어떻게든 지저분해질 수 밖에 없다. 이런 고충들이 있어서 PHP7.0 에서는 좀 더 간편한 표기법을 제시한다. $.. 2019. 3. 17.