SRP The Single Responsibility Principle A class should have one, and only one, reason to change.''
OCP The Open Closed Principle You should be able to extend a classes behavior, without modifying it.
LSP The Liskov Substitution Principle Derived classes must be substitutable for their base classes.
ISP The Interface Segregation Principle Make fine grained interfaces that are client specific.
DIP The Dependency Inversion Principle Depend on abstractions, not on concretions.

http://www.butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod

 

ArticleS.UncleBob.PrinciplesOfOod

The Principles of OOD What is object oriented design? What is it all about? What are it's benefits? What are it's costs? It may seem silly to ask these questions in a day and age when virtually every software developer is using an object oriented language

www.butunclebob.com

https://velog.io/@hanblueblue/Java-SOLID-SRP-OCP-LSP-ISP-DIP

 

[Java] SOLID (SRP, OCP, LSP, ISP, DIP)

객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙

velog.io

 

@Test
public void anExceptionIsThrown() {
  String noString = null;
  Throwable exception = exceptionThrownBy(() -> noString.trim());
  assertEquals(NullPointerException.class, exception.getClass());
}

 

https://github.com/stefanbirkner/fishbowl

 

stefanbirkner/fishbowl

Fishbowl provides helper methods for dealing with exceptions. - stefanbirkner/fishbowl

github.com

 

'IT기술관련 > 테스트관련' 카테고리의 다른 글

좋은 단위 테스트  (0) 2021.05.15
단위 테스트를 실행 속도는 빨라야함  (0) 2021.05.15
테스트 코드  (0) 2021.05.15
Java와 Junit을 활용한 단위테스트  (0) 2021.05.15
Junit Hamcrest Wiki  (0) 2021.05.15

- AAA : Arrange Act Assert, 준비 실행 단언 의 순서

- Before로 공통부분 초기화 (자원할당, 준비코드, 추상화, 가상환경 등) After로 정리코드 (clean up, 자원을 사용했다면 반납등 )

- AssertTrue를 사용하던지 AssetThat을 사용하던지

- AssertThat으로 타입과 가독성있는 포맷이 됨

- Hamcrest이용

- is(true), is(equals()), is(not(equals()))

- 부동소수점 isClosedTo

- 예외기대, @Test(expected), try/fail/catch/assert, @Rule ExpectedException  

- 테스트 코드는 프로덕션 시스템 코드를 의존하지만, 프로덕션 코드는 테스트 코드의 존재를 알지 못함

예제코드

https://github.com/gilbutITbook/006814

 

gilbutITbook/006814

Contribute to gilbutITbook/006814 development by creating an account on GitHub.

github.com

 

'IT기술관련 > 테스트관련' 카테고리의 다른 글

좋은 단위 테스트  (0) 2021.05.15
단위 테스트를 실행 속도는 빨라야함  (0) 2021.05.15
stream way assertion and exception catch  (0) 2021.05.15
테스트 코드  (0) 2021.05.15
Junit Hamcrest Wiki  (0) 2021.05.15

Hamcrest는  matchers 의 anagram (어구전철(語句轉綴), 애너그램이란 문자를 재배열하여 다른 뜻을 가진 단어로 바꾸는 것)

 

https://code.google.com/archive/p/hamcrest/wikis/Tutorial.wiki

 

Google Code Archive - Long-term storage for Google Code Project Hosting.

 

code.google.com

http://hamcrest.org/JavaHamcrest/

 

Java Hamcrest

 

hamcrest.org

 

Oracle Database Core Concept

docs.oracle.com/cd/E25054_01/server.1111/e25789.pdf

 

이화식 데이터베이스 모델링

www.youtube.com/playlist?list=PL9gStYgm-otNZQpj2lQsOSRuiwwtEftiE

 

DB모델링강좌 엔코아 이화식 님

 

www.youtube.com

 

database lock

좀 더 쉽게 접근해보자. 

데이터베이스의 출발은 네트워크 환경에서 여러 사람이 동시에 작업을 할 경우 어떻게 일관성 있는 데이터를 읽고 쓸까에 대한 고민에서 시작한다.

읽고 쓰기에 대한 가장 기본적인 메카니즘은 락이며 ( mutex, locking 등의 용어 ) 락이라는 것은 

어떤 데이터를 작업할때 내가 작업을 시작한다고 어딘가 마킹하고 작업이 끝나면 마킹을 지우고, 다른 대기자에게 작업을 알리는 것이다.

즉, 은행에서 대기 번호표를 뽑는 것과 같다. 순차적으로 일을 처리하고 한 번에 한건만 하게 되는 것.

이것을 이후에 나올 isolation model에서 serializable이라고 한다. 

 

 

 

 

en.wikipedia.org/wiki/Record_locking

 

Record locking - Wikipedia

Record locking is the technique of preventing simultaneous access to data in a database, to prevent inconsistent results. The classic example is demonstrated by two bank clerks attempting to update the same bank account for two different transactions. Cler

en.wikipedia.org

 

Isolation level

 

 

 

nvie.com/posts/a-successful-git-branching-model/

 

A successful Git branching model

In this post I present a Git branching strategy for developing and releasing software as I’ve used it in many of my projects, and which has turned out to be very successful.

nvie.com

 

'IT기술관련 > 기타' 카테고리의 다른 글

유용한 사이트  (0) 2022.02.09
읽을 거리  (0) 2021.01.28
Git Gerrit 코드리뷰  (0) 2021.01.26

engineering.linecorp.com/ko/blog/line-open-jdk/

 

LINE의 OpenJDK 적용기: 호환성 확인부터 주의 사항까지 - LINE ENGINEERING

2018년 오라클의 라이선스 체계가 변경되면서 2019년 1월 이후 더 이상 무료로 Oracle JDK를 사용할 수 없게 되었습니다. 이에 LINE 내부에서는 사전에 OpenJDK를 적용하기 위해 필요한 사항이나 검토 항

engineering.linecorp.com

 

'IT기술관련 > 기타' 카테고리의 다른 글

유용한 사이트  (0) 2022.02.09
Git branching  (0) 2021.03.22
Git Gerrit 코드리뷰  (0) 2021.01.26

d2.naver.com/helloworld/1859580

 

 

d2.naver.com/helloworld/6033708

 

'IT기술관련 > 기타' 카테고리의 다른 글

