DSS(Decision Support System) : 의사결정 지원 시스템

 

OLTP ( On-Line Transaction Processing )

여러 과정의 연산이 하나의 단위 프로세스(트랜잭션)로 실행되도록 하는 프로세스입니다. 네트워크상의 여러 이용자가 실시간으로 데이터베이스의 데이터를 갱신하거나 조회하는 등의 단위 작업을 처리하는 방식을 말한다. 

 

A 라는 사람이 B 에게 10,000 원을 이체하는 상황을 예로 들어보겠습니다.

1. A 라는 사람의 계좌에서 10,000 원이 인출됩니다.

2. B 라는 사람의 계좌에 10,000 원이 입금됩니다.

 

이 단계는 하나의 프로세스로 이루어져야 하며, 중간에 오류가 발생하는경우 모든 단계를 되돌려야 합니다.

 

 

OLAP ( On-Line Analytical Processing )

대용량 데이터를 고속으로 처리하며 쉽고 다양한 관점에서 추출, 분석할 수 있도록 지원하는 데이터 분석 기술입니다.

이용자가 직접 데이터베이스를 검색, 분석해서 문제점이나 해결책을 찾는 분석형 애플리케이션 개념. 대규모 데이터를 이용한 질의 검색 시 발생한 대량의 결과값을 단순히 사용하기는 어렵다. 데이터를 분석하여, 소비자 패턴, 연령대별의 선호 물품 등을 판별하여 매출에 긍정적 영향을 줄 수 있습니다.

주로 데이터 큐브 형태로 표현됩니다.

 

 

DW ( Data Warehouse )

오랜기간을 통해 추척된 데이터를 하나의 통합 데이터베이스로 구축해 놓은 것을 의미합니다.

 

 

 

'CS > 디지털상식' 카테고리의 다른 글

레디스(관심사 분리)  (0) 2020.04.03
빅데이터  (0) 2020.02.25
어셈블리어, 컴파일러, 인터프리터  (0) 2020.02.22
정리해야할 것들.  (0) 2020.01.11

빅데이터.show
0.08MB

어떻게 할래?

- ADP에 잘나와있는거 같다 이거 참고해서 정리하자. 

- https://www.youtube.com/channel/UCINY8MNBVyQgI5ZPaj1Mf0Q/videos

 

분석 : 평판분석, 텍스트 마이닝, SNS 분석, 클러스터분석

 

7가지 분석. 

감정 분석, 소셜 네트워크 분석 : 비정형 데이터( 댓글, 텍스트등) 분석이다.

 

 

아래 영상을 보고 정리하자.!!! 중요!!!

https://www.youtube.com/playlist?list=PLCui40VmeUnJYQRaYvR9emAfUthzSSLRZ

'CS > 디지털상식' 카테고리의 다른 글

레디스(관심사 분리)  (0) 2020.04.03
DSS, OLAP, OLTP, DW  (0) 2020.02.25
어셈블리어, 컴파일러, 인터프리터  (0) 2020.02.22
정리해야할 것들.  (0) 2020.01.11

* Spring & Springboot 차이
딱 생각 든 답변은 Spring boot는 Spring에 포함된 개념이다.
스프링부트는 spring boot starter를 통해 pre-packaged를 제공하고, 이는 스프링의 많은 설정 과정을 건너뛰게 해준다. (Spring Boot는 웹 컨테이너를 내장하고있고 최소한의 설정으로 쉽게 웹 어플리케이션을 만들 수 있다.)


쉽게 만든다. 단독적인. 상용화 수준의. Based on Spring.
1. dependency: 짧아졌다. 버전관리도 권장 버전으로 자동 설정.
2. configuration: application.properties(application.yml)
3. embedded server: 내장된 tomcat, jetty, undertow. jar 파일로 간단한 배포! (서버 구동시간이 짧다.. )
-> 개발자들이 개발에만 더 집중할 수 있도록

'개발 및 언어 > SPRING' 카테고리의 다른 글

SPRING _FRAMEWORK(이해하기)  (0) 2020.07.04

 

state : 말 그대로 상태를 나타냄. 

getters : 어떤 컴포넌트에서 쓸 때, 자주 사용되는 상태값에 대한 길이? 혹은 함수들을 만들어서 정의해두고 쓸 수 있다. 

장점 -> 반복을 줄이고, this.$store.state.AllUsers.length이렇게 쓸꺼를 짧게 줄여서 표현가능.

mutations는 동기 역할을 한다(state를 변화 시키는 한줄) 

actions는 비동기 역할을 한다. ( 변화시키기 위한 로직이 들어간다 ) 

 

( 즉, mutations와 actions는 과정과 결과처리를 분리 시켜놨다고 생각 )

( 어떤 과정이 들어오느냐 에 따라서, 여러 상태로 변화 될 수 있기 때문에 !! ) 

이게 전부다. 2가지 방법.

첫번째, 

 ...mapMutations(['addUsers'])를 등록해두고 this.addUsers(userObj)를 쓴다.

 

두전째, 

this.$store.commit('addUsers',userObj)만 써서 한번에 접근한다. 

 

 

