'전체 글'에 해당되는 글 384건

  1. 2023.10.26 NAS(Network Attached Storage)
  2. 2023.10.20 [Oracle] 월별 누적 합계
  3. 2023.10.18 int 형 숫자의 자릿수 구하는 방법
  4. 2023.10.18 [Oracle] 해당월 전월의 마지막일자 구하기 1
  5. 2023.10.18 문자열 자르기의 차이
  6. 2023.10.13 [Oracle] 월별 집계 쿼리 실행 시, 해당 날짜가 없어도 표현되게 하는 방법
  7. 2023.10.13 [Oracle] 월별 집계 쿼리 1
  8. 2023.09.15 방화벽 vs. IDS vs. IPS
  9. 2023.09.13 [DBeaver] 테이블 데이터 복사
  10. 2023.08.29 [Oracle] Merge into

NAS(Network Attached Storage)

|

정의
 - 네트워크로 연결된 하드 ( <-> 컴퓨터에 직접 연결해서 쓰는 DAS; 내장/외장 하드디스크 )
 - 컴퓨터가 랜선을 통해 다른 네트워크에서 해당 서버를 접속하여 데이터를 R/W/U 하는 것

장점
 - 간편한 데이터 공유
 - 외장하드를 들고 다닐 필요가 없다
 - 금액 절감 효과 ( 외장하드 구입 or 웹클라우드 구축 대비 )
 - 다양한 용도 ( docker hub에 있는 수많은 기능 중 상당수를 NAS에서 사용 가능 )

단점
 - 네트워크 구축 필수
 - 성능 한계
 - 설정 복잡
 - 데이터 관리 어려움

'IT Infra' 카테고리의 다른 글

scp 와 pscp  (2) 2023.11.29
[NAS] Server 에서 NAS 로 데이터 백업하기  (0) 2023.10.26
방화벽 vs. IDS vs. IPS  (0) 2023.09.15
SASE(Secure Access Service Edge)  (0) 2023.08.24
SSL Pinning  (0) 2023.08.24
And

[Oracle] 월별 누적 합계

|
SUM(

	-- 집계대상 col
    ...
    
) OVER (

	PARTITION BY
		-- 정렬대상 : ex. 회사코드, 부서코드
		COMPANY_CD,
		ORG_ID
        ...
        
	ORDER BY 
		-- 합계기준 컬럼 : ex. 날짜
        -- case when 사용 가능
		CASE
			WHEN SUBSTR(ISSUE_DT,5,4) LIKE '%0100%' THEN
				TO_CHAR(TO_DATE(SUBSTR(ISSUE_DT,1,4) || '0101'), 'YYYYMM') -- yyyy0100 데이터는 yyyy0101 데이터로 강제변환
			ELSE
				TO_CHAR(TO_DATE(ISSUE_DT), 'YYYYMM') -- 아닐경우 유지
		END
) AS OOO
And

int 형 숫자의 자릿수 구하는 방법

|
int foo = 345;
int digit = (int)( Math.log10(foo) + 1 );
System.out.println(digit); // 3

'Java' 카테고리의 다른 글

jar, war 파일 관련  (0) 2023.08.01
Servlet & Servlet Container  (0) 2023.06.13
HttpSession  (0) 2023.04.04
Server 1대에 Multi version 의 JDK 사용  (0) 2022.12.06
DAO, DTO, VO  (0) 2022.03.21
And

[Oracle] 해당월 전월의 마지막일자 구하기

|
-- 2022-12-31
SELECT ADD_MONTHS(LAST_DAY(TO_DATE('20230101', 'YYYY-MM-DD')), -1) FROM DUAL;
And

문자열 자르기의 차이

|
// 오라클
SUBSTR("문자열", "시작위치", "길이") // 시작위치가 1부터 시작한다.
substr('abcdef', 2, 3) // bcd