유용한 사이트  (0) 2022.02.09
Git branching  (0) 2021.03.22
읽을 거리  (0) 2021.01.28

소프트웨어 안전 : 

전체 시스템의 난정 보장을 위해 외부에 미치는 위험요소를 분석하고 제거하여 소프트웨어 오류로 인한 사고를 예방하는 것을 의미

 

가정 :

소프트웨어 오류가 사람의 안전 (다치게 하거나 사망)에 원인을 제공할 수 있다는 가정

 

대상 : 

사람을 운송하는 성격의 분야 (자동차, 철도, 우주/항공)

사람을 대상으로 조처를 하는 분야 (의료기기) 를 제외한 분야를 검증 대상으로 선정

개인지원로봇과 기계/제조 분야를 검증 분야로 선정

 

관점 :

직접 안전 : 통제 대상 장치에서 직접적으로 사고를 발생시킬 수 있는 것에 대한 안전

기능 안전 : 

간접 안전 : 

 

요약 :

SW 안전 요구사항 검토 ( 안전 기능 식별, 안정 요구사항 정의)

SW 안정 설계 ( 안전 분석 결과서)

SW 설계 안전 분석

SW 안전 구현

SW 안전 구현 단위 테스트

SW 안전 통합 테스트 

SW 안전 시스템 시험 (SW 시스템 시험) 

SSRI (software safety risk index) SW안전위험색인 등급에 위험 요인 매핑 

 

 

여기에서 기본 프레임워크 의미는 (배경, 문제, 목적을 바탕으로 한 계획의 기본 이미지를 작성하여 목표, 수단을 생각하고, 개략적인 계획을 세우는 작업)  (소프트에ㅜ어 spring 프레임워크와는 다른 의미) 

 

www.spri.kr/posts/view/22919?code=research

 

 

[RE-083] SW안전관리 프레임워크 연구 - SPRi

자율자동차, 드론, AI 등 소프트웨어 기술 발전에 따라 소프트웨어의 복잡성이 증가하고 소프트웨어 편의성 증가로 많은 분야에서 소프트웨어 의존성이 증가하고 있다. 이로 인해 소프트웨어의

www.spri.kr

 

 

 

[RE-083] SW안전관리 프레임워크 연구 - SPRi

자율자동차, 드론, AI 등 소프트웨어 기술 발전에 따라 소프트웨어의 복잡성이 증가하고 소프트웨어 편의성 증가로 많은 분야에서 소프트웨어 의존성이 증가하고 있다. 이로 인해 소프트웨어의

www.spri.kr

 

 

 

 

[RE-083] SW안전관리 프레임워크 연구 - SPRi

자율자동차, 드론, AI 등 소프트웨어 기술 발전에 따라 소프트웨어의 복잡성이 증가하고 소프트웨어 편의성 증가로 많은 분야에서 소프트웨어 의존성이 증가하고 있다. 이로 인해 소프트웨어의

www.spri.kr

www.spri.kr/download/22498

www.spri.kr/posts/view/22918?code=research

 

[RE-082]SW안전 기준 고도화 및 SW안전 기준 적용 절차 마련에 관한 연구 - SPRi

SW가 중심이 되는 제4차 산업혁명 시대가 빠르게 도래함 첨단 정보통신기술, 특히 SW 중심의 기술이 경제·사회 전반에 융합되면서 혁신적인 변화(例, SW가 핵심인 자율주행차, 스마트 빌딩, 무인

www.spri.kr

 

Why systems need to send data/messages/logs?

• Loose coupled
• MSA
• Event Process
• Autoscaling - instance termination
• Data Lake

 

Why systems need to interchange Large Data?

• Realtime Data Processing
  • Business Metric
  • Service Metric
  • Application Log
  • System Metric
• Longterm Data Processing
• Realtime Event Triggering
• Separation service instance and data instance

 

Traditional Data Interchange

 

Service/Data Hub

 

Kafka vs MQ

www.slideshare.net/sbaltagi/apache-kafka-vs-rabbitmq-fit-for-purpose-decision-tree

www.slideshare.net/sbaltagi/apache-kafka-vs-rabbitmq-fit-for-purpose-decision-tree

 

Apache Kafka vs RabbitMQ: Fit For Purpose / Decision Tree

Kafka as a streaming data platform is becoming the successor to traditional messaging systems such as RabbitMQ. Nevertheless, there are still some use cases wh…

www.slideshare.net

Kafka is (vs MQ )

• Topic Pub/sub Model
• Message Replay
• Save messages to disk
• Scalability
• High Throughput
• Asynchronous
• Protocol Free : String data

 

Kafka Terminology

• Producer/Consumer
• Topic
• Partition
• Read Offset in each partition
• Consumer Group
• Message Broker/Node
• Leader/Follower
• Replication Factor
• ISR (InSyncReplica)

 

Kafka Architecture

https://engkimbs.tistory.com/691

 

References

www.confluent.io/blog/event-streamingplatform-1/

www.slideshare.net/sbaltagi/apache-fit-for-purpose-decision-tree

engkimbs.tistory.com/691

 

[Kafka, 카프카] 아파치 카프카(Apache Kafka) 아키텍처 및 동작방식, 파티션 읽기 쓰기(Partition Read and W

| 카프카(Kafka)란? 아파치 카프카(Apache Kafka)는 분산 스트리밍 플랫폼이며 데이터 파이프 라인을 만들 때 주로 사용되는 오픈소스 솔루션입니다. 카프카는 대용량의 실시간 로그처리에 특화되어

engkimbs.tistory.com

ssup2.github.io/theory_analysis/Kafka_Cluster_Replication/

 

Kafka Cluster, Replication

Kafka의 Cluster, Replication 기법을 분석한다.

ssup2.github.io

 

공간정보 

l 공간 자체와 공간과 연관된 정보

l 공간 자체 정보 = 공간에 대한 표현 및 혹은 모양, 위치, 좌표

l 공간과 연관된 정보 = 주소 : 서울시 강남구 대치동 943-2

l 공간 수치 : 경위도 : lat 37.506863 lon127.058637

l 공간정보 : 루첸타워 => 37.506863, 127.058637, 오토에버

l 공간 = 3차원

l 종이지도 = 2차원

l 3D지도 = 3차원

l 3D지도 + 시간 = 4차원

 

좌표

l 2차원 좌표 : (X, Y)

l 3차원 좌표 : (X, Y, Z) : 경도, 위도, 고도

l 2차원 좌표계 : 데카르트 (Cartesian) 좌표계, 직교좌표계

l 경위도 자표계 : x, y, z

l 2차원 경위도 좌표 : x, y : lat 37.05 lon127.08

l 지구는 타원체

l 지구전도는 2차원 지도

l 타원체를 2차원 지도로 만드는 방법 : 투영 projection

좌표계

l 경위도 표계

l TM 좌표계

l UTM 좌표계

l 좌표와 좌표계의 차이?

l 측정과 계산

l 지구 = 타원체

 

경위도좌표계 - 투영

l특징 : 적도는 정확하고 양 극으로 이동할수록 왜곡이 심해진다.

 

TM좌표계 - 투영

 

UTM좌표계 횡측 투영

l특징 : 자오선을 6도마다 하나씩 지정

l국내 : 중부원점 : 38N 127E

l국내 생산한 지도의 원본 측량의 기준은 UTM 일 가능성이 높다

 

 

지도

일반지도
위성지도
floormap
Indoor map
행정지도
주제도

 

GIS

l Geographic Information System

l 공간 데이터 = 좌표, 모양 (shape)

l 속성 데이터 = , 주소, 맛집

 수치화한 DB와 이를 이용할 수 있는 응용시스템

 

GIS 데이터 저장

l속성 데이터 + 공간 데이터

이름 주소 모양 중심좌표 (경위도)
빌딩 대치동 943-2
37.507380, 127.060324
코엑스 영동대로 513
37.512458, 127.059922
삼성역 4번 출구 NONE
37.508326, 127.062523

 

Digital map

 

GIS 공간 데이터 구조

lPoint

lMulti point

lLine

lMulti Line

lCurve

lPolygon

lMulti Polygon

lGeometry

lLayer

 

GIS 공간 데이터 구조

WKT : Well Known Text

POINT (30 10)

MULTIPOINT ((10 40), (40 30), (20 20), (30 10)) 

LINESTRING (30 10, 10 30, 40 40)

MULTILINESTRING ((10 10, 20 20, 10 40),

                 (40 40, 30 30, 40 20, 30 10))

POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))