그니까 mutations의 역할이 state 변화 및 관리다. 즉 효율적 관리다. 

mutations는 여러 컴포넌트에서 동작을 하는데 , 이를 비동기로 받아들이면, 같은 값에 대해서 

그 순서를 정확하게 알기 어렵다. 

즉, state를 변화 시키는 것은 mutation에 넣는다.

이를 동작시키는 biz들은 actions에 넣는다. 

 

mutations = commit 

actions = dispatch 

 

즉 , 

mutations는 동기 역할을 한다( state를 변화 시키는 한줄 ) 

actions는 비동기 역할을 한다. ( 변화시키기 위한 로직이 들어간다 ) 

store js를 어떻게 사용하는가? 

 

main.js에서 vue store를 임폴트 해놨다.  그렇기에 프로젝트에서 vuex가 적용되었다고 생각할 수 있다. 
https://www.youtube.com/watch?v=7i0D7OSogYc&list=PLZzSdj89sCN292abcbI3utND8pA1T1OyB&index=2


STORE.JS부분( getters 쓰는 방법  ) 

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: { //data 
    allUsers:[
      {userId: 'hoza123', password: '123', name: 'Hoza', address: 'Seoul', src:'https://goo.gl/oqLfJR'},
      {userId: 'max123', password: '456', name: 'Max', address: 'Berlin', src:'https://goo.gl/Ksk9B9'},
      {userId: 'lego123', password: '789', name: 'Lego', address: 'Busan', src:'https://goo.gl/x7SpCD'}
    ]
  },
  getters:{
    allUsersCount: function(state){
      return state.allUsers.length
    },
    countOfSeoul: state =>{
        let count =0 
        state.allUsers.forEach(user =>{
          if(user.address==='Seoul' || user.address==='seoul')count++
        })
        return count
    },
    percentOfSeoul: (state, getters)=>
    {
       return Math.round(getters.countOfSeoul/getters.allUsersCount *100 ) 
    }
  },
  mutations: {
 
  },
  actions: {

  }
})

// 이렇게 getters를 쓰면, vuex에 접근할 때 중복된 코드를 자꾸 쓴다. 이를 막기 위해서 getters를 쓴다. 
=> computed의 장점인 반복된 코드를 줄여준다???? 이를 그대로 가지고 있다.
=> $store.state.allUsers.length 라고 쓰던거를 줄여서 쓸 수 있다.

=> $store.getters.allUsers 이런식으로 길이를 줄여서 쓸 수 있다. 

=> 길이를 줄여줄 뿐만 아니라, 다른 원하는 함수를 만들어서 쓸 수도 있고, 중복된 코드를 줄여 

쓸 수 있는 장점이 있다. 

allUsers.vue에서 쓰는 방법

<template>
  <div>
    <h1>All Users{{count}}</h1>
      <h1>All Users{{seoul}}</h1>
      <h1>{{percent}}</h1>
    <v-list two-line>
      <v-list-tile 
        v-for="(user, index) in $store.state.allUsers"
        :key="index"
        avatar
      >
        <v-list-tile-avatar color="grey lighten-3">
          <img :src="user.src">
        </v-list-tile-avatar>

        <v-list-tile-content>
          <v-list-tile-title v-html="user.name"></v-list-tile-title>
          <v-list-tile-sub-title>id:#{{index}} / {{user.address}} 거주</v-list-tile-sub-title>
        </v-list-tile-content>
      </v-list-tile>
    </v-list>

  </div>
</template>

<script>
import { EventBus } from '@/main.js'
import {mapState, mapGetters} from 'vuex'
  export default {
    data() {
      return {
        
      }
    },
    computed:{
      ...mapState['allUsers'],
      ...mapGetters({
        count: 'allUsersCount',
        seoul: 'countOfSeoul',
        percent: 'PercentOfSeoul'
      })
        // ...mapGetters['allUsersCount', 'countOfSeoul','PercentOfSeoul']
    },
    mounted() {
      EventBus.$on('signUp', users => {
        this.$store.state.allUsers.push(users)
      })
    }
  }
</script>

즉,

import {mapGettersfrom 'vuex' 는 store에서 쓰지 않고 위와 같이 쓰는 곳에서 

정의해준다. 

getters에 있는 것들을 들고 와서 쓸 수 있도록 해준다.

 

 ...mapGetters({

        count: 'allUsersCount',

        seoul: 'countOfSeoul',

        percent: 'PercentOfSeoul'

      })

        // ...mapGetters['allUsersCount', 'countOfSeoul','PercentOfSeoul']

이러한 명칭을 줄여서 쓸 수도 있다는 점은 참고 !!!

let hour = date.getHours()  // 시간을 얻음. 

let minutes = date.getMinutes() // 분을 얻음. 

let year = date.getFullYear()

let month = date.getMonth() 

let day = date.getDate() 

//이렇게 쓸 수 있다. 

위처럼 if 문을 써야 에러가 안뜬다.!!! 

이렇게 폴더를 새롭게 하나 만든다. 

https://www.youtube.com/watch?v=B98iyg_brxQ&list=PLZzSdj89sCN0sLqrTKf2m7lXe_93C19UG&index=9

+ Recent posts