일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 그래프 데이터베이스
- Database
- 정리
- 커뮤니티 탐지
- 엔터티
- 자격증
- cypher쿼리
- n8n
- Golang
- arangodb
- 중심성 측정
- GraphDB
- 쿼리프로파일링
- token bucket
- 그래프데이터베이스
- basic golang
- cypher팁
- graph
- cypher 쿼리
- Neo4j
- go
- apoc 라이브러리
- 프로그래밍
- 데이터모델링
- neo4j성능
- concurrency
- SQLD
- go best practices
- cypher
- 고루틴
- Today
- Total
목록전체 글 (47)
Jamie the programmer

PC방에서 오버워치를 하던 중 갑자기 연결이 끊겼다면, 단순히 "인터넷이 안 된다"고 말하는 것만으로는 문제를 해결하기 어렵습니다. 네트워크 장애의 원인은 다양한 요소에 의해 발생할 수 있으며, 이를 효과적으로 분석하려면 OSI 7계층 모델을 이해하고 적용하는 것이 중요합니다.이 글에서는 OSI 7계층을 기반으로 네트워크 장애를 분석하는 방법을 설명하고, PC방에서 발생할 수 있는 다양한 문제 상황을 실제 사례와 함께 살펴보겠습니다.1. 네트워크 장애 원인 분석: 전체 vs 개별 PC먼저, 네트워크 장애가 발생한 범위를 확인하는 것이 중요합니다. 다음 두 가지 경우로 나누어 분석할 수 있습니다.① 모든 PC에서 동일한 문제가 발생하는 경우이 경우 네트워크의 공용 장비(라우터, 스위치, 인터넷 회선 등)에..

1. 관계(Relationship)관계는 엔터티 간의 관련성을 의미하며 존재 관계와 행위 관계로 분류된다. 2. 존재 관계존재 관계는 엔터티 간의 상태를 의미한다.예를 들어 고객이 은행에 회원가입을 하면, 관리점이 할당되고, 그 할당점으로 관리점에서 고객을 관리한다. 3. 행위 관계행위 관계는 엔터티 간에 어떤 행위가 있는 것을 말한다.계좌를 사용해서 주문을 발주하는 관계가 만들어진다.예를 들어 증권회사는 계좌를 개설하고 주문을 발주하는 것이다. 4. 관계 차수(Cardinality)관계 차수는 두 개의 엔터티 간에 관계에 참여하는 수를 의미한다.예를 들어 한 명의 고객은 여러 개의 계좌를 개설할 수가 있다.이러한 경우는 1대N 관계가 된다. 5. 관계 차수의 종류1대1 관계1대1 관계는 완전 1대1 관..

1. 속성(Attribute)속성이라는 것은 업무에서 필요한 정보인 엔터티가 가지는 항목이다.속성은 더 이상 분리되지 않는 단위로, 업무에 필요한 데이터를 저장할 수 있다.인스턴스의 구성요소이고 의미적으로 더 이상 분해되지 않는다. 2. 속성의 특징속성은 업무에서 관리되는 정보이다.속성은 하나의 값만 가진다.주식별자에게 함수적으로 종속된다.즉, 기본키가 변경되면 속성의 값도 변경된다는 것이다. 3. 속성의 종류분해 여부에 따른 속성의 종류단일 속성하나의 의미로 구성된 것으로 회원 ID, 이름 등이다.복합 속성여러 개의 의미가 있는 것을로 대표적으로 주소가 있다.주소는 시, 군, 동 등으로 분해될 수 있다.다중값 속성속성에 여러 개의 값을 가질 수 있는 것으로 예를 들어 상품 리스트가 있다.다중값 속성은 ..