MULTIPOLYGON (((30 20, 45 40, 10 40, 30 20)),

              ((15 5, 40 10, 10 20, 5 10, 15 5)))

 

GeoJSON

{

  "type": "Point",

  "coordinates": [30, 10]

}

{

  "type": "MultiPoint",

  "coordinates":

    [ [10, 40], [40, 30], [20, 20], [30, 10] ]

}

{

   "type": "LineString",

   "coordinates":

      [ [30, 10], [10, 30], [40, 40] ]

}

{

   "type": "MultiLineString",

   "coordinates":

      [ [[10, 10], [20, 20], [10, 40]],

        [[40, 40], [30, 30], [40, 20], [30, 10]]

      ]

}

 

{

  "type": "Polygon",

  "coordinates": [ [[30, 10], [40, 40], [20, 40],

                    [10, 20], [30, 10]] ]

}

{

  "type": "MultiPolygon",

  "coordinates":

    [ [ [[30, 20], [45, 40], [10, 40], [30, 20]] ],

      [ [[15, 5], [40, 10], [10, 20],

         [5, 10], [15, 5]] ]

    ]

}

 

Image : Raster data

tile map

 

Standard : Open Geospatial Consortium

 

Standard : WFS : how to query

 

Mysql : how to query

 

Mysql : spatial geometry data type

 

지도 관련 어플리케이션 개발

l 지도이미지 – tile map

l 위치 poi point of interest

l 모양 geometry

l 지도 layer

l point layer

l geometry layer

 

지도 관련 어플리케이션 개발

Network data model

Network data model : Tables

 

참고자료 :

국가공간정보포털

http://www.nsdi.go.kr/lxportal/?menuno=2679

인터넷지도좌표추출방법

https://blog.naver.com/jackieee/221183329871

GPS 위도, 경도 도분, 도분초 변환방법

 

https://m.blog.naver.com/PostView.nhn?blogId=caolympiad&logNo=220855909060&proxyReferer=https:%2F%2Fwww.google.com%2F

데카르트 좌표계 : 직각좌표계

http://blog.daum.net/_blog/BlogTypeView.do?blogid=0dHZY&articleno=21&categoryId=5&regdt=20130405063352

국내 직교좌표계 기준

https://sangug.tistory.com/306

좌표계 설명

http://www.biz-gis.com/index.php?mid=pds&document_srl=65754

Gis data

http://www2.stat.duke.edu/~cr173/Sta323_Sp16/more_spatial_data.html

Gis 개념 정리

https://jaeman1990.tistory.com/54

네이버 지도 api

https://d2.naver.com/helloworld/3380225

Mysql geotry data type

https://itnext.io/playing-with-geometry-spatial-data-type-in-mysql-645b83880331?gi=6b9c55109e75

Mysql multi polygon

https://dev.mysql.com/doc/refman/5.7/en/gis-polygon-property-functions.html

Network data model

https://www.oracle.com/technetwork/database/enterprise-edition/spatial-twp-buildgisapps-10gr2-0512-132522.pdf4

network data model

https://transportgeography.org/?page_id=7585

항목 적용 적용 기대효화
Networking Security VPC VPC를 이용한 네트워크 분리 ( 망분리 컨셉)
Networking Security VPC prod/dev VPC 분리 및 idm 분리
VPC 통신은 기본은 불가- 허용 필요하면 별도 security group으로 해결
Networking Security private ip 구성 IGP, NAT gateway, Bastion Host 구성으로 접근
Networking Security IDC와 연계 VPN 및 DX로 구성
Networking Security VPC subnet 정책 : subnet은 IP자원과 연관있으므로 resource 와 함께 고려, 나중에 subnet 변경할려면 VPC 다시 지우고 설정해야 하므로 신중
Compute Availiability Multi AZ 적용 분산 가용성 확보 단 AZ간 지연 발생하므로, 서비스간 AZ 에 따라 아키텍처링 필요
Compute Security Security Group  접근과 권한 제한, port 접근 정책, any open은 없도록
Network Security NACL 접근 제어
Compute Security 인증서 pem은 있으면 전체 권한을 다 받은거와 마찬가지 idm으로 권한 분리 필요 기업용은 pem 공유 불가정책
Networking Security Organizations 빌링과 생성권한 관리, 서비스 제한
Compute Availability AutoScaling Beanstalk 으로 자동확장
Compute Availability ELB 부하분한 Https 서비스 적용,  request deny 처리
http code 별 정책 부여, rediection
Monitoring Availability Cloudwatch, ELB healthcheck healthcheck
Backup Availability AMI, DB backup, AMI backup  
Database Availability Active Standby 구성, snapshot으로 백업  
Network Security Shield DDos 방어
Network Security WAF web application firewall

 