// java
substring("시작위치", "종료위치 + 1") // 시작위치가 0부터 시작한다.
String foo = 'abcdef';
foo.substring(0, 4) // abcd

// javascript
substr("시작위치", "길이") // 시작위치가 0부터 시작한다.
var foo = 'abcdef';
foo.substr(1, 1); // b

substring("시작위치", "종료위치") // 시작위치가 0부터 시작한다.
var foo = 'abcdef';
foo.substr(2, 3); // cde

'etc' 카테고리의 다른 글

SHA-256 해시 알고리즘  (0) 2023.08.16
PoC  (0) 2023.07.31
Copilot  (0) 2023.07.31
Web Achitectures 입문  (0) 2023.06.30
성장하려면  (0) 2023.06.30
And

[Oracle] 월별 집계 쿼리 실행 시, 해당 날짜가 없어도 표현되게 하는 방법

|
SELECT
    TO_CHAR(TO_DATE(V.MON), 'MM') AS MON
    , Z.COL_A
    ...
    
FROM 
	-- Z : 가져올 데이터 테이블
    (
    SELECT 
        TO_CHAR(TO_DATE(BILL_DT), 'MM') AS MON,
        COL_A,
        
    FROM ...

    AND 날짜컬럼 BETWEEN TO_DATE(SUBSTR('202101',0,4) || '0101', 'YYYY-MM-DD') AND TO_DATE('202110' ||  '31', 'YYYY-MM-DD') -- /* 1월 ~ 12월 조건 */
    GROUP BY TO_CHAR(TO_DATE(날짜컬럼), 'MM'), COL_A, ... -- 날짜값 형반환 주의
    ORDER BY MON -- /* 1월 ~ 12월 정렬 */
    ) Z
    , (
        -- V : 날짜 뷰(1월1일 ~ 12월 31일)
        SELECT TO_DATE(SUBSTR('202101',0,4) || '0101','YYYY-MM-DD') + LEVEL - 1 AS MON
        FROM dual 
        CONNECT BY LEVEL  <=  (TO_DATE(SUBSTR('202110',0,4) || '1231','YYYY-MM-DD') - TO_DATE(SUBSTR('202101',0,4) || '0101','YYYY-MM-DD') + 1)
    ) V
WHERE V.MON = Z.MON(+) -- right outer join
GROUP BY
    TO_CHAR(TO_DATE(V.MON), 'MM')
    , Z.COL_A
    ...

ORDER BY MON

'DATABASE(SQL)' 카테고리의 다른 글

[Oracle] 월별 누적 합계  (0) 2023.10.20
[Oracle] 해당월 전월의 마지막일자 구하기  (1) 2023.10.18
[Oracle] 월별 집계 쿼리  (1) 2023.10.13
[Oracle] Merge into  (0) 2023.08.29
[Oracle] DB Link  (0) 2023.08.25
And

[Oracle] 월별 집계 쿼리