Neo4j에서 상속(Inheritance) 또는 IS-A 관계는 객체 지향 프로그래밍(OOP)에서의 상속 개념을 그래프 데이터베이스에 적용한 것입니다. 이는 한 노드가 다른 노드의 특성을 상속받는 관계를 의미하며, 데이터 모델링에서 유연성과 재사용성을 높이는 데 유용합니다. 아래에서 Neo4j에서 상속 또는 IS-A 관계를 구현하는 방법과 사용 사례를 설명드리겠습니다.상속(Inheritance) 또는 IS-A 관계란?IS-A 관계는 한 엔티티가 다른 엔티티의 특성을 상속받는 관계를 의미합니다.예: "고양이는 동물이다" → Cat 노드는 Animal 노드의 특성을 상속받습니다.Neo4j에서는 상속을 명시적으로 지원하지 않지만, 라벨(Labels)과 관계(Relationships)를 활용하여 이를 구현할 수..

Neo4j에서 PROFILE과 EXPLAIN은 Cypher 쿼리의 실행 계획을 분석하는 데 사용되는 두 가지 키워드입니다. 이 둘은 비슷해 보이지만, 목적과 제공하는 정보에서 중요한 차이가 있습니다. 아래에서 PROFILE과 EXPLAIN의 차이점을 상세히 설명드리겠습니다.PROFILE 설명목적: 쿼리의 실제 실행 계획과 실행 통계를 제공합니다.동작 방식:쿼리를 실제로 실행하고, 실행 중 발생하는 작업(Operation)과 비용(Cost)을 상세히 보여줍니다.실행 계획과 함께 실제 데이터(DB Hits, Rows, Time 등)를 제공합니다.사용 예시: PROFILE MATCH (p:Person)-[:ACTED_IN]->(m:Movie) RETURN p.name, m.title;주요 정보:실행 계획(..

Neo4j의 PROFILE 키워드는 Cypher 쿼리의 실행 계획을 분석하고, 쿼리가 어떻게 실행되는지 상세한 정보를 제공하는 데 사용됩니다. 이 키워드는 쿼리의 성능을 최적화하거나 문제를 진단할 때 매우 유용합니다. 아래에서 PROFILE의 사용법과 주요 기능을 설명드리겠습니다.PROFILE 키워드란?PROFILE은 Cypher 쿼리의 실행 계획을 분석하고, 쿼리 실행 중 발생하는 작업(Operation)과 비용(Cost)을 상세히 보여줍니다.쿼리가 어떻게 실행되는지, 어떤 단계에서 시간과 자원이 소모되는지 확인할 수 있습니다.EXPLAIN과 유사하지만, PROFILE은 실제 쿼리를 실행하고 실행 통계를 제공합니다.PROFILE 사용법PROFILE 키워드는 Cypher 쿼리 앞에 추가하여 사용합니다.예..

Neo4j에서의 Fanout은 그래프 데이터베이스에서 특정 노드가 매우 많은 수의 관계를 가지고 있어 발생하는 문제를 의미합니다. 이는 슈퍼 노드(Super Node) 문제와 밀접하게 관련되어 있으며, 특히 그래프 탐색 및 쿼리 성능에 큰 영향을 미칩니다. Fanout는 그래프 데이터베이스 설계와 최적화에서 중요한 개념입니다.Fanout란?Fanout는 특정 노드로부터 매우 많은 수의 관계가 뻗어 나가는 상황을 말합니다.예를 들어, 한 노드가 수천 또는 수백만 개의 관계를 가지고 있다면, 이 노드는 Fanout 문제를 일으킬 수 있습니다.Fanout는 그래프 탐색 시 성능 저하를 초래하며, 특히 너비 우선 탐색(BFS)이나 깊이 우선 탐색(DFS)에서 문제가 됩니다.Fanout가 발생하는 경우소셜 네트워..

Neo4j의 Cypher 쿼리 언어를 사용할 때 권장되는 컨벤션(Convention)은 코드의 가독성, 일관성, 유지보수성을 높이는 데 도움을 줍니다. 아래는 Cypher를 작성할 때 일반적으로 따르는 컨벤션들입니다.1. 키워드(Keyword)Cypher의 키워드는 대문자로 작성합니다.예: MATCH, RETURN, WHERE, CREATE, MERGE, SET, DELETE, WITH, ORDER BY, LIMIT 등.예시: MATCH (p:Person)-[:ACTED_IN]->(m:Movie) RETURN p.name, m.title;2. 라벨(Labels)라벨은 파스칼 케이스(PascalCase)로 작성합니다.예: Person, Movie, UserProfile, CustomerOrder.예시:..

EPSS(Exploit Prediction Scoring System)는 공격자가 실제로 취약점을 악용할 가능성을 예측하는 시스템이다. CVSS(Common Vulnerability Scoring System)처럼 취약점의 심각도를 평가하는 것이 아니라, 해당 취약점이 공격에 활용될 확률을 제공한다는 점에서 차이가 있다.EPSS의 필요성 🤔기존의 취약점 관리 시스템(CVSS, NVD 등)은 취약점의 심각도를 기반으로 패치 우선순위를 결정한다. 하지만 실제로 악용되지 않는 취약점도 많아 비효율적인 관리가 발생할 수 있다.EPSS는 이러한 문제를 해결하기 위해, 취약점이 실제 공격에 사용될 확률을 예측하여 보안팀이 더욱 효과적으로 대응할 수 있도록 돕는 것이 목표다.EPSS의 특징 🔍1. 데이터 기반 예..

최근 사이버 보안 이슈에서 자주 언급되는 개념 중 하나가 ‘제로데이 취약점’입니다. 이는 보안 패치가 제공되기 전에 악용될 수 있는 심각한 보안 위협으로, 기업과 개인 모두에게 큰 영향을 미칠 수 있습니다. 이번 글에서는 제로데이 취약점의 개념과 발생 원인, 그리고 이를 예방하고 대응하는 방법에 대해 살펴보겠습니다.제로데이(Zero-day) : 해당 취약점이 공표 혹은 발견된 날제로데이 취약점 : 취약점이 발견되고 보안패치가 배포 되기 전까지의 취약점제로데이 공격 : 취약점에 대한 패치가 나오지 않은 시점에서 이루어지는 공격제로데이 취약점이란?제로데이 취약점(Zero-day Vulnerability)이란 소프트웨어, 운영체제, 네트워크 장비 등에서 발견되었지만, 개발자나 보안 담당자가 인지하기 전에 악의..

1. 엔터티(Entity)엔터티는 업무에서 관리해야 하는 데이터 집합을 의미하며, 저장되고 관리되어야 하는 데이터이다.엔터티는 개념, 사건, 장소 등의 명사이다.엔터티는 변별할 수 있는 사물이다.엔터티는 정보를 저장할 수 있는 어떤 것이다.엔터티는 데이터베이스 내부에서 변별 가능한 객체이다.엔터티는 정보가 저장될 수 있는 장소, 사람, 사건, 개념, 물건 등이다. 2. 엔터티 도출 엔터티는 고객의 비즈니스 프로세스에서 관리되어야 하는 정보를 추출해야 한다. 엔터티 도출 예) 비즈니스 프로세스 고객이 회원가입을 한다. 회원으로 가입할 때는 회원 ID, 패스워드, 이름, 주소, 전화번호 등을 입력해야 한다. 회원으로 가이하기 위해서는 반드시 하나의 계좌..