2003년 쯤에는 카페나 자료 저장소가 유행을 해서, 그곳에서 자료를 게시하고 다운 받고 했었다.

그러나가 이화식 님의 데이터 모델링을 보게 되었고 그게 아마도 나의 다른 개발자 삶의 시작이 되었던 것 같다.

 

그 때에도 다수의 DB책, 튜닝 책들이 나와서 업무설계, DB 설계 등이 필요했던터라, 

그리고 지금처럼 기획자, BA등이 전문화 되지 않은 터라, 개발 리드하시는 부장 분들이 요구사항을 받아서 정리하고,

부장님들이 일이 많으니 이부분은 아래로 내려오는 상황이 당연하던 시기였다.

 

하지만, 요구사항 분석이랑 업무 설계가 어디 책으로 배울 수가 있던가, 그리고 어느 사이트를 가던, 

현업은 세상에서 제일 복잡하고, IT 시스템으로 우리의 복잡한 업무를 설계 못할 거라고 호언장담하던 분들이 대부분 있던 시기였다.

 

그런게 당연하고, 하지만 실무에서는 어려움을 겪었언 시기에 빛과 같던 강의가 있었으니 이화식님이 직접 강의 하신 모델링 설계 동영상이 었다.

 

최근에 서비스 기획하시는 분들이 업무를 단순화 하는 것에 어려움을 많이 느껴서, 그 때 배웠던 강의가 기억나던터라, 내 옛날 자료를 뒤지다가 혹시 유튜브에 있지 않을까 하고 검색해봤더니 있더라.

 

www.youtube.com/watch?v=FMtIaXg9haI&list=PL9gStYgm-otNZQpj2lQsOSRuiwwtEftiE

 

다시 한번 놀라운 세상임을 깨닫는다. 나도 다시 강의를 봐야겠다. 아 잠은 언제자나.

직접 뵙지는 않았지만, 그 때 보여주신 강의로 나도 정말 많이 성장했다. 이 글을 빌어 이화식 대표님에게 감사를 드립니다.

 

'IT기술관련 > 모델링' 카테고리의 다른 글

데이터 모델링 책 추천  (0) 2023.07.08

find . -name “.java” -print0 | xargs -0 egrep -l “.[가-힣]+.*” | grep -v “Test” | grep -v “Dto” | grep  -v “entity” | grep -v “dto”

 

Case

 

int(11) unsigned - > bigint(20)으로 변경하면 generateId가 먹히지를 않음.

 

연관에러

 

mysql duplicate entry '0' for key 'primary'

 

database returned no natively generated identity

 

해결방안 1 - 실패

 

ALTER TABLE wms.measurement_skus ADD PRIMARY KEY (id);
ALTER TABLE wms.measurement_skus DROP PRIMARY KEY;

ALTER TABLE wms.measurement_skus AUTO_INCREMENT = 40000;

이렇게 각각 해줘도 안먹힘.

 

 

해결방안 2 - 성공

 

ALTER TABLE wms.measurement_skus
  CHANGE COLUMN `id` `id` BIGINT(29) NOT NULL AUTO_INCREMENT,
  DROP PRIMARY KEY,
  ADD PRIMARY KEY (`id`);

LockMode to Mysql
LockMode.UPGRADE_NOWAIT : for update
LockMode.NONE : 없음
LockMode.OPTIMISTIC : 없음
LockMode.OPTIMISTIC_FORCE_INCREMENT : 없음
LockMode.PESSIMISTIC_FORCE_INCREMENT : for update
LockMode.PESSIMISTIC_READ : lock in share mode
LockMode.PESSIMISTIC_WRITE : for update
LockMode.READ : 없음
LockMode.WRITE : 없음

동일성 idenity

동등성 equalty


동일성 비교는 ==, 객체 인스턴스의 주소 값을 비교한다.

동등성 비교는 equals, 메소드 내에서 객체 내부의 값을 비교한다.

자바


스프링의 lazy loading 은 무엇인가?

DI는 무엇인가?


List와 Array의 차이


Set과 Map의 차이


framework와 library의 차이


웹서버와 WAS의 차이


쓰레드와 프로세스의 차이



primitive data type (기본형 변수), reference data type (참조형 변수)


디자인패턴

싱글톤은 무엇이며 왜 필요한가


인코딩

EUC-KR, UTF32, UTF8의 각각의 byte는?


interface와 abstract class의 차이


Cookie와 Session 에 대해서 설명


Java GC 과정


permanent


Java 메모리 구조와 작동 원리


TCP/IP 와 UDP/IP의 가장 큰 차이점



B트리는 무엇인가?


 hibernate의 @version은 무엇인가?


Javascript


prop(), .attr()의 차이



네트워크

CDN은 무엇인가

CDN cache hit는 무엇인가?

DNS는 무엇이고 왜 필요한가?

Http2는 무엇인가?


동기처리, 비동기처리의 장단점을 설명하라 



Storage를 아는대로 나열해 보아라


속도 순대로 나열해 보아라


DB


view는 무엇인가? 언제 무엇때문에 사용하였는가?


사용해본 것과 아는 데이터베이스를 아는 대로 이름을 나열하라


그 중에서 가장 많이 사용해 본 것 2개를 꼽으로


그 2개를 비교하라


PK, FK를 사용하는가?


사용한다면 왜? 사용하지 않는다면 왜?


Primary Key와 Unique Key의 차이


AB Testing은 무엇이며 왜 하는가?



AWS


S3는 무엇인가?

Availability Zone은 무엇인가?


EC2 에서 지원하는 storage type에 대해서 나열하고 특징과 비용관점에서의 차이을 설명하시오


EC2에서 지원하는 instance type의 특징과 기술적 차이와 비용관점에서의 차이를 설명하시오.


Hadoop Ecosystem

zookeeper는 무엇인가?