|
-- 월별 누적 합계 쿼리
WITH MON_T AS ( -- 기준 월 
	SELECT 1 AS MON FROM DUAL UNION ALL
	SELECT 2 AS MON FROM DUAL UNION ALL
	SELECT 3 AS MON FROM DUAL UNION ALL
	SELECT 4 AS MON FROM DUAL UNION ALL
	SELECT 5 AS MON FROM DUAL UNION ALL
	SELECT 6 AS MON FROM DUAL UNION ALL
	SELECT 7 AS MON FROM DUAL UNION ALL
	SELECT 8 AS MON FROM DUAL UNION ALL
	SELECT 9 AS MON FROM DUAL UNION ALL
	SELECT 10 AS MON FROM DUAL UNION ALL
	SELECT 11 AS MON FROM DUAL UNION ALL
	SELECT 12 AS MON FROM DUAL
),
DATA_T AS ( -- 데이터 테이블
	SELECT 1 AS MON, 11 AS D_CNT FROM DUAL UNION ALL
	SELECT 2 AS MON, 12 AS D_CNT FROM DUAL UNION ALL
	SELECT 3 AS MON, 13 AS D_CNT FROM DUAL UNION ALL
	SELECT 4 AS MON, 14 AS D_CNT FROM DUAL UNION ALL
	SELECT 5 AS MON, 15 AS D_CNT FROM DUAL UNION ALL
	SELECT 6 AS MON, 16 AS D_CNT FROM DUAL UNION ALL
	SELECT 7 AS MON, 17 AS D_CNT FROM DUAL UNION ALL
	SELECT 8 AS MON, 18 AS D_CNT FROM DUAL UNION ALL
	SELECT 9 AS MON, 19 AS D_CNT FROM DUAL UNION ALL
	SELECT 10 AS MON, 20 AS D_CNT FROM DUAL UNION ALL
	SELECT 11 AS MON, 21 AS D_CNT FROM DUAL UNION ALL
	SELECT 12 AS MON, 22 AS D_CNT FROM DUAL
)
SELECT
	M.MON
	, D.MON AS MON2
	, D.D_CNT
FROM MON_T M
	, DATA_T D
WHERE D.MON BETWEEN 1 AND M.MON
ORDER BY M.MON, D.MON

 

-- WITH 를 이용한 월별 데이터(누적x) 집계 쿼리

-- 기준월(1월 ~ 12월)
WITH MON_T AS (
    SELECT 1 AS MON FROM DUAL UNION ALL
    SELECT 2 AS MON FROM DUAL UNION ALL
    SELECT 3 AS MON FROM DUAL UNION ALL
    SELECT 4 AS MON FROM DUAL UNION ALL
    SELECT 5 AS MON FROM DUAL UNION ALL
    SELECT 6 AS MON FROM DUAL UNION ALL
    SELECT 7 AS MON FROM DUAL UNION ALL
    SELECT 8 AS MON FROM DUAL UNION ALL
    SELECT 9 AS MON FROM DUAL UNION ALL
    SELECT 10 AS MON FROM DUAL UNION ALL
    SELECT 11 AS MON FROM DUAL UNION ALL
    SELECT 12 AS MON FROM DUAL
),
DATA_SAMPLE1 AS (
	SELECT

		TO_CHAR(TO_DATE(날짜컬럼), 'MM') AS MON,
		COL_A,
		COL_B,

	-----------------------
	--- 기존 select 쿼리
	-----------------------

	FROM

	-- 날짜별 조건 추가
	AND 날짜컬럼 BETWEEN TO_DATE('2023-01-01', 'YYYY-MM-DD') AND TO_DATE('2023-12-31', 'YYYY-MM-DD') -- /* 1월 ~ 12월 조건 */

	GROUP BY TO_CHAR(TO_DATE(날짜컬럼), 'MM'), COL_A, COL_B -- 날짜값 형반환 주의

	ORDER BY MON-- /* 1월 ~ 12월 정렬 */

)

SELECT 
	MT.MON || '월' AS MON									  /* 기준월 */
    , D1.COL_A
    , D2.COL_A
	..
    
FROM MON_T MT -- 기준월을 기준으로 

LEFT OUTER JOIN DATA_SAMPLE1 D1 ON D1.MON = MT.MON -- left join으로 데이터가 존재하는 row만 보이도록 처리

... 기타 join 조건 추가 ...

WHERE 1=1