1. 3층 스키마사용자, 설계자, 개발자가 데이터베이스를 보는 관점에 따라 데이터베이스를 기술하고 이들간의 관계를 정의한 ANSI 표준이다.3층 스키마는 데이터베이스의 독립성을 확보하기 위한 방법이다.데이터의 독립성을 확보하면 데이터 복잡도 증가, 데이터 중복 제거, 사용자 요구사항 변경에 따른 대응력 향상, 관리 및 유지보수 비용 절감 등의 장점을 갖는다.3단계 계층으로 분리해서 독립성을 확보하는 방법으로 각 계층을 View 라고도 한다.3층 스키마의 독립성 논리적 독립성 저장구조가 변경되어도 응용 프로그램 및 개념 스키마에 영향이 없다. 물리적 독립성 데이터베이스 논리적 구조가 변경되어도 응용 프로그램에 변화가 없다. 2. 3층 스키마 구조 외부 스키마(Ext..

1. 데이터 모델링데이터 모델링은 현실세계를 데이터베이스로 표현하기 위해서 추상화한다.데이터 모델링을 하기 위해서는 고객과의 의사소통을 통해 고객의 업무 프로세스를 이해해야 한다.고객의 업무 프로세스를 이해하면, 데이터 모델링 표기법을 사용해서 모델링을 한다.데이터 모델링은 복잡하지 않도록 모델링을 해서 고객이 쉽게 이해할 수 있어야 한다.데이터 모델링은 고객의 업무 프로세스를 추상화하고, 소프트웨어를 분석 및 설계하면서 점점 더 상세해진다.데이터 모델링은 고객의 비즈니스 프로세스를 이해하고 비즈니스 프로세스의 규칙을 정의한다.정의된 비즈니스 규칙을 데이터 모델로 표현한다. 2. 데이터 모델링의 특징 추상화(Abstraction) 데이터 모델링은 추상화해야 한다. 추상화는 공통적인 특징..

1. 프로젝트 관리프로젝트 정의 : 유니크한 제품, 서비스, 결과 등을 만들기 위하여 한시적으로 수행되는 작업.한정된 기간과 비용 내에서 정해진 자원을 활용하여 완수하고자 하는 과제.계약상의 목표일정비용자원 활용제한사항을 지키지 못한다면 신뢰도 하락, 수익절감 (지연보상금) 등..업종별 프로젝트 현황 (IT, 건설, 토목, 조선, 제조 , R&D 등.의 수주업)수주업의 개념 : 고겍이 발주한 사업을 타 회사들과의 경쟁을 통해 획득하고 이를 수행하는 business 를 영위하는 업종고객의 사업기획 및 발주 → 제안 → 계약 및 협상 → 프로젝트 수행EX) 중국의 저가 수주 ?? → 이익보다는 시장점령이 우선. 이익을 못보더라도 수주를 하겠다는 마인드사업 발주 및 제안 프로세스프로젝트 타당성 검토 → 사업계..