user, group, role의 설계하라.


특정 페이지가 2주 전보다 10배나 로딩속도가 좋아졌습니다 왜일까요?


어떻게 하면 테스트를 하지 않고 에러가 없는 로직을 만들까요?


MSA를 좋아하는 당신, 속도를 위해서 도메인 위주의 설계를 하고 배포를 나갑니다.

그 후 6개월, 비슷하 속성을 가진 것들이 여러 도메인에 중복됩니다.


사용자, 그룹, 권한 등, 


이러한 중복을 막기 위해서 필요한 것은 무엇일까요?


반대로 당신만의 도메인에 고유한 값이 있습니다. 

예를들어 당신은 상품관리 도메인인데, 상품의 고유 식별자는 상품번호입니다. 

이는 숫자인데, 

문자로 변경해야합니다. 


상품은 다른 도메인에서도 그 고유식별자와 속성을 사용합니다. 

어떻게 하면 효율적으로 상품번호를 숫자에서 문자로 변경할까요?


우리 회사는 배포관리를 하지 않습니다.

관리자가 개발자에게 서버의 ip와 user/pw로 들어가서 해당 서버를 사용하지 않을 때 내리고 

현재까지의 소스를 upload한수 서버를 시작합니다. 


이러한 저희 회사에 당신이 배포 관리 시스템을 만든다면 어떻게 하시겠습니까?

가장 쉽고, 가장 편하고, 가장 에러 없는 배포시스템이면 됩니다.


쿠팡 


회사의 package, class, method convention dns을 정해주세요



'IT기술관련' 카테고리의 다른 글

좋은 엔지니어란.  (0) 2018.04.30

질문의도 : 

소요시간 : 

체크포인트 :


판매를 할 수 없는 부분에 대한 것을 역으로 물어보는 것도 좋은 포인트



질문 : 

여러 벤더의 상품을 모아서 판매하는 매장에서 판매하는 제품에 정상적이지 않는 제품이 있다. 이러한 제품을 문제 상품이라고 하고, 

이러한 문제 상품을 관리하는 테이블을 설계하라. 

판매에 전담하는 직원은 판매시 문제가 되는 상품을 보고하기만 하면 되고 이미 지정해 놓은 별도의 장소에 놓기만 하면 된다. 

QA를 담당하는 직원은 이러한 제품에 대해서 문제가 무엇인지를 글로 (comment)로 기록해 놓는다. 

상품에 발주를 찾을 수 있다면 입력해 놓을 수 있어야 한다.

문제유형에는 다음과 같은 사유가 있을 수 있다.


판매를 할 수 없는 부분에 대한 use case이다.


바코드를 찾을 수 없는 상품이다. 

상품을 매장직원이 파손하여 판매할 수 없다. 

상품이 벤더로 부터 왔을 때 부터 파손이 되어 있었다.

발주(벤더로 부터 주문한) 상품과 온 상품이 다르다. 

주문온 수량이 부족하다.

주문온 수량보다 많이 왔다. 

상품에 포장에 문제가 있다.

상품이 유통기한이 지났다.


추가 :

이러한 보고를 추적할 수 있는 식별자를 설계하라.

판매할 수 없는 부분에대한 category를 설계하라.

이 category로 통계를 낼 수 있도록 설계하고 통계 SQL을 작성해 보아라



이 글은 페이스북에 Sedong Nam이 포스트한 글(저의 1촌인 장병진님의 1촌인 것으로 나옵니다. )을 적은 것입니다.(작성일 2018년 4월 30일 기준)

링크를 찾을려고 검색을 해 봤지만 안되어 일단 글을 다시 적어서 배껴서 여기 글로 남기지만, 글의 저작권은 Sedong Nam님에게 있습니다.


다음 주소는 제가 글을 읽었던 Sedong Nam 님의 facebook 주소입니다.

https://m.facebook.com/dgtgrade?fref=nf



조직이 건강하다고 느낄 때 : (순서 없이)

1. 모르는 사람이 모른다고 솔직히 얘기할 때

2. 잘 아는 사람이 나서서 얘기할 때

3. 힘들 일 하겠다고 먼저 손드는 사람이 있을 때

4. 열심히 하고 잘한 사람에게 다른 사람이 박수칠 때

5. 어려움을 겪고 있는 사람이 도움을 요청할 때

6. 문제를 일으킨 사람이 숨기지 않고 공유할 때

7. 다른 사람의 일에 대해서 얘기를 주고 받을 수 있을 때

8. 리더 사람의 잘못이나 문제에 대해 얘기할 수 있을 때

9. 실패의 이유에 대해서 터놓고 반성할 수 있을 때

10. 구성원들이 동료와 조직과 사회를 함께 생각할 때

11. 서로의 장점이 서로의 단점을 잘 덮어 줄 때


a. 별거 아닌 걸로 함께 신나게 웃을 때

b. 내부 구성원들만 이해하는 언어가 있을 때

c. 구성원들 서로의 단점까지도 잘 이해하고 있을 때

d. 서로 주고 받는 농담의 성공 확률이 높을 때

e. 누가 무엇을 좋아하고 싫어하는지 서로 잘 알 때

f. 짧은 말로도 뜻이 명확하게 전달될 때



조직을 떠날까 싶을 때 : (순서 없이)

1. 배우는 것이 없다 느낄 때

2. 하고 있는 일이 의미 없어 보일 때

3. 좋은 성과가 인정 받지 못 할 때

4. 나쁜 일이 덮어지는 것을 목격할 때

5. 윗 사람들이 능력도 실력도 없을 때

6. 서로 일을 떠 넘기려 할 때

7. 아무도 책임지려 하지 않을 때

8. 조직 이기주의가 지나쳐 보일 때

9. 좋은 사람이 떠나갈 때

10. 아부가 통하는 것이 보일 때

11. 조직이 오로지 돈에만 관심 있다 싶을 때

12.사람을 부픔으로 대하는 것이 느껴질 때


a. 언제 마지막으로 웃었지 싶을 때

b. 마음이 통하는 동료가 적다고 느낄 때

c. 롤 모델이 될만한 사람이 없다고 느낄 때

d. 조직에서 외롭다 느낄 때

e. 짜증나고 화가나는 회수가 늘었을 때



'IT기술관련 > 일과문화' 카테고리의 다른 글

