본문 바로가기

All205

[MongoDB] Ch5 - Indexing (인덱싱) 💡 컬렉션에 적합한 인덱스를 선택하면 성능에 큰 영향을 미친다 인덱싱의 정의와 사용하는 이유 인덱싱할 필드를 선정하는 방법 인덱스 사용을 평가하고 적용하는 방법 인덱스 생성 및 제거에 대한 관리 정보 5.1 인덱싱 소개 데이터베이스 인덱스는 책의 인덱스와 유사하다 전체 내용을 살펴보는 대신 지름길을 택해, 특정 내용을 가리키는 정렬된 리스트를 확인한다 인덱스를 사용하지 않는 쿼리를 컬렉션 스캔이라고 한다 (책의 내용을 1p부터 끝까지 전체를 읽는 방식과 같다) 💡 큰 컬렉션을 스캔할 때는 컬렉션 스캔이 매우 느려지니 이런 방식은 피하자 1. 인덱스 생성 # username 필드에 인덱스를 생성 db.indextest.createIndex({"username":1}) # 확인 db.indextest.fin.. 2021. 12. 24.
[MongoDB] Ch4 - Query (쿼리) $ 조건절을 이용해 범위 쿼리, 셋의 포함 관계, 부등 관계 쿼리 등을 수행한다. 쿼리는 필요할 때마다 도큐먼트 배치을 반환하는 데이터베이스 커서를 반환한다. 커서를 이용해 결과를 몇 개 건너뛰거나, 반환하는 결과 수를 제한하거나, 결과를 정렬하는 등 다양한 메타 연산을 수행한다 4.1 find 소개 db.users.find({"key" : "value"}) 1. 반환받을 키 지정 다큐먼트 키/값 정보가 모두 필요없을 때는 아래처럼 작성한다 (네트워크상의 데이터 전송량과 클라이언트 측에서 도큐먼트를 디코딩하는 데 시간과 메모리를 줄여준다) # username, email 값만 가져오기 (_id 키는 지정하지 않아도 항상 반환) db.users.find({}. {"username" : 1, "email" .. 2021. 12. 23.
[Python] Heap(힙) - heapq 모듈 Heapq 파이썬에서는 heapq 모듈로 최소 힙을 지원합니다 import heapq 최소힙 array = [2,1,3,5,4] ## list to heap heapq.heapify(array) print(array) heapq.heappush(array, 6) print(array) heapq.heappush(array, 0) print(array) >> [1, 2, 3, 5, 4] >> [1, 2, 3, 5, 4, 6] >> [0, 2, 1, 5, 4, 6, 3] 최대힙 array = [2,1,3,5,4] #array = [-i for i in array] array = list(map(lambda x:-x, array)) heapq.heapify(array) array = list(map(lambd.. 2021. 12. 23.
[MongoDB] Ch3 - 도큐먼트 생성, 갱신, 삭제 💡 컬렉션에 새 도큐먼트 추가하기 컬렉션에 새 도큐먼트 삭제하기 기존 도큐먼트 갱신하기 연산을 수행할 때 안전성과 속도 중 맞는 수준 선택하기 1. 도큐먼트 삽입 db.movies.insertOne({"title" : "test"}) insertMany 여러 도큐먼트를 컬렉션에 삽입할 때 insertMany를 사용합니다 각 도큐먼트에 대해 데이터베이스로 왕복하지 않고 도큐먼트를 대량 삽입하므로 훨씬 효율적입니다 수십, 수백, 수천 개의 도큐먼트를 한 번에 전송하면 도큐먼트 삽입이 매우 빨라집니다 삽입 유효성 검사 몽고DB는 삽입된 데이터에 최소한의 검사를 수행합니다 "_id" 필드가 존재하지 않으면 새로 추가하고, 모든 도큐먼트는 16메가바이트보다 작아야 하므로 크기를 검사합니다 (톨스토이 소설 '전쟁과.. 2021. 12. 22.
[Python] all(), any() - (파이썬 내장함수) 파이썬 내장함수 all(), any() all() 모두 True여야 True 반환 all([False, True, False]) # False all([True, True, True]) # True any() 하나라도 True인게 있으면 True 💡 리스트나 튜플안에 max 값보다 큰 값을 알고싶을 때 쓰이면 좋음 any([False, False, False]) # False any([False, True, False]) # True Example) nums1 = [1,2,3,4,5,6,7] n = 3 all(n < i for i in nums1) # False any(n < i for i in nums1) # True nums2 = [2,2,2,2] n = 2 all(n == i for i in num.. 2021. 12. 22.
[Python] 정렬(sort) - sort(), sorted() sort() - 리스트형 메소드 (리스트 원본 값을 직접 수정) numbers = [10,5,3] numbers.sort() print(numbers) # [3, 5, 10] sorted() - 파이썬 내장 함수 (리스트 원본 값은 그대로, 정렬 값을 반환) numbers = [10,5,3] new_numbers = sorted(numbers) print(new_numbers, numbers) # [3, 5, 10] [10, 5, 3] 문자형 숫자 정렬 숫자 데이터들이 문자형으로 저장되어 있는 경우, 정렬의 기준이 '숫자의 크기'가 아닌 '숫자의 순서' numbers = ['1', '7', '11', '52', '100'] numbers.sort() print(numbers) #['1', '100', '.. 2021. 12. 22.
[Python] Reduce Reduce “반복 가능한 객체” 내 각 요소를 연산한 뒤 이전 연산 결과들과 누적해서 반환해 주는 함수이다 대표적으로 String, List, Dictionary, Set이 반복 가능한 객체이다 💡 Python3 부터는 reduce가 내장 함수가 아니기 때문에 functools 모듈에서 불러와야함 from functools import reduce from functools import reduce from collections import Counter # 1~20까지 정수의 합을 구하는 코드 target = list(range(1,21)) reduce(lambda x,y : x+y, target)) # (a+1)(b+1)(c+1) - 1 # = (a+b+c)+(ab+bc+ca)+abc target .. 2021. 12. 22.