Telegram Bot을 활용하여 Ollama Chat Model과 연동하는 워크플로우를 설계하고 실행해 보았습니다. 이번 실험에서는 Telegram Trigger 노드를 통해 메시지를 받아와 Ollama Chat Model에서 응답을 생성한 후, 다시 Telegram Bot을 통해 답장을 보내는 흐름을 구현하고자 했습니다. 하지만 예상과 다르게 Telegram Trigger에서 메시지를 받아오지 못하는 문제가 발생하여 실험이 실패로 끝났습니다. 이에 대한 원인 분석과 해결 방법을 찾아보는 과정도 함께 정리하겠습니다. 📊 예상 시나리오내가 생성한 Telegram Bot에서 메시지를 보낸다.생성한 workflow에서 Telegram Trigger 노드를 통해 메시지를 받는다.수신한 메시지를 input으..

n8n을 활용하여 Telegram 자동화를 구현하려면 Telegram 봇 API 토큰이 필요합니다. 하지만 검색해보면 정보가 부족해서 직접 구현해보면서 하나하나 과정을 정리해 보았습니다. 🧐 이번 글에서는 Telegram 봇을 만들고 API 토큰을 발급받는 과정까지 상세히 설명하겠습니다. 🚀 1️⃣ Telegram 봇 생성 및 API 토큰 발급① Telegram 설치 및 계정 생성먼저 Telegram을 설치하고 로그인해야 합니다.어떤 플랫폼을 사용하든 상관없습니다!iPhone, Android, Windows, macOS, 또는 웹 버전에서 Telegram을 다운로드합니다.Telegram 계정을 생성하고 로그인합니다. ② BotFather를 이용해 새 봇 생성Telegram에서 봇을 만들려면 @Bot..

