전체 글(145)
-
Django ORM에서 Group By 사용하기
Django ORM에서 Group By 사용하기 Django ORM은 강력하고 직관적인 쿼리 언어를 제공합니다. 그 중에서도 group by는 데이터를 그룹화하고 집계하는 데에 매우 유용합니다. 이번 포스팅에서는 Django ORM을 사용하여 group by를 어떻게 수행하는지 살펴보겠습니다. 1. 모델 정의하기 우선 예제를 위해 간단한 모델을 정의해봅시다. 예를 들어, 학생의 성적을 나타내는 모델을 사용하겠습니다. # models.py from django.db import models class Student(models.Model): name = models.CharField(max_length=100) score = models.IntegerField() 2. Group By 쿼리 작성하기 이제 ..
2024.01.18 -
Django에서 대용량 데이터 처리하기: bulk_create 메서드 활용하기
데이터베이스에 1000개 이상의 Row를 insert 해야하는 상황이 발생할 때, Django의 create나 update_or_create 등을 사용해서 데이터를 저장하면 시간이 상당히 걸릴 수 있습니다. 이러한 방법은 많은 수의 DB 쿼리를 발생시켜 데이터베이스에 과부하를 줄 수 있으며, 이로 인해 서버에 장애가 발생할 수도 있습니다. 대용량 데이터를 처리할 때, DB에 보내는 쿼리 수를 줄이는 것만으로도 속도 개선을 크게 시킬 수 있습니다. Django에서는 이를 위해 bulk_create 메서드를 제공합니다. 예를 들어, 아래의 코드는 1000번의 쿼리를 실행하여 1000개의 객체를 생성합니다: for i in range(1000): new_object = MyModel.objects.create..
2024.01.16 -
IPv4가 주소 고갈 문제를 해결한 여러가지 방법들
IPv4 주소 고갈 문제는 여러 가지 방법으로 해결하기 위해 노력되어 왔습니다. 그러나 이러한 노력들은 일시적인 해결책에 불과하며, 본질적인 문제에 대한 근본적인 해결책이 되지 못했습니다. 아래는 몇 가지 주요한 대응 방안들입니다. 1. NAT (Network Address Translation): NAT는 개별 디바이스에 고유한 사설 IP 주소를 할당하고, 이를 통합적인 공인 IP 주소로 변환해 외부와 통신하는 방식입니다. 이를 통해 특정 네트워크 내에서는 한정된 수의 공인 IP 주소를 사용하여 여러 디바이스가 인터넷에 접속할 수 있게 됩니다. 하지만 이는 주소 변환이라는 추가적인 복잡성을 가져오며, 특히 peer-to-peer 통신과 같은 일부 응용프로그램에서 문제를 일으킬 수 있습니다. 2. IPv..
2024.01.01 -
Python 3.12(23.10.02) 오류 메시지 개선
변경사항 1. 향상된 오류 메시지 1.1 >>> sys.version_info Traceback (most recent call last): File "", line 1, in NameError: name 'sys' is not defined. Did you forget to import 'sys'?- NameError이제 표준 라이브러리의 모듈은 a가 최상위 레벨로 올라갈 때 인터프리터가 표시하는 오류 메시지의 일부로 잠재적으로 제안됩니다 . 1.2 class A: def __init__(self): self.blech = 1 def foo(self): somethin = blech >>> A().foo() Traceback (most recent call last): Fi..
2023.12.30 -
Django DB Query 설명과 예시
django DB Query QuerySet from myapp.models import MyModel queryset = MyModel.objects.all() MyModel 모델에서 모든 레코드를 가져와서 QuerySet을 생성 필터링: filter() 메서드를 사용하여 특정 조건을 만족하는 레코드를 검색할 수 있습니다. Model.objects.filter(조건)filtered_queryset = MyModel.objects.filter(field_name=value) MyModel 모델에서 name 필드가 "John"인 레코드를 검색하려면 다음과 같이 사용할 수 있습니다 filtered_queryset = MyModel.objects.filter(name="John") 정렬 order_by() 메..
2023.12.30 -
Django PostgreSQL 대용량 데이터 분할 저장
데이터베이스 파티셔닝이란?데이터베이스 파티셔닝(Database Partitioning)은 하나의 큰 테이블을 동일한 노드 내에서 여러 개의 작은 테이블로 나누는 기법입니다. 이는 흔히 샤딩(Sharding)과 혼동되기도 하지만, 샤딩은 데이터를 서로 다른 여러 노드에 분산시키는 반면, PostgreSQL의 파티셔닝은 단일 노드 내에서 테이블을 분할하는 방식을 사용합니다.파티셔닝을 통해 쿼리 플래너가 보다 효율적으로 하위 집합을 탐색할 수 있도록 데이터를 구성할 수 있으며, 이는 데이터 조회, 삭제 및 삽입 속도를 크게 향상시키는 데 도움이 됩니다.데이터 접근 패턴을 기준으로 파티셔닝 전략을 선택하는 것이 중요합니다. 예를 들어 생성 날짜를 기준으로 데이터를 자주 조회하는 경우, 날짜를 기반으로 파티션을 ..
2023.12.30