Paradox  (0) 2024.09.02
부정적인 결과로 끝난 실험에 대한 의견  (0) 2024.05.31
Software Engineering Excellence  (0) 2021.05.30
Manager에 Role에 대한 생각  (0) 2021.05.23


Eric Brewer : CAP introduce


https://people.eecs.berkeley.edu/~brewer/cs262b-2004/PODC-keynote.pdf



Perspectives on the CAP Theorem


https://groups.csail.mit.edu/tds/papers/Gilbert/Brewer2.pdf



https://www.youtube.com/watch?v=hUd_9FENShA




다이어 그램 및 해당 영역에 mapping되는 database


http://nosql-guide.com/cap-theorem-what-does-it-mean-to-you/




참고자료 :

https://en.wikipedia.org/wiki/CAP_theorem

http://nosql-guide.com/cap-theorem-what-does-it-mean-to-you/

읽은 거리


http://hamait.tistory.com/197


MySQL 관련




1. MySql Replication



일반적으로 

One master, multi slave이며, 

빠른 commit및 2 phase commit의 lock을 제외하기 위하여 asynchronouse로 설정한다.

이럴 경우, replication delay가 존재한다.


Partition tolerance

하다고 말할 수 는 있음

모든 노드에 동일 데이터가 복제되기 때문


Consistency

- Transaction을 지원하여 일관성을 보장하지는 않음.

replication 사이에 데이터 유실이 발생할 수 있음. 



2. Mysql : Cluster version

shared nothing 방식


다중 노드에서 쓰기 읽기 가능 -> sharing하였기 때문



Partition Tolerance

- cluster edition에 한해서 multi cluster 를 지원하지만 어떻게 sharding해야할지는 사용자가 나눠야 한다. 이로서 cluster에 대해서 consistency와 availiabilty를 유지하면서도 performance를 어느정도 만들어내지만 단점은 전체 데이터 조회시는 전체 cluster를 scan해야하며, 이로서 특정 데이터는 partition에 dependency가 있다. 즉 partitioning tolerance는 만족하지 못한다.


2. Oracle 관련


- Oracle DataGuard


오라클 또한 Oracle DataGuard란 옵션을 이용하여, replication 노드를 구성하면, master slave로 구성이 되며, 

한쪽이 Active, 다른 한쪽은 inactive or readonly로 구성한다. 

(readonly로 구성하면, 일년에 3일 이상 가용하면 비용이 발생하는데, 그래서 옵션구매를 하는 것이  Oracle ActiveDataGuard ) 이다. 


기본적으로 redolog 를통해서 비동기 방식으로 commit을 맞춰나간다. 


한번의 redolog만 추출해서 N대의 서버에 전송하면 되므로, master slave이다. 


master 는 fail 시 over over하여, 미리 설정된 slave 노드가 master 로 되면서 write를 시작한다.

consistency

이건 불만족

일정시간 이후에는 만족하지만 asyn는 기본적으로 불일치를 가정하므로...


availability

이것도 만족


partition tolerance

이건 만족


- Oracle RAC


고가용성의 SAN을 이용하여 N개의 node에서 동시에 하나의 disk에 기록을 하는 방식

shared everything임.


consistency

만족


availability

만족


partition tolerance

이건도 만족


CAP중 3개를 다 만족한다는 분산 시스템은 없다라고 하지만, 이에 대한  argue 도 있다.

즉 CAP에 대한 보완이 필요하다는 목소리가 나올 수 밖에 없다.


https://arxiv.org/abs/1509.05393


Unique key + NOT NULL = Primary Key

현업에 계신 모든 사람들이 여기에 많은 의견을 낼 수 있으리라 생각하며, 실제로도 또한 그러하다. 신입 조차도 자신의 인터뷰 경험을 방법으로 좀 더 나은 방법이 뭐가 있겠냐 하면 많은 아이디어를 밤새 내 놓을 수 있으리라, 많은 인터뷰 방법, 인터뷰 질문들, 추천, 단계별 채용, 검증 방안 ... 그렇게 통과한 사람들은 여러분의 주위에서 일하고 있는데 다들 원래 뽑고자 했던 인재의 이미지와 매칭이 되어 있는가? 

 

요즘은 채용에 AI를 도입하여 공정한 면접과 지표화된 결과를 받으려 한다. 블라인드 면접을 해야고 주장을 하는 것 보면 얼마나 사람은 자기에 주관적인 면접을 한다는 반증인가? 

 

최근에 면접관을 어쩔 수 없이 맡게 되어, 이렇게 정리를 하면서도, 마음이 불편하다. 나 또한 사람을 평가할 수 있는 위치에 있는 것도 아닌거니와 인터뷰에 있는 기술에 대해서 설명을 다 할 정도가 되는가는 나 스스로 알기에, 나 또한 이 인터뷰 문제를 보며 새로이 배운다. 좀 더 솔직히 말하자면, 배우고 이전에 익혔어도 여전히 새롭다. 

 

재능이란 것을 수치화 하는 많은 시도가 있었으며 이러한 것이 쉬운 일이 아님을 잘 알지만, 이러한 것이 잘 되지 않는다고 하여서 앞으로도 이러한 시도가 진행되지 않을 것이라고는 그 누구도 확답하지 않을 것이다. 이 글을 쓰는 시점에서 사람의 재능은 우리가 예측하고, 상상한 것보다 뛰어다고 믿고 이러한 재능에 지식도 있지만, 열정이라는 한 부분을 측정할 수 있는 것에서도 고민해보고 이를 찾아 낼 수 있는 질문도 고민해보고자 한다. 

 

나의 현재 큰 인터뷰의 방식은 다음과 같으리라, 인터뷰 시간, 1시간 30분이라면, 45분 정도는 기본적이고 짧은 시간에 답변할 수 있는 그럼 질문을 다양한 주제, 영역에서 물어보아 그 사람의 기술적 지식을 학교, 프로젝트, 경험과 상관없이 확인한다. 

 

그리고 45분은 지식과 상관없이 자신이 좋아하는 기술적 주제 혹은 자신의 기술적 경험 중에서 얼마나 그걸 극복하기 위해서 자신을 불태웠는지를 측정할 수 있는 질문들을 고민해보고 적고자 한다.

 