-- 날짜 조건 param 값으로 처리
AND MT.MON BETWEEN TO_NUMBER(SUBSTR(#{s_bill_st_dt},5,2)) AND TO_NUMBER(SUBSTR(#{s_bill_end_dt},5,2))

GROUP BY MT.MON -- 월별
		, D1.COL_A -- select 절에 가져오는 컬럼은 group by 에 모두 기입되어야함.
    	, D2.COL_A
        ...
        
ORDER BY MT.MON -- 월별(날짜순서)
And

방화벽 vs. IDS vs. IPS

|

방화벽
- 서로 다른 네트워크를 지나는 데이터를 허용 및 거부하거나 검열 또는 수정
- 네트워크에서 보안을 높이기 위한 1차적인 방법
- 신뢰하지 않는 외부 네트워크와 신뢰하는 내부 네트워크 사이를 지나가는 패킷들에 대한 미리 정한 규칙에 따라 차단하거나 보내주는 기능을 하는 하드웨어 또는 소프트웨어를 뜻함
- 기본적인 기능은 접근 제어를 Rule Set(ip, port)을 통해 이루어짐

 

IDS
- 칩입탐지시스템(Instruction Detection System)
- 시스템에 대한 원치 않은 조작을 탐지
- 호스트 기반(HIDS) 과 네트워크 기반(NIDS) 으로 나뉨

IPS
- 칩입방지시스템(Instrusion Preveting System)
- 공격탐지를 뛰어넘어 탐지된 공격에 대한 웹 연결 등을 적극적으로 막아주는 솔루션
- 침입탐지 기능을 수행하는 모듈이 패킷을 일일히 검사하여 해당 패턴을 분석한 후, 정상적인 패킷이 아니면 방화벽 기능을 가진 모듈로 차단
- 일반적으로 IPS는 방화벽 내부에 설치 ( 방화벽과 연동하여 공격을 탐지할 수 있기 때문 )

 

 

'IT Infra' 카테고리의 다른 글

[NAS] Server 에서 NAS 로 데이터 백업하기  (0) 2023.10.26
NAS(Network Attached Storage)  (0) 2023.10.26
SASE(Secure Access Service Edge)  (0) 2023.08.24
SSL Pinning  (0) 2023.08.24
[Jenkins] 젠킨스를 이용한 CI과정  (0) 2023.08.16
And

[DBeaver] 테이블 데이터 복사

|

1. 복사할 테이블 우측버튼 클릭 > 데이터 내보내기

 

2. SQL Insert 문으로 내보내기 > 다음

 

3. Extraction Settings > By Segments

4. Format Settings

- Include generated columns > 체크

- 파일확장자 > sql

- Native date/time format > 체크

- Insert line before rows  > 체크

'DevTools' 카테고리의 다른 글

Visual Studio Code 단축키 정리  (1) 2024.03.14
STS (SpringSource Tool Suite)  (0) 2023.08.16
[VS Code] vs code 에서 git 연동  (0) 2023.08.11
[VS Code] .properties 파일에서 한글 깨지는 경우  (0) 2023.08.01
SourceTree  (0) 2023.07.05
And

[Oracle] Merge into

|

what?

- insert, update, delete 작업을 하나의 쿼리문으로 할때

- verison

  - 9i 부터 merge 사용가능

  - 10g 부터 delete 절 사용 가능

 

Merge
INTO temp_table A -- 데이터가 들어갈 target 
USING table2 B -- 단일테이블인 경우 dual을 사용
ON A.id = B.id -- 조건절
WHEN MATCHED THEN -- 일치하는 경우
	UPDATE SET A.seq = B.seq
    DELETE
WHEN BOT MATCHED THEN -- 불일치하는 경우
	INSERT (A.a, A.b, B.c)
    VALUES (B.d, B.e, A.f);

 

기타

- on 조건절에 사용할 컬럼을 업데이트하면 오류가 발생함.

'DATABASE(SQL)' 카테고리의 다른 글

[Oracle] 월별 집계 쿼리 실행 시, 해당 날짜가 없어도 표현되게 하는 방법  (0) 2023.10.13
[Oracle] 월별 집계 쿼리  (1) 2023.10.13
[Oracle] DB Link  (0) 2023.08.25
SQL 실행계획  (0) 2023.08.21
[MS-SQL] Begin Tran  (0) 2023.08.10
And
prev | 1 | 2 | 3 | 4 | 5 | 6 | ··· | 39 | next