Coding343 PostgreSQL Partitioning 적용하는 방법 PostgreSQL Version 10미만 1. 테이블 생성 먼저 아래와 같이 부모 테이블을 생성한다. CREATE TABLE users( id bigint, nickname varchar(20), gender char(1), )다음으로 부모 테이블을 상속받아서 자식 테이블을 생성한다. 본 예제에서는 gender를 따라 남성/여성을 구분할 것이므로 users_male과 users_female 두개의 테이블을 만들었다. CREATE TABLE users_male( CHECK (gender = 'M') ) INHERITS(users) CREATE TABLE users_female( CHECK (gender = 'F') ) INHERITS(users)여기서 CHECK 문법을 사용하.. 2019. 8. 7. Python Method Chaining SQLAlchemy, MongoEngine 또는 Django ORM 등의 쿼리를 보면 Chaining을 통해 쿼리를 쉽게 작성할 수 있다는걸 알 수 있다. 예를 들어 아래와 같은 형태이다. User.objects.filter(user_id=1).order_by('-user_id')위 쿼리는 user_id=1의 결과값을 역순으로 정렬하여 return해준다. 쿼리에서 알 수 있듯이 filter().order_by() 형태로 함수들을 Chaining해줬다. 만약 Chaining을 지원하지 않았다면 filter()를 한번해주고 그 결과값을 다시 order_by()를 해주는 형태로 나눠서 작성해야 했을 것이다. 이는 상당히 많은 경우에서 유용한데, 파이썬의 경우 정말 간단한 방법을 통해 Method.. 2019. 7. 17. MongoDB aggregate lookup으로 컬렉션 조인하는 방법 MongoDB는 NoSQL이므로 관계형 데이터베이스와 달리 조인이라는 기능이 없다. 하지만 쿼리를 질의하다보면 가끔씩 조인이 필요한 경우가 있다. 그럴 때 aggregate()라는 집계함수를 사용하면 다른 컬렉션을 조인시킬 수 있다. aggregate는 조인만을 위한 함수는 아니고 보다 복잡한 질의문을 구성할 때 사용하는것인데, 여기서 제공하는 기능 중 $lookup을 사용하면 타 컬렉션과 조인을 할 수 있다고 생각하면 될 것 같다. 먼저 예시를 위해 아래와 같은 도큐먼트가 존재한다고 가정한다. posts> db.posts.find() { "_id" : ObjectId("5d22de26fc60aab610f73e04"), "post_id" : 1, "user_id" : 1, "body" : "first",.. 2019. 7. 8. Mongo Atlas 데이터 마이그레이션 하는 방법 현재 회사에서 작업을 하며 관리형 데이터베이스로 Mongo Atlas를 사용하고 있다. 보통 테스트/라이브 용 클러스터를 따로 두고 작업을 하는데, 테스트 용 데이터베이스에 실제 라이브처럼 수많은 데이터가 들어있진 않다. 하지만 데이터베이스 쿼리를 날릴 때 부하가 얼마나 걸리는지, 성능을 실제 테스트해봐야 하는 경우가 존재하는데 그럴 경우 Atlas에서 자체적으로 제공하는 Migration기능을 이용하면 손쉽게 복제 클러스터를 생성할 수 있다. 먼저 Mongo Atlas 콘솔로 들어간다음 데이터를 복제시킬 클러스터를 하나 생성한다. 그다음 클러스터쪽에 점 3개 버튼을 클릭하면 위처럼 메뉴가 나오는데 Migrate Data to this Cluster를 선택한다. I'm ready to migrate 버튼.. 2019. 6. 26. ECS Blue/Green CodeDeploy 연동 배포 자동화 스크립트 이전에 AWS ECS를 사용할 때 Deployment Type을 Blue/Green Deployment로 지정하여 배포하는 방법에 대해 포스팅했었다. (https://hides.tistory.com/1013) 해당 포스팅을 통해 서비스를 생성하면 CodeDeploy의 애플리케이션쪽에 자동으로 연관된 애플리케이션과 배포 그룹이 생성된다. ECS콘솔에서 서비스를 선택하고 직접 업데이트 버튼을 눌러서 배포를 진행할수도 있지만 명령어를 한번 실행시키는 형태로 배포를 자동화시키고 싶었다. 그래서 awscli쪽을 알아보던 중 CodeDeploy관련 create-deployment를 이용하면 쉽게 가능할 것이라고 생각했다. 자세한 문서는 https://docs.aws.amazon.com/cli/latest/refer.. 2019. 6. 21. Python zip으로 병렬처리 시 리스트의 크기가 다른 경우 일반적으로 두개의 리스트를 병렬로 다루고 싶을 때 zip() 메소드를 이용한다. 나같은 경우 두개의 리스트를 하나하나 루프를 돌며 비교하는 검증 작업을 진행하고 있었다. 작업 도중 한가지 문제점을 발견했는데, 바로 사이즈가 다를 때였다. zip()을 사용하여 두개의 리스트를 순회하면 사이즈가 다른 경우 사이즈가 작은 리스트의 작업까지만 순회하고 루프를 종료한다. a = [1, 2, 3] b = [4, 5] for x, y in zip(a, b): print(f'x: {x} / y: {y}') 예를 들어 위와 같이 사이즈가 다른 두개의 리스트를 zip을 통해 순회하면 결과는 다음과 같다. x: 1 / y: 4x: 2 / y: 5 나는 마지막 값까지 순회하며 처리하고 싶었다. 그렇다면 무언가 특정 값으로 P.. 2019. 6. 14. 이전 1 ··· 12 13 14 15 16 17 18 ··· 58 다음