아 그리고 지금은 모든 질문을 공개하지는 않을거지만, 질문만 장황하고 답변이 없는 그런 글은 만들지 않을 것이다. 내가 명확하게 답변할 수 없는 것들을 질문하지 않으리라, 그리고 이러한 답변도 공개하여 내가 먼저 아는 것이 지식이 되는 것이 아닌 좀 더 진리를 찾아 갈 수 있는 그럼 질문과 답변을 공유하여 꼭 인터뷰가 아니더라고 이를 통해 내 지식과 견해를 늘릴 수 있는 곳이되고록 해야하겠다.    

 

좋은 엔지니어란 이란 정의를 채우기는 힘들지만, 

좋은 엔지니어링 팀을 만드는데 같이 고민을 하고 기여를 하는 엔지니어라고 정의를 한다면, 

좋은 엔지니어링 팀만 정의하면 되는데 일전에 페북에서 보았던 글을 기억하면 다음과 같은 것을 할 수 있는 팀을 좋은 엔지니어링 팀이다 라고 하는데 공감했던 것 같다. 

 

다음 글을 참조

 

2018.4.30일 작성

 

========

2023.07.08 

 

이 글을 다시보며, 글이 뭔가 결론을 못 내린 것도 있는 느낌이었고, 저장된 걸 보니 2018년이었다. 그 사이 우리가 예상치 못했던 코로나도 지났었고, 나 또한 여러가지 경험을 해 보면서 좋은 엔지니어에 대한 그 간의 경험과 생각을 정리해보아야 겠다는 생각이 든다. 

 

코로나 :

코로나 터진 이후로, 코로나를 에상못했다고 했지만, 코로나때 코로나를 알기 위해서 코로나 관련된 책을 읽을 결론은 우리가 알지 못했지만 벌써 이와 관련된 사람들과 단쳬는 이러한 심각성과 영향을 경고했었다. 코로나 이후로 우리의 문화도 많이 바뀌었다. 회식을 늦게까지 하지 않고, 재택 문화가 많이 자리 잡혔다. 온라인 관련 사업이 그 사이 많이 늘었다. IT가 필요 없던 분야에서 까지 IT를 도입하기 위한 노력이 예전보다 많아졌다. 그래서 개발자는 더 부족해진 느낌이다. 반면 코로나 때 많은 중소형 소프트웨어 업체의 경영이 어려워졌다.

 

원격/재택 업무 :

코로나 이전에는 각종 보안이유와 관리 이유를 들어서 못하던 기업들이 어쩔 수 없이 폐쇄 및 격리를 해야되다보니 더 이상 시대의 기류를 막지 못하여 재택의 문을 열었다. 그렇다고 의사 결정하시는 분들의 의식이 오픈되는 건 아니였으니 하는 업무는 그대로이다. 기존의 룰과 보안정책, 좀 더 효율적인/생산적인 근무 환경을 고려하기 보다는 최대한 열어주지 않는 쪽으로 그대로 유지되는 모습을 많이 보았다. 그러면서 자연스럽게 재택이라는 문화가 자리 잡은 듯 하다. 

 

IT기업 :

온라인으로 뭔가를 해야된다는 탓에 기존에 IT가 전혀 필요 없던 곳까지 시스템/앱/모바일 등을 도입하려고 한다. 여기에는 실제 효율화 보다는 세상이 바뀌니 뭔가 IT를 도입해서 돈을 벌고 싶다는 건데, 대부분은 개발자를 넣어서 자기가 하던 업무 그대로를 IT로 옮겨놓는 것에 불과해 개발자의 인건비 및 IT 인프라 비용으로 지출이 많아서 IT 사업을 한다는 것이 돈이 많이 든다는 결 체험하신 분들이 많아진 듯 하다. 대신 IT로 뭔가 수익을 이루어 내기는 쉽지 않은 것 또한 깨달으신 분들도 많다.

 

이직 :

코로나 기간동안에는 채용도 쉽지 않았고, 이직도 쉽지 않았다. 다들 가만히 있는 분위기 였다. 언제 끝날지를 모른다는 생각에 먼 미래 보다는 당장의 급한 불과 현상 유지를 하는 쪽으로 가깝게 운영된 듯 하다. 초기에 top management쪽에 계신 분들이 코로나 3년 간다고 본다라고 했던 말이 실제로 그랬다. 어떻게 그 분들은 그걸 예측했을까? 그 분들에게는 우리와는 다른 정보가 유통되는 걸까 하는 생각이 들었다.

코로나가 풀리는 시기에는 기존의 억눌렸던 것이 나와서 많지만 조용한 변화가 많이 이루어졌던 것 가다. 많은 사람의 변동이 있었지만, 거리두기가 몸에 베여서 실제 조금 옆에는 무슨 일이 일어났는지 관심도 없고 소식의 전파도 느려진 것 같다.

 

격차 :

IT의 변화의 정도가 큰 곳에 계신 분들과 코로나 이전과 비슷한 환경에 계신분들과의 기술/문화의 격차가 더 커진 듯 하다. 같은 문화/조직 하에서도 변화가 심한 곳과 느린 곳의 차이는 누구의 표현을 빌리자면 도시와 시골의 느낌이였고, 다른 문화/회사에 계신 분들과 교류해보면, 소외 이직을 하시는 분들이 그 회사가 좋은 곳이지만, 4-5년간 똑같은 업무만 하고 있고, 이러다 도태될까봐 이직을 결심했다고 하거나 혹은 제가 있던 회사에서 top이 였고 자신감으로 이직했지만 새로운 곳에 와보니 그 동안 제가 뭘했지? 나는 할 수 있거나 아는게 왜 이렇게 없을 까? 라고 느꼈다고 하신 분들의 피드백이 기억에 남는다.

 

팀 :

