본문 바로가기
728x90

SQL9

[SQL] SQL 성능확인, Query Plan 보는 법 (Oracle, MySQL) 1. Query Plan이란? SQL 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터 접근에 사용되는 순서가 있는 단계별 집합 엑세스 플랜의 관계형 모델 개념의 특화된 경우 SQL이 선언형이기 때문에 주어진 쿼리를 실행하기 위해 수많은 방법이 존재하는 것이 일반적이며 이에 따라 다양한 성능 차이를 보임 Query Optimizer는 Query 실행을 위한 각기 다른 가능성 있는 올바른 플랜 중 일부를 평가한 다음 최적의 옵션을 고려할 때 반환 2. Query Plan 보는 법, 요소(Oracle) 1) Query Plan 보는 법 위에서 아래로 내려가면서 제일 먼저 읽을 위치 찾기 내려가는 과정에서 같은 들여쓰기가 있으면, 무조건 위에서 아래 순으로 읽기 같은 레벨에 들여쓰기된 하위 스텝이 존재하면.. 2023. 1. 31.
[Data Engineering] 데이터 엔지니어가 읽으면 좋을 책 추천 목록(+ 내가 읽은 순서, 읽을 순서) 이번 포스트에는 데이터엔지니어 오픈톡방 및 지인들에게 추천 받은 책 목록을 분야별로 분류하여 소개해 드리겠습니다. 또한 제가 책을 읽은 순서와 아직 읽지는 못한 책의 읽어야 할 순서도 정리해보겠습니다. 1. SQL 데이터 업계에 있어 가장 중요한 언어라고 생각되는 SQL, 예전에 저희 회사 이사님께서 말씀하시길 결국 하이브, 스파크도 사람들이 SQL사용하는게 편하기 때문에 그거에 맞게 생긴 프레임워크이거나, SQL을 사용할 수 있게 지원하는 방향으로 간다. SQL의 컨셉 for oracle 저자: 변동구 http://www.yes24.com/Product/Goods/6357997 SQL의 컨셉 for ORACLE - YES24 이 책은 SQL 초중급자를 대상으로 한다. SQL의 기본 개념과 문법을 알고,.. 2022. 9. 9.
[DataBase] (Oracle vs MySQL) CTAS(Create Table As Select), INSERT INTO SELECT, TEMP Table, View + with절,Inline view 이번 포스트에는 oracle과 MySQL에서 각각 CTAS, INSERT INTO SELECT가 어떻게 사용되는지, TEMP table과 View의 개념과 장단점 그리고 Oracle과 MySQL에서는 어떻게 다른지에 대해 포스팅 하겠습니다. 1. CTAS(Create Table As Select) CTAS의 기본 개념은 MySQL과 오라클 모두 같다. 1) 기본 문법 CREATE TABLE 'target' AS SELECT * FROM 'origin'; --AS 이후에는 기존의 조회쿼리처럼 원하는 컬럼만 지정하거나 조건절 및 정렬도 가능하다. 2) 데이터는 복사하지 않기 CREATE TABLE 'target' AS SELECT * FROM 'origin' WHERE 1=0; MySQL 기본 문법 데이터 .. 2022. 6. 15.
프로그래밍 언어별 '(홑 따옴표, single quotation) vs "(쌍 따옴표, double quotation) 이번 포스트에는 프로그래밍 언어별 single quotation, double quotation 사용되는 경우를 비교 해보겠습니다. SQL '(홑 따옴표, single quotation) "(쌍 따옴표, double quotation) string, 문자열을 표현 할 때 사용 식별자,객체이름을 표현할 때 사용됨(mysql 에서는 `와 "를 사용) 파이썬 '(홑 따옴표, single quotation) "(쌍 따옴표, double quotation) 의미 있는string, 문자열을 표현 할 때 사용 ex) 'python' 의미 없는 string 문자열을 표현 할 때 사용 ex )"python is fun" 자바 '(홑 따옴표, single quotation) "(쌍 따옴표, double quotation).. 2022. 6. 8.
[python] python으로 MYSQL 연결하기(windows) with odbc, mysql-connector-python 1. mysql-connector-python 1) mysql-connector-python library 설치 pip install mysql-connector-python 2) mysql 연결 미리 만들어 둔 mysql DB의 정보를 mysql connection 객체에 담는다 import mysql.connector mydb = mysql.connector.connect( host="ip주소", user="계정 아이디", passwd="계정 비밀번호", database="생성한 DB이름" ) 3) 데이터 조회해보기 def select_all(): #조회 함수생성 cur = mydb.cursor() #커서 객체생성 sql ='''SELECT * FROM DB.Table명''' #조회 SQL cur.e.. 2022. 1. 20.
[HIVE] (Hive 실습)Hadoop ETL with (HiveQL)HQL파일,HQL파일로 hadoop에 job제출하기 이번 포스트에는 standalone(pseudo distributed hadoop cluster)에 HQL파일을 생성하여 job을 제출하는 실습을 해보겠습니다. 하둡 및 하이브를 설치하지 못하신 분은 아래의 링크를 참조해주세요. 2021.04.26 - [BigData] - [Hadoop] virtual box linux [ubuntu 18.04]에 하둡 설치,다운로드 1.virtualbox에 ubuntu 설치하기 [Hadoop] virtual box linux [ubuntu 18.04]에 하둡 설치,다운로드 1.virtualbox에 ubuntu 설치하기 1.virtual box를 다운로드한다. www.virtualbox.org/wiki/Downloads Downloads – Oracle VM Virtua.. 2021. 11. 8.
[Hive] Hive란?(1) 개념, 구성요소, 등장배경, 버전 1. Hive란? -하이브는 하둡 에코시스템 중에서 데이터를 모델링하고 프로세싱하는 경우 가장 많이 사용하는 데이터 웨어하우징용 솔루션입니다. -RDB의 데이터베이스, 테이블과 같은 형태로 HDFS에 저장된 데이터의 구조를 정의하는 방법을 제공하며, 이 데이터를 대상으로 SQL과 유사한 HiveQL 쿼리를 이용하여 데이터를 조회하는 방법을 제공합니다. *가장 큰 특징으로는 메타스토어라는 것이 존재하는데, 하이브는 기존의 RDB와는 다르게 미리 스키마를 정의하고 그 틀에 맞게 데이터를 입력하는 것이 아닌, 데이터를 저장하고 거기에 스키마를 입히는(메타스토어에 입력하는) 것이 가장 큰 특징입니다. 2. Hive 구성요소 UI 사용자가 쿼리 및 기타 작업을 시스템에 제출하는 사용자 인터페이스 CLI, Beel.. 2021. 7. 12.
[BigData] SQL을 Spark Dataframe API,Method로 변환하기(select,selectExpr,col,Join,Windowfunction,inline view) 1. dataframe Method로 select,selectExpr,expr,col 이용하여 컬럼 출력하기(with 집계함수) expr을 사용할 때는 expr("") 따옴표안에 표현식이 위치 selectExpr를 사용할 때도 selectExpr("") 따옴표안에 표현식이 위치 select와 함수,컬럼 이름으로 쓰고싶을 때는 select(함수("컬럼 이름"))처럼 사용 select와 함수,col을이용한 컬럼 이름을 명시하고 사용하는 방법은 select(함수(col("컬럼 이름"))) 처럼 사용 2. SQL에서의 조인을 Dataframe Method로 join구현하기 데이터프레임.select.join(조인할 데이터프레임,조인할 표현식,조인 방식).show() SELECT FROM 처럼 조인할 테이블이 있으.. 2021. 2. 26.
[BigData] Spark 예제, Dataframe 특징, 설정 값, SQL 파일 읽어오기 csv, json, parquet 등등 df = spark.read.format("json").option("header","true").load("주소") //option("header","true")는 해당 열의 이름을 표기 df = spark.read.format("csv").option("inferSchema","true").load("주소") df = spark.read.format("parquet").load("주소") option 종류 sep: 구분자 default: , Spark 1.6 방식에서는 delimiter를 사용해야 한다 encoding default: UTF-8 quote: value가 큰 따옴표로 묶인 경우 "를 지정 defualt: " escape: 구분자가 v.. 2021. 2. 17.
728x90