많은 통계 데이터 분석가와 데이터 과학자가 R 프로그래밍 언어 를 사용하여 데이터베이스 외부에서 수치를 분석합니다. 마찬가지로 데이터베이스 분석가들은 단일 소스를 유지하기 위해 가능한 한 동일한 데이터베이스에서 모든 작업을 수행하려고 노력합니다. Couchbase는 JSON 데이터 세트, 강력한 쿼리 언어, R과 같은 분석 도구 세트 간의 격차를 해소하기 위한 공통 기반을 제공합니다.
분산된 내결함성 및 유연한 스키마는 기업이 Couchbase를 선택하는 이유 중 일부에 불과합니다. 자세히 알아보려면 다음을 참조하세요. 기업이 NoSQL을 사용하는 이유 차세대 제품을 제공하기 위해 노력하고 있습니다.
그리고 카우치베이스 SDK 는 가장 인기 있는 프로그래밍 언어를 다룹니다: Java, .NET, Node.js, Go 등을 지원합니다. 하지만 REST API를 쉽게 사용할 수 있으므로 R을 위한 특정 드라이브를 제공할 필요가 없습니다.
이 글에서는 이전 블로그의 R 프로그래밍 튜토리얼을 다시 부활시켜 최신 Couchbase 버전에서 R이 어떻게 작동하는지 살펴봅니다. 예제에서는 JSON 데이터에 대해 표 형식의 N1QL/SQL 쿼리를 실행하는 방법과 일부 데이터의 결과 위치를 매핑하는 방법을 보여줍니다. 지리공간 데이터.
R이란 무엇인가요?
R은 SAS 및 SPSS와 같은 독점 제품과 유사한 오픈 소스 통계 컴퓨팅 및 그래픽 도구 세트에 대한 필요성을 충족합니다. 여기에는 특히 과학 문서에 게시할 수 있는 그래픽 플롯에 적합한 통계 분석 및 그래픽 시각화가 포함됩니다.
통계 분석에 있어 R이 Python보다 낫다고 할 수 있을까요? 이는 논쟁의 여지가 있지만, 많은 옹호자가 있습니다. 실제로 많은 개발자가 가장 많이 사용하는 분석 환경일 수 있습니다. 절대 사용. In 하나의 글로벌 R 프로그래밍 구인 프로젝트에 따르면 R 프로그래밍은 Python, SQL, Java, Amazon ML에 이어 5위를 차지했습니다. 통계 데이터 분석 툴셋의 경우 C/C++, Tableau, Hadoop, 심지어 SAS보다 약간 높았습니다.
이를 통해 생성된 에코시스템은 강력한 분석, 시계열 분석, 시각화 기능 등을 추가하는 수만 개의 패키지를 제공합니다. 솔루션 구축을 위한 여러 가지 IDE가 존재하며, 이 게시물에서는 다음과 같은 것을 사용합니다. R 스튜디오 (이 글을 쓰면서 처음으로 쉽게 사용했습니다).
카우치베이스 설정
기본 Couchbase 서버 설치에는 이 튜토리얼에 필요한 모든 것이 포함되어 있습니다. 단일 노드에 설치하는 것이 좋으며, 이상적으로는 R Studio와 함께 사용 중인 PC에 설치하는 것이 좋습니다. localhost. Couchbase 7.x 베타 버전을 사용하고 있습니다.
설치가 완료되면 새 버킷이 있는 여행 샘플 데이터 세트 를 클릭하고 해당 버킷에 액세스할 수 있는 새 사용자를 만듭니다.
R Studio 설정
다음, R 설치 를 클릭한 다음 R Studio 데스크톱 (무료 버전)을 모든 기본 옵션과 함께 설치합니다. 설치가 완료되면 R Studio를 시작하고 도구 -> 패키지 설치 를 클릭하고 이 네 가지를 설치합니다: HTTR, JSONLITE, GGPLOT2, 리플렛.
또는 R 코딩 콘솔에서 다음 코드를 실행할 수 있습니다:
1 |
설치.패키지(c("httr", "jsonlite", "ggplot2", "leaflet")) |
R Studio가 사라지고 여러 가지 기본 종속성을 설치합니다. 실행되는 동안 다음 단계를 계속 진행할 수 있습니다.
카우치베이스에서 N1QL 쿼리 테스트하기
R 프로그래밍 코드를 시작하기 전에 쿼리 탭을 사용하여 쿼리를 테스트해 보겠습니다. 카우치베이스 웹 콘솔.
1 2 3 4 5 6 7 8 9 |
선택 a.name, 카운트(*) as 총 항공편 FROM `여행-sample` r JOIN `여행-sample` a 켜기 키 r.airlineid 어디 r.유형 ="경로" AND a.유형="항공사" 그룹 BY a.name 주문 기준 총 항공편 DESC LIMIT 20 |
이전에 JSON 작업을 해본 적이 있다면 익숙한 구문을 사용하여 Couchbase의 문서에서 쿼리하는 것이 얼마나 간단한지 알 수 있습니다.
결과는 샘플 데이터베이스에 있는 상위 20개 항공사와 각 항공사의 항공편 수를 보여줍니다.
R 코딩 N1QL 쿼리
콘솔의 스크립트 상단에 있는 라이브러리 요구 사항을 설정하여 R 프로젝트를 설정합니다:
1 2 3 4 |
라이브러리(httr) 라이브러리(jsonlite) 라이브러리(ggplot2) 라이브러리(전단지) |
쿼리를 작성하고 데이터 응답을 처리하기 위해 몇 가지 변수를 생성합니다.
먼저 URL, 포트, 이전에 생성한 사용자 아이디와 비밀번호를 포함하여 Couchbase에 대한 연결 정보가 제공됩니다:
1 |
cbServer <- "http://localhost:8093/query/service" |
그런 다음 쿼리를 자체 변수로도 인코딩합니다. 필요한 이스케이프 큰따옴표(\")에 유의하세요.
1 |
쿼리 <- "SELECT a.name, count(*) as total_flights FROM `travel-sample` r JOIN `travel-sample` a ON KEYS r.airlineid WHERE r.type =\"route\" AND a.type=\"airline\" GROUP BY a.name ORDER BY total_flights DESC LIMIT 20" |
다음은 HTTP 요청을 설정하는 것입니다:
1 |
req <- httr::POST(cbServer, httr::add_headers("콘텐츠 유형" = "application/x-www-form-urlencoded;charset=UTF-8"), body = 붙여넣기("statement=", 쿼리), 인증("public","public")) |
그런 다음 요청에서 실제 응답을 수신하고 데이터를 저장할 변수에 할당합니다:
1 2 |
res <- fromJSON(httr::콘텐츠(req, "text")) 항공사항공편 <- res$결과 |
그거예요!
카우치베이스에서 쿼리 결과 시각화하기
이제 데이터 변수를 입력하면 쿼리 결과를 확인할 수 있습니다:
R-Studio는 ggplot 확장 및 몇 가지 설정을 통해 변수의 데이터를 빠르게 볼 수 있는 간단한 방법입니다:
1 |
ggplot(데이터=항공사항공편, aes(x=이름, y=총 항공편)) + 테마(축.텍스트.x=element_text(각도=90,hjust=1)) + geom_bar(stat="identity") |
이제 쿼리 또는 ggplot 코드를 조정하고 다른 접근 방식을 실험해 볼 수 있습니다.
R 코딩을 사용하여 카우치베이스에서 지리공간 데이터 매핑하기
다른 일부 패키지의 성능은 놀랍습니다. 다음 예제에서는 R 코딩을 사용하여 리플렛 웹 매핑 라이브러리.
반려동물 동반이 가능한 호텔을 나열하도록 쿼리를 변경해 보겠습니다. 호텔 데이터에는 지리적 위도 및 경도 개체("geo")가 포함되어 있으므로 쉽게 지도 의 결과를 표시합니다.
몇 가지 간단한 필터와 함께 이름, 위도, 경도를 포함하도록 쿼리를 조정하세요:
1 2 3 |
선택 이름, 지리적 위도 as 위도, 경도 as long FROM `여행-sample` 어디 유형="호텔" AND 도시="London" AND pets_ok=true |
Couchbase 웹 콘솔에서 테스트하면 37개의 결과를 얻을 수 있습니다. 그런 다음 이전과 마찬가지로 쿼리를 변수에 넣습니다:
1 2 3 |
쿼리 <- "SELECT name, geo.lat as lat, geo.lon as long FROM `travel-sample` WHERE type=\"hotel\" AND city=\"London\" AND pets_ok=true" req <- httr::POST(cbServer, httr::add_headers("콘텐츠 유형" = "application/x-www-form-urlencoded;charset=UTF-8"), body = 붙여넣기("statement=", 쿼리), 인증("public","public")) res <- fromJSON(httr::콘텐츠(req, "text")) 반려동물 친화호텔런던 <- res$결과 |
결과는 다음과 비슷하게 표시됩니다:
지도를 만들기 위해 리플렛 패키지를 사용하고 지도에서 마커 심볼을 찾는 데 사용할 필드를 식별하는 몇 가지 설정을 제공합니다.
1 |
전단지(데이터 = 반려동물 친화호텔런던) %>% 추가 타일() %>% 추가 마커(~long, ~위도, 팝업 = ~as.캐릭터(이름), 레이블 = ~as.캐릭터(이름)) %>% 추가 공급자 타일(공급자$오픈스트리트맵) |
R Studio는 코드 편집, 대화형 콘솔, 맵을 포함한 내장 뷰어 구성 요소(이전 차트에서 ggplot이 했던 것처럼)를 사용할 수 있는 풍부한 정보를 제공하는 훌륭한 IDE입니다.
물론 그에 따라 창 창을 확장할 수도 있습니다:
결론
강력한 타사 패키지 세트가 포함된 Couchbase와 R의 유연성은 훌륭한 조합입니다. 애플리케이션 개발자는 데이터를 중앙 데이터베이스에 남겨두고 장애 조치, 분산 처리, 전체 텍스트 검색 및 SQL 분석을 활용할 수 있습니다.
한편, 동일한 데이터베이스를 여러 개의 오프라인 복사본을 만들지 않고도 데이터에 액세스하기 위해 사용하기 쉬운 API가 필요한 분석가에게 서비스를 제공할 수 있습니다.
이 포괄적인 데이터 플랫폼 접근 방식은 아키텍처를 간소화하는 동시에 안정성과 확장성을 높여야 하는 모든 규모의 기업들에게 지속적으로 인기를 끌고 있습니다.
유용한 정보를 제공해 주셔서 감사합니다. 백분율 기호는 어떻게 보내나요(예: 다음과 같이)?
…
여기서 meta(d).id LIKE '%something%'
…
%를 포함하는 쿼리는 모두 문이 없다는 이유로 실패합니다. 와 이중 %%로 이스케이프해도 문제가 해결되지 않는 것 같습니다. 이것이 R의 문제이며 이를 해결할 방법이 없나요?
Content-Type="application/x-www-form-urlencoded"이므로 본문/쿼리는 URL 인코딩되어야 합니다.