나는 먼저 에 대해 대답 할 것이다. 내가 어떻게하고 있는지. : 나는 MongoDB를 사용하고있다. 나는 당신이 언급 한 아이디어를 가지고 놀았으나 똑같은 이유로 인 메모리 솔루션 (Memcached, Redis)을 빠르게 넘어 섰다. 나의 최종 솔루션은 MongoDB와 같은 관계형 DB 또는 noSQL 중 하나로 내려갔습니다. 솔직히 말해서, 내 프로젝트의 규모에서 DB 유형 간의 성능을 견고하게 비교하는 것에 대해서는 생각하지 않았습니다.
"로드맵"과 관련하여 Mongo의 정규화 된 구조 덕분에 사용자 클래스를 명시 적으로 정의 할 필요없이 사용자 "객체"를 다룰 때 Mongo와 더 가까워지기로 결정했습니다. . 나는 MySQL을 위해서도 마찬가지 일 수 있다는 것을 이해한다. json
데이터는 나를 위해 더 "객체와 같은"것이며, flask
즉, user = getUserFromMongo
인데, 이는 나에게 파이썬에서 dict을 준다. 그러면 나는 단지 user['first_name']
을 할 수있다.
MongoDB를 에
내 사용자 개체 데이터 (이 SQL이 레일에서 간단한 데이터베이스 상호 작용 명령을 작성할 필요 ... 좋아하지 느끼고 있었다 어떻게 든)
: 코드는 belows로이 간단하게 설명 할 것
마지막으로 사용자 입력을 관리하는 방법은 이고, 나는 context
이라는 Wit.ai의 개념을 채택했습니다. 나는 그들이 정확히 어떻게하는지 모르지만, 나에게 context
은 대화 목적의 유형입니다. 스택처럼 사용하고, 현재 컨텍스트가 완료 되 자마자 사용자의 컨텍스트 데이터에서 팝핑합니다. 봇이받는 모든 메시지에 대해 프로그램은 현재 컨텍스트를 가져 와서 흐름을 지시합니다. 사용자가 로봇이 이해할 수없는 것을 말하고 있기 때문에 알 수없는 오류 (예외 처리)가 발생할 때마다 데이터도 지 웁니다.
MongoDB에 대한 좋은 점은 제가 context
을 형성 할 수 있다는 것입니다. 그러나 나는 이것을 객체로 취급하고 싶습니다. 간단한 하나는 {name: yelp-search, stage:ask-for-user-location}
과 같으며 복잡한 구조도 그 구조에 구축 될 수 있다고 상상합니다. 물론, context
의 스택 구현은 복잡한 과거 참조와의 복잡한 대화를 처리하지 않습니다.
l put my project on Github 당신이 그것을보고 싶다면.
그 해결책은 내가 끝내게 된 해결책과 매우 비슷합니다. mongo 대신 mySQL을 사용했습니다 (단지 익숙하기 때문에 새 항목을 배우는 쪽을 추적하고 싶지 않기 때문에). MongoDB는 분명히 갈 길입니다. 나는 너무 지혜로운 AI를 사용했고 답변의 컨텍스트가 대답되지 않은 질문에 답하면 사용자에 대해 저장합니다. 답변 해 주셔서 감사합니다. 당신의 코드를 체크 아웃 할 것입니다 :) – Stretch0