Neo4j Cypher Workbench는 그래프 데이터베이스에서 Cypher 쿼리를 작성하고 실행하는 데 특화된 도구입니다. 이 도구는 개발자와 데이터 분석가들이 Neo4j 데이터베이스와 상호작용하며 복잡한 쿼리를 쉽게 작성하고 테스트할 수 있도록 도와줍니다. 특히, 그래프 데이터베이스를 처음 접하는 사용자들에게도 매우 유용한 도구로 자리 잡고 있습니다.🔍 Cypher Workbench란?Cypher Workbench는 Neo4j 데이터베이스에서 Cypher 쿼리를 작성하고 실행할 수 있는 웹 기반 도구입니다. 이 도구는 브라우저에서 바로 사용할 수 있으며, 별도의 설치가 필요하지 않습니다. Cypher Workbench를 사용하면 데이터베이스에 연결하여 쿼리를 작성하고, 결과를 실시간으로 확인할 수..

Neo4j Arrows.app은 그래프 데이터베이스를 사용하는 개발자와 데이터 설계자들에게 꼭 필요한 도구입니다. 이 도구는 복잡한 그래프 데이터 모델을 시각적으로 설계하고 문서화하는 데 탁월한 성능을 발휘합니다. 특히, Neo4j를 사용하는 프로젝트에서 데이터 모델을 설계하거나 팀원들과 협업할 때 Arrows.app은 매우 유용한 도구로 자리 잡고 있습니다.🔑 Arrows.app의 주요 기능🧩 드래그 앤 드롭 인터페이스: Arrows.app은 직관적인 드래그 앤 드롭 인터페이스를 제공합니다. 노드와 관계를 쉽게 생성하고 배치할 수 있어, 복잡한 그래프 모델도 간단하게 설계할 수 있습니다.📝 노드와 관계의 세부 설정: 각 노드에는 레이블과 속성을 정의할 수 있으며, 관계에는 타입과 방향을 설정할 수..

엔터프라이즈 에디션의 필요성: 실제 기업 환경에서의 선택소프트웨어를 선택할 때 가장 고민되는 부분 중 하나는 바로 '어떤 버전을 선택할 것인가'입니다. 특히 엔터프라이즈 환경에서는 이 선택이 비즈니스의 성공과 직결될 수 있죠. 오늘은 Community Edition과 Enterprise Edition의 차이점을 자세히 살펴보면서, 언제 Enterprise Edition을 선택해야 하는지 알아보도록 하겠습니다.Community Edition vs Enterprise Edition: 기본적인 차이먼저 두 버전의 가장 기본적인 차이점부터 살펴보겠습니다. Community Edition은 무료로 제공되는 오픈소스 버전으로, 기본적인 기능과 커뮤니티 지원을 제공합니다. 단일 서버 구성에 적합한 이 버전은 소규모 ..

ArangoDB의 Multi-Model 특성 (Graph + Document + Key-Value)ArangoDB는 멀티 모델 데이터베이스로, 단일 데이터베이스에서 그래프, 문서(Document), 키-값(Key-Value) 모델을 모두 지원합니다. 이를 통해 서로 다른 데이터 모델을 조합하여 사용할 수 있으며, 필요에 따라 적절한 데이터 모델을 선택할 수 있습니다.1. ArangoDB의 지원 모델📌 (1) Document Model (문서 기반 모델 - MongoDB와 유사)JSON 형식의 문서를 저장하는 NoSQL 데이터 모델단순한 CRUD 작업이 빠르고 직관적컬렉션(Collection) 개념을 사용 (MongoDB의 컬렉션과 유사)📌 예제 (AQL - ArangoDB Query Language)..