그 사이 하나의 팀을 만들어 보기도 하였고, 팀 내에서 갈등이 많았던 팀에서 조율도 해보았고, TF로 만들어진 팀에서 극도로 적은 인원으로 버텨보기도 하였고, 크리티컬한 팀이 망가져서 다시 리빌드도 해보았다. 새로운 팀을 만드는 건 기존 방식으로는 도저히 안되니 Agile이 가능한 팀을 만들어보자였는데, 결국은 Agile이 아니라 Spec만들고 Spec 협의하고 도장찍고 개발할 수 밖에 없는 계약관계에서 Agile하게 빨리 개발하자가 목표가 되더라. 누가 비유하던데, 코끼리가 치타처럼 뛰게 만들게 하는 방법이라는 것을 요구하는 것과 같은 결론이다. 결론은 다들 짐작하리라 본다. 팀 내 갈등이 많았던 사례는 기존에 있던 레거시 시스템을 개선하기 위해서 문서와 개발 중 뭐가 먼저 중요하야이다. 문서가 없으니 개발을 못한다와 개발을 하면서 문서를 만들어 나가자로 뭐가 더 옳은지를 위해서 오래동안 논의했지만 결론이 안났다, 당연히 결론이 안나는 문제를 결론을 내자고 하는 케이스이다. 시간만 낭비하고 갈등만 켜지다가 결국 사람이 떠나가는 것으로 가는 수순을 밟는다. TF로 만들어진 팀은 처음에는 잘 운영되지만 결국 중심의 부재로 이곳저곳에서 간섭을 받는다. 결국 미생이다. 크리티컬한 팀이 망가져서 리빌드 하면 둘 중 하나인데, 성공하느냐 실패하느냐이며, 성공하면 안정화 되고, 그럼 크리티컬한 팀이기 때문에 누군가 이 팀을 차지한다. 실패하면 책임을 지거나 아니면 성공할 때까지 푸시를 받는다.  

 

면접 :

여러 팀을 거치면서, 여러 사람과 같이 개발하고, 여러 사람을 면접하고 채용하면서, 2018년에 채용했던 사람이 어떻게 변화해 가는지도 추적해 보았고, 내가 직접 적인 영향을 주었을 때와 주지 않았을 때 어떻게 갈지도 보아왔다. 채용의 기준을 많이 올려서 보기도 해보았고, 다른 사람의 채용 노하우도 듣고 그대로 따라 해보기도 해 보았다. 하지만 좋은 엔지니어를 판단하는 기준은 여전히 모호하다. 오래전에 나는 괜찮다고 판단했지만 많은 분들이 우려했던 나보고 책임질 수 있겠냐는 질문을 받았던 후보자들이 들어와서 지금 성장하는 것을 보면 그 때 보았던 기준이 여전히 우효한 것 같다. 자신의 환경을 바꾸기 위한 방향과 그 노력이다. 여전히 그 분들은 그러한 노력을 하고 계신다. 나도 그 분들을 보면서 그러한 노력을 조금 더 해보자고 다짐하곤 한다.

 

그런 변화 속에서 좋은 엔지니어를 키우는 것과 찾는 노력을 해왔으며, 2018년 보다는 insight가 생긴 듯 하고, 결론은 아래와 같다.

 

좋은 엔지니어란 아래와 같은 질문에 답을 할 수 있어야한다.

 

1. 개발에 더 나은 방향을 선택하는가?

2. 개발에 모르는 것에 대해서 질문하는가?

3. 개발을 즐기는가?

4. 개발로 인류를 이롭게 하는가?

 

여기에서 중요한 점은

이 4가지 질문에 모두 Yes이냐가 아니라 1-4가 No이더라도 다음의 질문에 Yes라고 답할 수 있느냐이다.

 

1-4를 하기 위해서 지금 노력하고 있는가?

'IT기술관련' 카테고리의 다른 글

표준질문  (0) 2018.04.30

관점 : 파일포맷, 압축, 저장소

 

파일포맷 :

TEXTFILE, SEQUENCEFILE, RCFILE, ORC, PARQUET

 

압축방식 :

Deflate, GZip, Bzip2, LZO, LZ4, Snappy

 

선택은?

 

ORC with Snappy 인듯한데, 자세한내용은 아래 참조

 

https://www.slideshare.net/oom65/file-format-benchmarks-avro-json-orc-parquet

 

 

SerDe

SerDe는 직렬화 (Serializer)와 역직렬화 (Deserializer)의 약자

SerDe는 테이블 컬럼 데이터 타입에 직렬화와 역직렬화를 적용하여 어떻게 데이터를 처리할지를 다루는 기술

 

종류 :

 

LazySimpleSerDe: 

STORED AS TEXTFILE

 

ColumnarSerDe :

ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe'

STORED AS RCFile 

 

RegexSerDe :

ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'

 

HBaseSerDe :

ROW FORMAT SERDE 'org.apache.hadoop.hive.hbase.HBaseSerDe'

STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'

 

AvroSerDe :

ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'

STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro'

OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro'

 

ParquetHiveSerDe :

STORED AS PARQUET 

 

OpenCSVSerDe :

ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'

STORED AS TEXTFILE

 

JSONSerDe :

ROW FORMAT SERDE 

'org.apache.hive.hcatalog.data.JsonSerDe' 

STORED AS INPUTFORMAT 

'org.apache.hadoop.mapred.TextInputFormat' 

OUTPUTFORMAT 

'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'

 

참조 :

https://cwiki.apache.org/confluence/display/Hive/SerDe

https://cwiki.apache.org/confluence/display/Hive/DeveloperGuide#DeveloperGuide-HowtoWriteYourOwnSerDe

 

 

 

 

'IT기술관련 > 빅데이터관련' 카테고리의 다른 글

HIVE 데이터타입  (0) 2018.03.27

 

Primitive type과 Complex type으로 나뉘며, 

Array와 Map은 자바와 동일하며, Struct의 필드는 어떤 타입이든 집합으로 가질수 있음

Complex type은 타입 중첩을 허용함.

 

형변환은 묵시적, 명시적

명시적은 cast(cname as TYPE)으로 변환

 

 

 

Numeric Types

  • TINYINT (1-byte signed integer, from -128 to 127)
  • SMALLINT (2-byte signed integer, from -32,768 to 32,767)
  • INT/INTEGER (4-byte signed integer, from -2,147,483,648 to 2,147,483,647)
  • BIGINT (8-byte signed integer, from -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807)
  • FLOAT (4-byte single precision floating point number)
  • DOUBLE (8-byte double precision floating point number)
  • DOUBLE PRECISION (alias for DOUBLE, only available starting with Hive 2.2.0)
  • DECIMAL
    • Introduced in Hive 0.11.0 with a precision of 38 digits
    • Hive 0.13.0 introduced user-definable precision and scale
  • NUMERIC (same as DECIMAL, starting with Hive 3.0.0)

Date/Time Types

 

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types

'IT기술관련 > 빅데이터관련' 카테고리의 다른 글

HIVE 저장 포맷  (1) 2018.03.27

+ Recent posts