๋ชฉ๋ก์คํฐ๋ (23)
Study Anything ๐ง
์คํํฌ๋ ๋ฐ์ดํฐ ๊ณผํ์์ ์์ฃผ ๋ณผ ์ ์๋ ๋ฐ๋ณต ์ฐ์ฐ์ ์ ํฉํ ๊ฐ๋ ๊ณผ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ธ-๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์ง์ผ๋ก ๋น ๋ฅธ ์๋๊ฐ ํน์ง์ด๋ค. ๋ค์ํ ์ธ์ด์ ๋ฐ์ดํฐ ํฌ๋งท์ ์ง์ํ๊ณ ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ํํ ์ ์์ด์ ๋น ๋ฐ์ดํฐ ํ์ผ ์์คํ ์ผ๋ก ๋ง์ด ์ฐ์ด๋ ํ๋ก๊ณผ ๊ฐ์ด ์ฐ์ด๊ธฐ๋ ํ๋ค. ๊ธฐ๋ณธ์ ์ธ ๋ถ์ฐ ์ฒ๋ฆฌ ๊ธฐ๋ฅ ๋ฟ ์๋๋ผ ์คํํฌ SQL, MLlib, ์คํธ๋ฆฌ๋ฐ ๋ฑ ์ฌ๋ฌ ๊ตฌ์ฑ ์์๊ฐ ์๋ค. ๊ธฐ๋ณธ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก๋ ๊ฐ์ฒด์ ๋ถ์ฐ ์ํ์ค์ธ RDD(Resilient Distributed Dataset)๋ฅผ ์ฌ์ฉํ๋ฉฐ RDD๋ ๋ค์ํ ๊ด๊ณ ๋์ ์ฐ์ฐ์(SELECT, JOIN ๋ฑ)์ ์ค์นผ๋ผ, ํ์ด์ฌ ๋ณํ ๋ก์ง์ ํผ์ฐ์ฐ์๋ก ์ ์ฉ๋ ์ ์๋ค. RDD๋ ๋ํ RAM์ ์ ์ฅ๋๋ฉฐ ์๋์ผ๋ก ๊ฒฐํจ์ ๊ทน๋ณตํ๋ ๋ฉ์ปค๋์ฆ์ ์ง์ํ๋ค. ๋ง์ฝ..
๋ฐ์ดํฐ ๊ณผํ, ๋ฐ์ดํฐ ๋ถ์์ ๊ด์ฌ์ด ์๋ค๋ฉด ํ ๋ฒ์ฏค ์ ํ๊ฒ ๋๋ ์ด๋ฆ์ด ๋ฐ๋ก 'ํ๋ก(Hadoop)'์ด๋ค. ํ๋ก์ ์๋ฐ ๊ธฐ๋ฐ์ ๋ถ์ฐ ์ปดํจํ ํ๋ซํผ์ผ๋ก, ํต์ฌ ํ์ผ ์์คํ ์ธ HDFS(Hadoop Distributed File System) ๋๋ถ์ ๋์ฉ๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๋ค๋ฃฐ ์ ์๋ค. ์ด๋ป๊ฒ ์ด๋ฐ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ ๊น? ํ๋ก์ ๊ตฌ๊ธ์ GFS(Google File System)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ค๊ณ๋์๋๋ฐ, ์ผ๋ฐ์ ์ธ ํ์ผ ์์คํ ์ ๊ฐ์ง ์ฌ๋ฌ ๋ฐ์ดํฐ๋ ธ๋๋ฅผ ๋ฌถ์ด์ ํ๋์ ๋ถ์ฐ ํ์ผ ์์คํ ์ ๊ตฌ์ถํ๋๋ก ํ์๋ค. ๋ฐ๋ผ์ ํ์ผ ์์คํ ์ ์ฝ๊ฒ ํ์ฅํ ์ ์๊ฒ ๋์๊ณ ๋์ฉ๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ ์ ์๊ฒ ๋์๋ค. ์ด๋ฐ HDFS์ ์ค๊ณ์๋ ์ธ ๊ฐ์ง์ ๊ฐ์ ์ด ๋ฐ์๋์๋๋ฐ ์ฒซ ๋ฒ์งธ, ๋ฐ์ดํฐ์ ํ ์ค์บ๋์ ์ง์ํ๊ธฐ ์ํด์ ํ์ผ ์..
ํ๋ก์ ํธ๋ฅผ ์ฌ๋ฌ ๋ช ์ด ํจ๊ป ์งํํ๋ค๋ณด๋ ๊ฐ ํ์์ด ์๋ก ๋ค๋ฅธ ์ฑ์ ๊ตฌํํ๊ฒ ๋๋๋ฐ, ์ด ๋ ๋ค๋ฅธ ์ฑ์ ๋ชจ๋ธ ํ๋๋ฅผ ์ธ๋ํค๋ก ์ฌ์ฉํ๊ฑฐ๋ ๋ชจ๋ธ ์์ฒด๋ฅผ ๋ด ์ฑ์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ์ฌ์ฉํ๋ฉด ๋๋์ง์ ๋ํ ๋ด์ฉ์ ๋ค๋ค๋ณด๋ ค๊ณ ํ๋ค. ํธ์์ ๋ด ์ฑ์ ์ด๋ฆ์ 'myapp', ๋ค๋ฅธ ํ์์ ์ฑ ์ด๋ฆ์ 'yourapp'์ผ๋ก ์์ ํ๋๋ก ํ๊ฒ ๋ค. ๋ชจ๋ธ๋ค์ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ๋ค. # myapp/models.py class Review(models.Model): ... userId = models.ForeignKey(User, on_delete=models.CASCADE) ... # yourapp/models.py class User(models.Model): ... Review ๋ชจ๋ธ์์๋ User ๋ชจ๋ธ์ ์ธ๋ํค๋ก ์ฌ์ฉํ์ง๋ง ..
ํ๋ก์ ํธ๋ฅผ ์งํํ๋ค๊ฐ ์ด๊ธฐ์ ์์ฑํ๋ ๋ชจ๋ธ ๋ด์ฉ์ ์์ ํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ์ญ์ ํด์ผ ํ ์ด์๊ฐ ๋ฐ์ํด์ ๊ด๋ จ ๋ด์ฉ์ ์ํํ๊ณ ๊ธ๋ก ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค. (1) ๋ชจ๋ธ ์์ ํ๊ธฐ ๊ธฐ์กด์ ์์ฑํ๋ ๋ชจ๋ธ์ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ๋ค. # app/models.py class Review(models.Model): reviewId = models.IntegerField(primary_key=True)# ์ญ์ ํ ๋ด์ฉ userId = models.ForeignKey(User, on_delete=models.CASCADE) bookId = models.CharField(max_length=30) reviewTxt = models.TextField() ์ด ๋ด์ฉ์์ ์ํ ์ ๋ชฉ, ์ํ ํ์ , ์ํ ์์ฑ๋ ์ง ํ๋๋ฅผ ์ถ๊ฐํ๊ณ PK์ธ rev..
์ฐธ๊ณ : https://wikidocs.net/75004 Pandas(์ดํ ํ๋ค์ค)๋ ํ์ด์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ๋ฐ์ดํฐ ์กฐ์ ๋ฐ ๋ถ์์ ์ฉ์ดํ๋ฉฐ ์ฌ์ฉํ๊ธฐ ์ฌ์ด ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํ๋ค. ๋ฐ์ดํฐํ๋ ์, ์๋ฆฌ์ฆ, ์ธ๋ฑ์ค ๋ฑ์ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํ๋ฉฐ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ก, SQL๊ณผ ๊ฐ์ ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฝ๊ฒ ์ ๊ทผํ ์ ์๋ค. ๋จ๋ ์ฌ์ฉ๋ณด๋ค๋ NumPy, scikit-leran, matplotlib ๊ณผ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. (1) ํ๋ค์ค์ ์๋ฃ๊ตฌ์กฐ ํ๋ค์ค๊ฐ ์ ๊ณตํ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ์๋ฆฌ์ฆ๋ ๋ฐฐ์ด ํ์, ๋ฐ์ดํฐํ๋ ์์ ํ ํ์์ ๊ตฌ์กฐ์ด๋ฉฐ ์๋ฆฌ์ฆ๊ฐ ๋ชจ์ฌ ๋ฐ์ดํฐํ๋ ์์ ๊ตฌ์ฑํ๋ค. ์๋ฆฌ์ฆ : ๊ฐ(values) + ์ธ๋ฑ์ค(index) ๋ฐ์ดํฐํ๋ ์ : ์นผ๋ผ(columns) + ์ธ๋ฑ์ค..
์ฐธ๊ณ : https://www.django-rest-framework.org/api-guide/serializers/ ์ฅ๊ณ ๋ ์คํธ ํ๋ ์์ํฌ(Django REST Framework)๋ฅผ ์ด์ฉํด REST API ํ๊ฒฝ์ ๊ตฌ์ถํ๋ค๋ณด๋ฉด Serializer๋ฅผ ๊ฑฐ์ ํ์์ ์ผ๋ก ์ฌ์ฉํ๊ฒ ๋๋ค. ํ์ง๋ง Serializer๊ฐ ์ด๋ค ๊ฐ๋ ์ธ์ง ์ ์๋ฟ์ง ์์์ Serializer์ ๋ํด ๊ณต๋ถํ๊ณ ์๊ฒ ๋ ๊ฒ๋ค์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค. (1) Serializer๋? ์ฟผ๋ฆฌ์ ์ด๋ ๋ชจ๋ธ ์ธ์คํด์ค ๊ฐ์ ๋ณต์กํ ๋ฐ์ดํฐ๋ค์ ๋ค์ดํฐ๋ธ ํ์ด์ฌ ๋ฐ์ดํฐ ํ์ ์ผ๋ก ๋ณํํ์ฌ json, xml ๋ฑ์ ์ปจํ ์ธ ํ์ ์ผ๋ก ์ฝ๊ฒ ๋ ๋๋งํ ์ ์๊ฒ ํ๋ค. ๋ฐ์ดํฐ๋ฅผ ์ง๋ ฌํํ๋ Serializer๋ ์ญ์ง๋ ฌํ ๊ธฐ๋ฅ ๋ํ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ๋ค์ด์ค๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ฆํ ํ์ ๋ถ..
์ฅ๊ณ ์ ๋ฆฌ์กํธ๋ฅผ ์ฐ๊ฒฐํ๋ ์ฌ๋ฌ ๋ฐฉ๋ฒ ์ค DRF(Django REST Framework)๋ฅผ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ด ์๋ค. REST API ๋ฅผ ํตํ๋ฉด ๋ฐ์ดํฐ์ CRUD(Create, Read, Update, Delete)๋ฅผ ์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์๋๋ฐ, ์ด๋ฒ ํฌ์คํธ์์๋ ํนํ ๋ฐ์ดํฐ์ Create, ๋ฆฌ์กํธ์์ ์์ฑํ ๊ธ์ ์ฅ๊ณ ๋ชจ๋ธ์ ๋ฑ๋กํ๋ ๊ณผ์ ์ ๋ค๋ค๋ณด๋ ค๊ณ ํ๋ค. (๋ฆฌ์กํธ์ ์ฅ๊ณ ์ ์ค์น๋ ์๋ตํ๋๋ก ํ๊ฒ ๋ค.) ์ฅ๊ณ REST API ๋ฅผ ๊ตฌ์ถํ๋ ๊ณผ์ ์ ์ด์ ํฌ์คํธ์์ ๋ค๋ฃจ์๋ค. ์ฅ๊ณ ๋ชจ๋ธ์ json ๊ฐ์ฒด๋ก ์ถ์ถํ๊ธฐ (DRF) ์ฅ๊ณ ๋ก ํ๋ก์ ํธ๋ฅผ ์งํํ๋ค ๋ณด๋ฉด ํ๋ก ํธ์ ์ฐ๋ํ๊ฒ ๋ ๋๊ฐ ์๋ค. ์ด ๋ฐฉ๋ฒ๋ค์ ์ด์ ํฌ์คํธ(link)์์ ์์ธํ ์ค๋ช ํ๊ณ , ์ด ํฌ์คํธ์์๋ ๊ทธ ์ค ์ฅ๊ณ ์์ ๋ง๋ ๋ชจ๋ธ์ json ๊ฐ์ฒด๋ก ์ถ์ถํด์ ์ ..
์ฅ๊ณ ๋ก ํ๋ก์ ํธ๋ฅผ ์งํํ๋ค ๋ณด๋ฉด ํ๋ก ํธ์ ์ฐ๋ํ๊ฒ ๋ ๋๊ฐ ์๋ค. ์ด ๋ฐฉ๋ฒ๋ค์ ์ด์ ํฌ์คํธ(link)์์ ์์ธํ ์ค๋ช ํ๊ณ , ์ด ํฌ์คํธ์์๋ ๊ทธ ์ค ์ฅ๊ณ ์์ ๋ง๋ ๋ชจ๋ธ์ json ๊ฐ์ฒด๋ก ์ถ์ถํด์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๋๋ก ํ๊ฒ ๋ค. Django REST Framework(DRF)๋ ์น์์ REST API ์๋ฒ๋ฅผ ๊ตฌ์ถํ ์ ์๋๋ก ๋์์ฃผ๋ ์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ๋ค์ํ ๊ธฐ๊ธฐ์ ํ๋ซํผ์ด ๋ง๋ค์ด์ง๋ฉด์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋ ๊ธฐ์กด์ ๋ฐฉ๋ฒ์ ํ๊ณ๊ฐ ์๊ฒผ๊ณ , ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฑ์ฅํ ๋๊ตฌ๊ฐ REST API์ด๋ค. (1) ์ค๋นํ๊ธฐ ๋จผ์ , DRF ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ํฐ๋ฏธ๋์์ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด DRF๋ฅผ ์ค์นํ๋ค. pip install djangorestframework ๋ค์์ผ๋ก ๋ฆฌ์กํธ์์ ์ฅ๊ณ ๊ฐ ๋ง๋๋ api์ ์ ๊ทผํ ์ ..
์ฐธ๊ณ : https://wikidocs.net/70650 ์ด์ ๊ธ์์ ๋ชจ๋ธ์ ๋ง๋ค๊ณ migrate ํด์ ์ฑ์ ์ ์ฉํ๋ ๋ฐฉ๋ฒ๊น์ง ๋ฐฐ์ ๋ค. ์ด๊ฒ์ ๋ด ํ๋ก์ ํธ์ ์ ์ฉํด์ ๋ชจ๋ธ์ ๋ง๋ค๊ณ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ํ์ด์ง๋ฅผ ๋ง๋ค์ด๋ณด๋๋ก ํ๊ฒ ๋ค. (1) ๋ชจ๋ธ ๋ง๋ค๊ธฐ (models.py ํ์ผ ์์ฑ) ๋ชจ๋ธ > User ํ ์ด๋ธ ์์ฑ๋ช ๋ฐ์ดํฐํ์ userId (PK) int userEmail varchar(30) userPw varchar(20) userName varchar(20) ๋ชจ๋ธ > Review ํ ์ด๋ธ ์์ฑ๋ช ๋ฐ์ดํฐํ์ reviewId (PK) int userId (FK) int bookId varchar(30) reviewTxt text ๋ค์์ ์์ฑ์ ๊ฐ์ง ์ ์ ํ ์ด๋ธ๊ณผ ์ํ ํ ์ด๋ธ์ ์์ฑํ๋ค. class User(mo..
์ฐธ๊ณ : https://wikidocs.net/73306 (1) ์ฑ ์ฅ๊ณ ์์๋ ๊ธฐ๋ฅ์ ์ํํ๊ธฐ ์ํด '์ฑ'์ด๋ผ๋ ํ์์ ์ฌ์ฉํ๋ค. ํ๋ก์ ํธ์ ์ฑ์ ๋ง๋๋ ๋ช ๋ น์ด๋ ๋ค์๊ณผ ๊ฐ๋ค. (mysite) C:\(์๋ต)\DjangoProj\mysite>django-admin startapp myapp#์ฑ ์ด๋ฆ: myapp ์ฑ์ด ์์ฑ๋์์ผ๋ ํ์ํ ๋ด์ฉ๊ณผ ๊ตฌํํ ๊ธฐ๋ฅ์ IDE์์ ์์ฑํ๊ณ ๊ฐ๋ฐ์๋ฒ๋ฅผ ๊ตฌ๋ํ ๋ค์ ์ฃผ์ ๋ค์ '/myapp' ๋ฅผ ๋ถ์ด๋ฉด ํด๋น ๊ธฐ๋ฅ์ด ๊ตฌํ๋ ์น ํ์ด์ง๊ฐ ๋์์ง๋ค. ํด๋น ํ์ด์ง๊ฐ ์ ๋๋ก ์๋ํ๋ ค๋ฉด 'ํ๋ก์ ํธ/config/urls.py' ์ url ๋งคํ์ ์ถ๊ฐํด์ผ ํ๋ค. (...) urlpatterns = [ (...) path('myapp', ํจ์๋ช ) (...) ] (...) ๋ค์๊ณผ ๊ฐ์ด ๋งคํ์..