노스케일의 패트릭 갤브레이스는 수년 동안 노스케일과 함께 MySQL, 그리고 이제 Drizzle, 멤캐시드용 UDF. 지난주 Patrick은 최신 릴리스인 1.1 버전에서 한 단계 더 나아가 '확인 및 설정'(일명 CAS) 작업을 지원하게 되었습니다.
사용자 정의 함수는 다양한 데이터베이스에 사용할 수 있습니다. 이를 통해 일종의 저장 프로시저 언어 또는 기타 트리거를 사용하여 DB로 가져온 다른 코드를 실행할 수 있습니다. 멤캐시드 UDF의 경우, 이는 저장 프로시저에 멤캐시드 연산을 호출할 수 있는 기능을 부여하는 것을 의미합니다.
여기서 일반적인 아이디어는 매우 간단합니다. 대부분의 애플리케이션은 데이터베이스로 시작하지만 웹 서비스나 플랫 파일을 사용할 수도 있습니다. 데이터가 유지되는 위치에 관계없이 캐시를 항상 최신 상태로 유지하려면 SoR(시스템 오브 레코드)에서 레코드를 업데이트할 때마다 무효화(즉, 삭제)를 캐시에 전파하는 매우 간단한 접근 방식이 있습니다. 단일 또는 샤딩된 데이터베이스는 앱 데이터를 관리하는 데 매우 널리 사용되므로 이 패턴에서 중요한 역할을 합니다. 아래 다이어그램에서 애플리케이션이 사용자 상호 작용을 기반으로 레코드를 업데이트해야 하는 경우(#1), 데이터베이스는 UDF를 활성화하고 그 방법을 알려주면 캐시에서 해당 데이터를 무효화할 수 있습니다(#2).

여러 작업이 애플리케이션에서 트랜잭션으로 적용되지 않을 수 있으므로 모든 경우에 적용되는 것은 아니지만, 설정이 간단하고 많은 앱에서 작동합니다.
Patrick의 우수한 MySQL 및 Drizzle용 UDF 외에도 다음과 같은 기능이 있습니다. PostgreSQL용 pgmemcache의 프로토타입과 아파치 더비용 UDF (일명 JavaDB).
아, 그리고 Patrick이 MySQL/Drizzle UDF에 추가한 새로운 CAS 기능에 대해서도 말씀드리겠습니다. 대부분의 멤캐시드 사용자는 작은 작업인 get과 set부터 시작합니다. 그런 다음 add와 같은 연산에 대한 유용성을 찾습니다. 그리고 얼마 지나지 않아 항목을 업데이트하려는 분산 클라이언트를 처리하는 방법을 고민하게 됩니다. 높은 수준에서 보면 "확인 및 설정"(일명 CAS) 연산이 바로 여기에 해당합니다. 원본을 살펴보세요. protocol.txt (또는 바이너리 프로토콜 문서)를 참조하여 사용 방법을 알아보세요. 특히 CAS를 추가하면 분산 시스템에서 여러 시스템이 항목을 업데이트할 때 자주 필요한 잠금 없는 알고리즘을 구현할 수 있습니다.
다음 목록에 참여하세요. memcached.org 에서 자세한 정보를 확인하세요.