Glossary Cơ bản
Tra nhanh các thuật ngữ dùng trong bài viết. Mỗi mục giải thích phạm vi sử dụng và dẫn tới bài có ví dụ chi tiết.
Nhảy tới: A · B · C · D · E · F · G · H · I · J · K · L · M · O · P · Q · R · S · T · V · W
ACCESS EXCLUSIVE
Phần tiêu đề “ACCESS EXCLUSIVE”Table lock mạnh nhất của PostgreSQL, xung đột với mọi mode kể cả SELECT thường. Phần lớn ALTER TABLE, DROP TABLE, TRUNCATE, VACUUM FULL lấy mode này. Xem Table-level locks.
Adapter
Phần tiêu đề “Adapter”Lớp bọc một SDK hoặc API bên ngoài sau một interface do hệ thống của mình định nghĩa (port), để phần còn lại của code không phụ thuộc vào chi tiết nhà cung cấp. Xem Adapter pattern.
ADR (Architecture Decision Record)
Phần tiêu đề “ADR (Architecture Decision Record)”Văn bản ngắn ghi lại một quyết định kiến trúc: bối cảnh, quyết định, trạng thái và hệ quả (cả tốt lẫn xấu). ADR không sửa sau khi được chấp nhận; quyết định mới thì viết ADR mới thay thế. Xem ADR và tài liệu kỹ thuật.
Advisory lock
Phần tiêu đề “Advisory lock”Lock do ứng dụng quy ước ý nghĩa: PostgreSQL chỉ cấp và xếp chờ trên một số 64-bit (hoặc hai số 32-bit), không gắn với bảng hay row. Có loại session-level và transaction-level. Xem Advisory lock.
Anti-corruption layer (ACL)
Phần tiêu đề “Anti-corruption layer (ACL)”Lớp dịch ở phía downstream, chuyển mô hình của hệ thống ngoài sang mô hình của mình để khái niệm ngoại lai không rò vào bên trong. Khác với Published Language là phía upstream công bố. Xem Bounded context.
Arbiter index
Phần tiêu đề “Arbiter index”Unique index hoặc constraint NOT DEFERRABLE mà INSERT ... ON CONFLICT dùng để phát hiện conflict, chọn qua conflict target. Xem Upsert với ON CONFLICT.
ArgumentsHost
Phần tiêu đề “ArgumentsHost”Object bọc đối số của handler trong NestJS, dùng trong exception filter. Gọi switchToHttp(), switchToRpc() hoặc switchToWs() để lấy request/response hay data theo từng loại transport. Xem Exception filter.
AsyncLocalStorage
Phần tiêu đề “AsyncLocalStorage”API của Node.js gắn một store với async chain đang chạy để code sâu bên dưới đọc được context như requestId mà không cần truyền qua mọi hàm. Store chỉ tồn tại trong process local; qua HTTP hoặc message broker phải truyền metadata riêng. Xem AsyncLocalStorage trong Node.js.
Authorize / capture
Phần tiêu đề “Authorize / capture”Hai bước của thanh toán thẻ: authorize giữ số tiền trên thẻ; capture mới thật sự lấy tiền. Xem Payment system.
Autovacuum
Phần tiêu đề “Autovacuum”Tiến trình nền của PostgreSQL tự chạy VACUUM và ANALYZE trên từng bảng khi số dòng chết hoặc dòng thay đổi vượt ngưỡng (threshold cộng scale factor nhân số dòng). Xem VACUUM, autovacuum và bloat.
Backward / forward compatibility
Phần tiêu đề “Backward / forward compatibility”Backward: reader mới đọc được data ghi bằng schema cũ (deploy consumer trước). Forward: reader cũ đọc được data ghi bằng schema mới (deploy producer trước). Xem Event schema evolution.
BFF (Backend for Frontend)
Phần tiêu đề “BFF (Backend for Frontend)”Thành phần phía server đóng vai OAuth client cho SPA, giữ token và chỉ đưa cho browser một session cookie. Xem OAuth 2.0, OIDC và PKCE.
Blue-green deployment
Phần tiêu đề “Blue-green deployment”Chạy song song bản cũ (blue) và mới (green) đủ kích thước, chuyển toàn bộ traffic một lần, giữ blue để lật lại tức thì. Xem Chiến lược deploy.
B-tree
Phần tiêu đề “B-tree”Cấu trúc index dạng cây cân bằng nhiều nhánh, sắp key để hỗ trợ tìm bằng equality, range và một số thứ tự ORDER BY. Trong PostgreSQL, đây là loại index mặc định. Xem B-tree index trong PostgreSQL.
Backpressure
Phần tiêu đề “Backpressure”Cơ chế để bên sản xuất chậm lại khi bên nhận không theo kịp. Với Node stream, write() trả false nghĩa là buffer đầy và cần chờ sự kiện drain. Xem Stream và backpressure.
Big key
Phần tiêu đề “Big key”Key có value rất lớn: collection nhiều phần tử hoặc chuỗi dài. Lệnh O(N), xoá và di chuyển key này chặn hoặc làm chậm Redis. Tìm bằng redis-cli --bigkeys. Xem Redis data structures.
Blameless postmortem
Phần tiêu đề “Blameless postmortem”Bản phân tích sau sự cố tập trung vào hệ thống và quy trình đã cho phép lỗi xảy ra, không quy lỗi cho cá nhân, để mọi người dám kể đúng chuyện đã diễn ra. Kết thúc bằng action item có người chịu trách nhiệm và hạn. Xem Sự cố và postmortem.
Bloat
Phần tiêu đề “Bloat”Dung lượng bảng hoặc index bị chiếm bởi tuple chết hoặc chỗ trống chưa được dùng lại, khiến file lớn hơn lượng dữ liệu thật. VACUUM thường chỉ đánh dấu chỗ trống để tái sử dụng chứ không thu nhỏ file. Xem VACUUM, autovacuum và bloat.
Bloom filter
Phần tiêu đề “Bloom filter”Cấu trúc xác suất kiểm tra phần tử có thuộc tập hay không: trả “không” là chắc chắn không có, trả “có” thì có thể sai dương. Không xoá được phần tử. Xem Cache penetration & avalanche.
Bounded context
Phần tiêu đề “Bounded context”Ranh giới trong đó một mô hình và một ngôn ngữ chung có nghĩa nhất quán; cùng một từ có thể mang nghĩa khác ở context khác. Không đồng nghĩa với một microservice. Xem Bounded context.
BRIN (Block Range Index)
Phần tiêu đề “BRIN (Block Range Index)”Loại index PostgreSQL lưu tóm tắt min/max cho mỗi nhóm page vật lý liền nhau, thay vì một entry cho mỗi dòng. Rất nhỏ, nhưng chỉ hiệu quả khi giá trị cột tương quan với thứ tự lưu vật lý (ví dụ log ghi tuần tự theo thời gian). Xem GIN, GiST và BRIN.
Bulkhead
Phần tiêu đề “Bulkhead”Giới hạn số call đồng thời tới từng dependency bằng semaphore hoặc pool riêng có hàng đợi giới hạn, để một dependency chậm không chiếm hết worker hay connection pool chung. Xem Circuit breaker & bulkhead.
Burn rate
Phần tiêu đề “Burn rate”Tốc độ tiêu error budget so với mức tiêu trung bình cho phép, tính bằng error_ratio / (1 - SLO). Burn rate 1 nghĩa là hết budget đúng cuối cửa sổ. Xem SLI, SLO và error budget.
BYPASSRLS
Phần tiêu đề “BYPASSRLS”Thuộc tính role khiến role đó bỏ qua mọi policy RLS, kể cả khi bảng có FORCE ROW LEVEL SECURITY; superuser luôn có hành vi này.
Cache avalanche
Phần tiêu đề “Cache avalanche”Rất nhiều key cache hết hạn cùng lúc, hoặc cache mất toàn bộ dữ liệu, khiến tải dồn xuống database trong thời gian ngắn. Chữa bằng TTL jitter, warm rải đều, HA. Xem Cache penetration & avalanche.
Cache busting (fingerprinted assets)
Phần tiêu đề “Cache busting (fingerprinted assets)”Gắn hash nội dung vào tên file để mỗi thay đổi có URL mới; asset có thể cache một năm với immutable. Xem HTTP caching.
Cache hit / cache miss
Phần tiêu đề “Cache hit / cache miss”Cache hit: request tìm thấy dữ liệu cần trong cache. Cache miss: dữ liệu không có trong cache (chưa từng lưu, đã hết hạn, hoặc đã bị xoá), buộc phải lấy từ nguồn gốc.
Cache penetration
Phần tiêu đề “Cache penetration”Request cho key không có trong nguồn dữ liệu chính nên cache không bao giờ hit, mọi request đều xuống database. Chữa bằng validate, cache giá trị rỗng, bloom filter, rate limit. Xem Cache penetration & avalanche.
Cache stampede
Phần tiêu đề “Cache stampede”Tình huống nhiều request cùng gặp cache miss trên cùng một key trong cùng một khoảnh khắc, khiến tất cả cùng đổ vào database dù chỉ cần tính toán một lần. Còn gọi là thundering herd. Xem Cache stampede.
Cache-aside
Phần tiêu đề “Cache-aside”Pattern caching trong đó ứng dụng — không phải cache — chịu trách nhiệm đồng bộ giữa cache và database: đọc cache trước, nếu miss thì đọc database rồi ghi lại cache. Xem Cache-aside pattern.
Canary release
Phần tiêu đề “Canary release”Phát hành version mới cho một phần nhỏ traffic hoặc Pod trước, so metric với bản stable rồi mới mở rộng. Xem Chiến lược deploy.
Cardinality (metric)
Phần tiêu đề “Cardinality (metric)”Số tổ hợp label value khác nhau của một metric; mỗi tổ hợp được Prometheus lưu thành một time series. Label có giá trị không giới hạn như user ID có thể làm số series tăng mạnh. Xem Metric cardinality cao.
Cascading failure
Phần tiêu đề “Cascading failure”Lỗi của một thành phần lan sang thành phần khác qua tài nguyên dùng chung hoặc retry. Ví dụ: provider chậm chiếm hết worker của API khiến cả /health cũng lỗi. Xem Circuit breaker & bulkhead.
Checkpoint
Phần tiêu đề “Checkpoint”Thời điểm PostgreSQL ghi mọi page bẩn xuống đĩa; WAL trước đó không còn cần cho crash recovery. Lần sửa đầu tiên của mỗi page sau checkpoint ghi full-page image vào WAL. Xem UUID hay bigint làm khoá.
Circuit breaker
Phần tiêu đề “Circuit breaker”Bọc lời gọi tới một dependency, đo tỉ lệ lỗi và call chậm trong cửa sổ trượt. Vượt ngưỡng thì ngừng gọi và fail fast một khoảng thời gian, rồi cho vài call thử (half-open). Xem Circuit breaker & bulkhead.
CLS (Continuation-Local Storage)
Phần tiêu đề “CLS (Continuation-Local Storage)”Context đi theo một async chain. Trong Node.js được xây trên AsyncLocalStorage; thư viện nestjs-cls dùng nó để truyền transaction hay request id xuyên service mà không thêm tham số. Xem Transaction xuyên service.
Compensating transaction
Phần tiêu đề “Compensating transaction”Transaction nghiệp vụ mới hoàn tác về mặt ý nghĩa một bước đã commit của saga (hoàn tiền, nhả giữ chỗ). Khác rollback, nó không khôi phục trạng thái cũ: đã hoàn tiền không giống chưa từng trừ tiền. Xem Saga.
Conditional request / 304 Not Modified
Phần tiêu đề “Conditional request / 304 Not Modified”Request có If-None-Match hoặc If-Modified-Since; nếu bản đã lưu vẫn còn đúng, server trả 304 không body và cache dùng lại bản của mình.
Connection pool
Phần tiêu đề “Connection pool”Tập connection database được mở sẵn và cho request mượn. Pool cạn thì request mới phải chờ connection rảnh. Ở PgBouncer transaction mode, connection server chỉ thuộc về client trong một transaction, nên trạng thái session có thể dính sang client khác. Xem Timeout và quan sát lock.
Consumer-driven contract test
Phần tiêu đề “Consumer-driven contract test”Consumer mô tả dữ liệu nó cần và provider chạy các test đó trong CI của mình, ví dụ Pact message pact.
Consumer group
Phần tiêu đề “Consumer group”Một nhóm consumer trong Kafka cùng chia sẻ việc đọc một hoặc nhiều topic, định danh bằng một groupId chung. Mỗi partition chỉ được đọc bởi đúng một consumer trong group tại một thời điểm. Xem Kafka consumer group và rebalance.
Consumer lag
Phần tiêu đề “Consumer lag”Khoảng cách giữa log-end offset và committed offset của một consumer group, tính theo từng partition. Nên đo thêm theo thời gian (tuổi của record cũ nhất chưa xử lý), vì số offset có thể nhỏ mà record đã chờ rất lâu. Xem Consumer lag trong Kafka.
Coordinated omission
Phần tiêu đề “Coordinated omission”Bộ sinh tải chờ response nên gửi ít request hơn khi server chậm; latency đo được vì thế che mất hàng đợi thật. Tránh bằng open model (arrival rate). Xem Load testing với k6.
Copy-on-write (CoW)
Phần tiêu đề “Copy-on-write (CoW)”Sau fork(), process cha và con dùng chung trang nhớ; trang chỉ được chép khi một bên sửa. Redis dựa vào cơ chế này để snapshot, nên RAM tăng theo lượng ghi trong lúc save. Xem Persistence: RDB và AOF.
Correlation ID / traceparent
Phần tiêu đề “Correlation ID / traceparent”Mã gắn với một yêu cầu và được truyền qua mọi service để nối log và trace lại. Chuẩn W3C Trace Context dùng header traceparent dạng 00-<trace-id>-<parent-id>-<flags>. Xem Correlation ID.
CORS (Cross-Origin Resource Sharing)
Phần tiêu đề “CORS (Cross-Origin Resource Sharing)”Cơ chế để trình duyệt cho phép trang ở origin này đọc response từ origin khác thông qua các header của server. Nó nới Same-Origin Policy chứ không ngăn request được gửi đi, nên không thay thế được kiểm soát truy cập ở server. Xem CORS và CSRF.
CPU throttling (CFS quota)
Phần tiêu đề “CPU throttling (CFS quota)”Khi container có CPU limit, kernel tạm dừng mọi thread của nó khi đã dùng hết quota trong period hiện tại (mặc định 100 ms), tới period sau mới chạy tiếp. CPU trung bình có thể thấp mà request vẫn bị treo. Xem Requests & limits.
Tách model ghi (command) và model đọc (query); có thể dùng chung hoặc tách kho dữ liệu. Xem CQRS và event sourcing.
Crypto-shredding
Phần tiêu đề “Crypto-shredding”Mã hoá field cá nhân bằng key riêng từng người rồi xoá key để dữ liệu không đọc được; ciphertext vẫn còn, có đủ để coi là xoá hay không là câu hỏi pháp lý.
CSRF (Cross-Site Request Forgery)
Phần tiêu đề “CSRF (Cross-Site Request Forgery)”Tấn công khiến trình duyệt của nạn nhân gửi request kèm cookie đăng nhập tới site đích mà người dùng không chủ ý. Phòng bằng CSRF token, thuộc tính SameSite, kiểm tra Origin hoặc Sec-Fetch-Site. Xem CORS và CSRF.
Dead letter exchange (DLX)
Phần tiêu đề “Dead letter exchange (DLX)”Exchange nhận các message bị dead-letter trong RabbitMQ: bị reject không requeue, hết TTL, queue đầy hoặc vượt delivery limit. Xem Dead-letter và TTL.
Dead-letter queue (DLQ)
Phần tiêu đề “Dead-letter queue (DLQ)”Nơi chứa message không xử lý được sau khi đã hết lượt retry hoặc gặp lỗi vĩnh viễn, để điều tra và replay. Consumer API của Kafka không có DLQ dựng sẵn; RabbitMQ dùng dead letter exchange. Xem Retry topic và DLQ trong Kafka.
Deadlock
Phần tiêu đề “Deadlock”Tình huống hai (hoặc nhiều) transaction khoá lẫn nhau theo một vòng chờ khép kín — mỗi bên giữ thứ bên kia cần, không ai có thể tiến tới. PostgreSQL tự phát hiện và huỷ một transaction để phá vòng. Xem Deadlock trong PostgreSQL.
Decorator
Phần tiêu đề “Decorator”Object bọc một object khác với cùng interface, mỗi lớp thêm một hành vi (cache, retry, metrics). Thứ tự các lớp làm đổi hành vi. Xem Decorator pattern.
Dependency injection (DI) container
Phần tiêu đề “Dependency injection (DI) container”Thành phần tạo các object (provider) và tiêm chúng vào nơi cần, dựa trên khai báo thay vì để code tự new. Trong NestJS, container quản lý cả vòng đời và scope của provider. Xem DI container trong NestJS.
Dependency rule
Phần tiêu đề “Dependency rule”Quy tắc trung tâm của Clean Architecture: phụ thuộc trong source code chỉ hướng vào trong; lời gọi ra ngoài đi qua dependency inversion. Xem Hexagonal & clean architecture.
DNS rebinding
Phần tiêu đề “DNS rebinding”Kỹ thuật trả về một IP công khai ở lần phân giải đầu rồi IP nội bộ ở lần sau (TTL rất thấp), để vượt qua cách kiểm tra rồi mới fetch. Cách phòng là phân giải một lần và kết nối đúng IP đã kiểm tra. Xem SSRF.
Domain event / integration event
Phần tiêu đề “Domain event / integration event”Domain event là thông báo trong process về một sự thật nghiệp vụ trong một bounded context. Integration event đưa sự thật đó sang service khác, bất đồng bộ và chỉ sau commit, thường qua outbox. Xem Observer và domain event.
Double-entry ledger
Phần tiêu đề “Double-entry ledger”Sổ chỉ thêm, mỗi sự kiện tiền là một journal gồm các entry debit/credit có tổng bằng nhau; số dư là tổng các entry. Xem Payment system.
DTO (Data Transfer Object)
Phần tiêu đề “DTO (Data Transfer Object)”Class mô tả hình dạng input hoặc output của một endpoint. Trong NestJS, DTO mang decorator của class-validator để ValidationPipe kiểm tra lúc runtime. Xem Validation DTO.
Dual write
Phần tiêu đề “Dual write”Ghi vào database và gửi message hoặc gọi hệ khác như hai thao tác riêng, không atomic. Nếu crash giữa hai bước, hai nơi sẽ lệch nhau. Giải pháp phổ biến là outbox. Xem Transactional outbox.
Dynamic module (NestJS)
Phần tiêu đề “Dynamic module (NestJS)”Module nhận cấu hình lúc import: một static method (forRoot, register…) trả object DynamicModule gồm module, providers, exports, imports, global. Xem Dynamic module.
Error budget
Phần tiêu đề “Error budget”Phần được phép lỗi trong cửa sổ SLO, bằng 1 - SLO. SLO 99,9% trong 30 ngày cho phép khoảng 43,2 phút lỗi toàn phần. Xem SLI, SLO và error budget.
ETag / If-Match
Phần tiêu đề “ETag / If-Match”ETag là định danh phiên bản của một resource HTTP. Client gửi lại trong If-Match; nếu resource đã đổi, server không thực hiện thay đổi và có thể trả 412. Xem Optimistic hay pessimistic locking.
Event loop (Node.js)
Phần tiêu đề “Event loop (Node.js)”Vòng lặp libuv chạy callback theo các phase (timers, pending, poll, check, close…). Sau mỗi callback, hàng đợi process.nextTick rồi microtask được xả hết. Xem Event loop trong Node.js.
Event sourcing
Phần tiêu đề “Event sourcing”Lưu mỗi thay đổi thành event bất biến trong stream append-only của từng aggregate; state hiện tại có được bằng cách replay (fold) các event. Xem CQRS và event sourcing.
Exception filter
Phần tiêu đề “Exception filter”Thành phần trong NestJS chuyển exception chưa được xử lý thành response lỗi. Filter chỉ áp dụng trong scope được đăng ký; exception đã được interceptor xử lý không đi tiếp tới filter. Xem Request lifecycle trong NestJS.
Expand–contract migration
Phần tiêu đề “Expand–contract migration”Cách đổi schema không downtime theo nhiều pha: thêm (expand) cột hoặc bảng mới, backfill và chuyển ứng dụng sang dùng, rồi xoá cái cũ (contract) ở một lần phát hành riêng. Xem Migration expand–contract.
Expected version
Phần tiêu đề “Expected version”Version của stream lúc command load; append thất bại nếu stream đã đổi (optimistic concurrency theo stream).
Exponential backoff và jitter
Phần tiêu đề “Exponential backoff và jitter”Tăng dần thời gian chờ giữa các lần retry (gấp đôi mỗi lần, có trần) và cộng ngẫu nhiên (jitter) để các client không retry đồng loạt. Full jitter chọn ngẫu nhiên trong khoảng từ 0 đến mức backoff. Xem Retry, backoff và jitter.
Extended statistics
Phần tiêu đề “Extended statistics”Thống kê PostgreSQL thu thập cho một nhóm cột được chỉ định (qua CREATE STATISTICS), giúp planner nhận ra tương quan giữa các cột thay vì mặc định coi chúng độc lập. Xem Statistics, ANALYZE và cách PostgreSQL ước lượng query.
Fan-out on write / fan-out on read
Phần tiêu đề “Fan-out on write / fan-out on read”Phát bài bằng cách chép id vào timeline tính sẵn của từng follower lúc ghi (đẩy), so với gom bài từ mọi tài khoản đang follow lúc đọc feed (kéo). Xem News feed.
Feature flag
Phần tiêu đề “Feature flag”Công tắc trong runtime để bật/tắt một tính năng mà không cần deploy lại. Gồm nhiều loại (release, experiment, ops, permission); flag release phải được gỡ sau khi tính năng ổn định để không thành nợ kỹ thuật. Xem Config và 12-factor.
Fencing token
Phần tiêu đề “Fencing token”Số tăng dần mỗi lần cấp lock hoặc lease. Tài nguyên từ chối ghi mang token cũ hơn, nên bên đã mất lock không ghi đè được dữ liệu mới. Advisory lock của PostgreSQL không có fencing token. Xem Advisory lock.
Flaky test
Phần tiêu đề “Flaky test”Test có cùng code và cùng điều kiện nhưng lúc pass lúc fail, thường do thời gian, thứ tự chạy, trạng thái dùng chung hoặc chờ bất đồng bộ. Xem Flaky test.
fsync
Phần tiêu đề “fsync”System call buộc kernel ghi dữ liệu từ page cache xuống thiết bị lưu trữ. Đã write() mà chưa fsync thì dữ liệu sống sót khi process chết nhưng mất khi máy sập. Xem Persistence: RDB và AOF.
Full-page image (FPI)
Phần tiêu đề “Full-page image (FPI)”Bản sao nguyên page 8 kB ghi vào WAL ở lần sửa đầu tiên sau checkpoint khi full_page_writes = on (mặc định). Insert rải ngẫu nhiên như UUID v4 sinh rất nhiều FPI. Xem UUID hay bigint làm khoá.
GIN (Generalized Inverted Index)
Phần tiêu đề “GIN (Generalized Inverted Index)”Loại index PostgreSQL tạo một entry cho từng thành phần bên trong một giá trị composite (mỗi phần tử array, mỗi key JSON), thay vì một entry cho cả giá trị. Hợp cho tìm kiếm containment trên array, jsonb, và full-text search. Xem GIN, GiST và BRIN.
GiST (Generalized Search Tree)
Phần tiêu đề “GiST (Generalized Search Tree)”Framework index tổng quát của PostgreSQL; operator class định nghĩa cách so sánh và thu hẹp phạm vi tìm kiếm cho một kiểu dữ liệu/quan hệ cụ thể (range overlap, dữ liệu hình học…). Xem GIN, GiST và BRIN.
Graceful shutdown
Phần tiêu đề “Graceful shutdown”Quy trình dừng có trật tự: ngừng nhận việc mới, chờ việc đang chạy xong trong một hạn, đóng tài nguyên rồi thoát. Trên Kubernetes, preStop, drain và cleanup dùng chung một grace period. Xem SIGTERM khi deploy.
Guard
Phần tiêu đề “Guard”Thành phần trong NestJS quyết định một request có được phép đi tiếp hay không, thông qua phương thức canActivate(). Chạy sau middleware, trước interceptor và pipe. Xem Request lifecycle trong NestJS.
Hash slot / hash tag
Phần tiêu đề “Hash slot / hash tag”Redis Cluster chia key vào 16.384 hash slot. Phần {...} trong tên key (hash tag) làm Redis chỉ băm đoạn đó, để nhiều key nằm cùng slot và dùng chung được trong MULTI hay script. Xem Pipelining, MULTI và Lua.
Table access method mặc định của PostgreSQL. Heap relation lưu các phiên bản tuple trên các page; thứ tự vật lý của chúng không bảo đảm trùng với thứ tự insert hay giá trị primary key.
Hosted fields (tokenization)
Phần tiêu đề “Hosted fields (tokenization)”Ô nhập thẻ do gateway cung cấp (iframe hoặc redirect) để số thẻ không đi qua server của merchant, merchant chỉ nhận token.
Hot key
Phần tiêu đề “Hot key”Một key cache nhận lượng truy cập lớn bất thường, làm quá tải shard chứa nó. Thường giảm bằng cache trong process ngắn hạn hoặc replica.
Hot standby
Phần tiêu đề “Hot standby”Server PostgreSQL ở chế độ recovery, liên tục replay WAL từ primary và vẫn nhận query chỉ đọc. Dữ liệu chỉ hiện sau khi commit record được replay. Xem Replication và read replica.
HyperLogLog
Phần tiêu đề “HyperLogLog”Cấu trúc xác suất ước lượng số phần tử khác nhau với bộ nhớ cố định: tối đa 12 KB trong Redis, sai số chuẩn 0,81%. Không liệt kê được phần tử. Xem Redis data structures.
Hysteresis (threshold)
Phần tiêu đề “Hysteresis (threshold)”Dùng hai ngưỡng khác nhau để vào và ra một chế độ (ví dụ 10.000 và 8.000 follower) để giá trị sát ranh giới không đổi qua lại liên tục.
Idempotency
Phần tiêu đề “Idempotency”Khả năng thực hiện lại cùng một thao tác mà không tạo thêm hiệu ứng nghiệp vụ so với thực hiện một lần. Với consumer hoặc job có retry, cần nhận diện cùng một thao tác bằng key ổn định và bảo vệ việc ghi nhận kết quả. Xem Idempotent consumer.
Idempotency-Key (header)
Phần tiêu đề “Idempotency-Key (header)”Header HTTP chứa giá trị duy nhất do client sinh, giúp server nhận ra các lần retry của request non-idempotent (POST) và trả lại kết quả cũ thay vì lặp hiệu ứng. Vẫn là IETF Internet-Draft, chưa phải RFC. Xem Idempotency-Key.
Idle in transaction
Phần tiêu đề “Idle in transaction”Trạng thái trong pg_stat_activity: session đã mở transaction nhưng không chạy câu lệnh nào. Session vẫn giữ mọi lock và snapshot, nên chặn session khác và cản VACUUM. Xem Timeout và quan sát lock.
IDOR / BOLA
Phần tiêu đề “IDOR / BOLA”Broken Object Level Authorization (API1:2023 của OWASP): API nhận ID của object nhưng không kiểm tra người gọi có quyền với đúng object đó. Xem BOLA và IDOR.
ID token
Phần tiêu đề “ID token”JWT do OIDC provider cấp cho client (aud = client_id) để chứng minh việc đăng nhập; không phải credential để gọi API.
IMDS (Instance Metadata Service)
Phần tiêu đề “IMDS (Instance Metadata Service)”Dịch vụ metadata của máy ảo cloud, ví dụ AWS ở 169.254.169.254, có thể trả credentials của IAM role. Đây là mục tiêu kinh điển của SSRF; IMDSv2 yêu cầu token lấy bằng PUT và hop limit mặc định 1. Xem SSRF.
In-sync replicas (ISR)
Phần tiêu đề “In-sync replicas (ISR)”Tập replica của một partition Kafka (gồm cả leader) đang theo kịp leader trong replica.lag.time.max.ms. Với acks=all, ghi chỉ được xác nhận khi mọi replica trong ISR đã có bản ghi. Xem Replication, ISR và acks.
Inbox pattern
Phần tiêu đề “Inbox pattern”Bảng ghi lại ID các message đã xử lý; consumer INSERT ... ON CONFLICT DO NOTHING trong cùng transaction với tác động nghiệp vụ để khử trùng. Xem Idempotent consumer.
Interceptor
Phần tiêu đề “Interceptor”Thành phần trong NestJS cho phép chạy code trước và sau khi handler xử lý request, thường dùng để logging, đo thời gian, hoặc biến đổi response. Xem Request lifecycle trong NestJS.
Join algorithms (Nested Loop, Hash Join, Merge Join)
Phần tiêu đề “Join algorithms (Nested Loop, Hash Join, Merge Join)”Ba cách PostgreSQL thực hiện một phép join: Nested Loop tra từng dòng outer, Hash Join băm bên nhỏ rồi quét bên lớn, Merge Join duyệt song song hai dãy đã sắp. Xem Join algorithms.
JWKS (JSON Web Key Set)
Phần tiêu đề “JWKS (JSON Web Key Set)”Tập public key mà issuer công bố ở jwks_uri, mỗi key có kid; verifier dùng nó để chọn key kiểm chữ ký token, nhờ đó xoay key được.
JWT (JSON Web Token)
Phần tiêu đề “JWT (JSON Web Token)”Token chứa các claim (sub, exp, aud…) được ký, verify được cục bộ mà không cần gọi về server. Payload chỉ là base64url, không mã hoá, và không thu hồi được trước exp nếu không thêm trạng thái. Xem Session cookie hay JWT.
Keyset pagination
Phần tiêu đề “Keyset pagination”Cách phân trang tiếp tục từ giá trị khoá cuối cùng của trang trước (WHERE id > $last_id), thay vì đếm và bỏ qua một số dòng bằng OFFSET. Chi phí không tăng theo độ sâu trang. Xem Pagination trong PostgreSQL: OFFSET và keyset.
KRaft
Phần tiêu đề “KRaft”Chế độ quản lý metadata của Kafka bằng Raft ngay trong broker, thay cho ZooKeeper. Kafka 4.0 đã bỏ hẳn ZooKeeper. Xem Kafka distributed log.
Lamport clock / vector clock
Phần tiêu đề “Lamport clock / vector clock”Đồng hồ logic: Lamport tăng khi có event và lấy max rồi cộng 1 khi nhận message, nên a → b suy ra L(a) < L(b) nhưng không ngược lại. Vector clock phân biệt được hai event đồng thời. Xem Lamport logical clock.
Last stable offset (LSO)
Phần tiêu đề “Last stable offset (LSO)”Offset lớn nhất mà consumer read_committed của Kafka được đọc: mọi record trước nó đã thuộc transaction hoàn tất. Một transaction mở lâu giữ LSO lại và làm trễ việc đọc. Xem Kafka transaction và exactly-once.
Layer cache (Docker)
Phần tiêu đề “Layer cache (Docker)”Docker dùng lại layer khi lệnh và input không đổi. Một layer miss thì mọi layer sau nó build lại, nên thứ tự lệnh trong Dockerfile quyết định tốc độ rebuild. Xem Docker multi-stage & non-root.
Leakproof function
Phần tiêu đề “Leakproof function”Hàm hoặc operator được bảo đảm không làm lộ đối số (ví dụ qua thông báo lỗi); chỉ loại này được chạy trước điều kiện của policy RLS, nhờ đó dùng được index.
Lease
Phần tiêu đề “Lease”Quyền sử dụng tài nguyên hoặc xử lý công việc trong một khoảng thời gian hữu hạn. Hết hạn không chứng minh chủ cũ đã dừng; cần kiểm tra quyền cập nhật và thiết kế side effect phù hợp khi cấp lại quyền cho chủ mới.
Listpack
Phần tiêu đề “Listpack”Encoding gọn của Redis cho hash, sorted set, set, list nhỏ: một mảng byte liền nhau, tiết kiệm bộ nhớ nhưng tìm kiếm tuyến tính. Vượt ngưỡng thì Redis đổi sang encoding lớn. Xem Redis data structures.
Lock ordering
Phần tiêu đề “Lock ordering”Quy ước lấy các lock theo cùng một thứ tự để tránh vòng chờ giữa những tài nguyên tuân theo quy ước đó. Cần áp dụng nhất quán ở mọi luồng truy cập liên quan. Xem Deadlock trong PostgreSQL.
Lock queue
Phần tiêu đề “Lock queue”Hàng đợi các request đang chờ lock trên cùng một object. Request mới phải chờ nếu xung đột với lock đang giữ hoặc với request đang chờ phía trước (soft block), nên một DDL đang chờ có thể chặn cả SELECT đến sau. Xem Lock queue.
Lost update
Phần tiêu đề “Lost update”Lỗi xảy ra khi hai transaction cùng đọc một dữ liệu, rồi cùng ghi đè dựa trên giá trị đã đọc — một trong hai lần ghi bị “mất” vì dựa trên dữ liệu đã lỗi thời vào lúc ghi.
LSN (Log Sequence Number)
Phần tiêu đề “LSN (Log Sequence Number)”Vị trí trong WAL, dạng 0/3033518, tăng dần và so sánh được. Dùng để đo replication lag và kiểm tra replica đã replay tới một commit chưa. Xem Replication và read replica.
Mass assignment
Phần tiêu đề “Mass assignment”Client gửi thêm field như role hay isVerified, và app chép nguyên body vào model, nên client ghi được field không được phép sửa. Chặn bằng allowlist, ví dụ whitelist của ValidationPipe. Xem Validation DTO.
Memory-hard function
Phần tiêu đề “Memory-hard function”Hàm băm cần nhiều RAM cho mỗi lần chạy (Argon2, scrypt), làm giảm lợi thế song song của GPU và ASIC khi đoán mật khẩu. Xem Hash mật khẩu.
Middleware
Phần tiêu đề “Middleware”Lớp xử lý request trước guard trong NestJS, thường dùng để gắn request ID hoặc ghi access log. Middleware có thể gắn theo route nhưng không có ExecutionContext của guard. Chi tiết tích hợp phụ thuộc HTTP adapter. Xem Request lifecycle trong NestJS.
Minor unit
Phần tiêu đề “Minor unit”Đơn vị nhỏ nhất của tiền tệ theo ISO 4217 (USD có 2 chữ số thập phân, VND 0); lưu số tiền dạng số nguyên theo đơn vị này.
Modular monolith
Phần tiêu đề “Modular monolith”Một deployable duy nhất nhưng chia thành các module có ranh giới và interface công khai rõ, thường được kiểm soát bằng công cụ. Xem Modular monolith và microservices.
Multi-stage build
Phần tiêu đề “Multi-stage build”Dockerfile có nhiều stage FROM; chỉ stage cuối thành image, các stage khác chỉ chuyển file qua COPY --from. Giúp image runtime không chứa công cụ build. Xem Docker multi-stage & non-root.
Multi-tenancy
Phần tiêu đề “Multi-tenancy”Một hệ thống phục vụ nhiều khách hàng (tenant) mà dữ liệu phải cô lập: database riêng, schema riêng, hoặc schema chung có cột tenant_id. Xem Row-level security.
MVCC (Multi-Version Concurrency Control)
Phần tiêu đề “MVCC (Multi-Version Concurrency Control)”Cơ chế giữ nhiều phiên bản dòng để câu lệnh đọc theo snapshot mà không phải chờ row lock của thao tác ghi. Ở Read Committed, snapshot được lấy cho từng câu lệnh; ở Repeatable Read, snapshot ổn định trong transaction. Xung đột giữa các thao tác ghi vẫn có thể gây chờ. Xem Row-level locks trong PostgreSQL.
Negative caching
Phần tiêu đề “Negative caching”Lưu kết quả “không tồn tại” vào cache với TTL ngắn để không truy vấn lại nguồn chính. Chỉ có ích khi cùng key bị hỏi lặp lại; phải xoá khi row được tạo. Xem Cache penetration & avalanche.
Node-pressure eviction
Phần tiêu đề “Node-pressure eviction”Khi node thiếu tài nguyên (ví dụ memory), kubelet chủ động dừng Pod, ưu tiên Pod dùng vượt request. Khác OOMKilled, là container chạm limit của chính nó.
Observer
Phần tiêu đề “Observer”Subject báo cho các listener đã đăng ký khi có sự kiện, để bên publish không phụ thuộc vào các phản ứng. Xem Observer và domain event.
Offset (Kafka)
Phần tiêu đề “Offset (Kafka)”Số thứ tự của một record trong một partition. Consumer group lưu offset đã commit để biết đọc tiếp từ đâu. Xem Offset commit.
OIDC (OpenID Connect)
Phần tiêu đề “OIDC (OpenID Connect)”Lớp định danh trên OAuth 2.0: ngoài access token, client nhận thêm ID token (một JWT) cho biết ai vừa đăng nhập và lúc nào. Xem OAuth 2.0, OIDC và PKCE.
OOMKilled
Phần tiêu đề “OOMKilled”Container vượt memory limit và bị kernel kill bằng SIGKILL (exit code 137); container restart trong cùng Pod. Xem Requests & limits.
Open / closed workload model
Phần tiêu đề “Open / closed workload model”Open model: request đến theo lịch cố định, không chờ response (k6 arrival-rate). Closed model: mỗi virtual user chỉ gửi request tiếp khi request trước xong (constant-vus). Xem Load testing với k6.
Optimistic locking
Phần tiêu đề “Optimistic locking”Phát hiện xung đột lúc ghi: thêm version đã đọc vào WHERE của UPDATE; UPDATE 0 nghĩa là người khác đã ghi trước. Không giữ lock giữa đọc và ghi. Xem Optimistic hay pessimistic locking.
Khối có kích thước cố định mà PostgreSQL dùng làm đơn vị lưu trữ cho bảng và index; kích thước thường là 8 kB nhưng phụ thuộc bản build. Page chứa header, line pointer, vùng trống và item.
Partition
Phần tiêu đề “Partition”Trong Kafka: một log có thứ tự trong topic. Producer chọn partition theo cấu hình partitioner, key hoặc partition được chỉ định trực tiếp; cách chọn khi không có key phụ thuộc client. Kafka giữ thứ tự record trong từng partition. Xem Kafka consumer group và rebalance.
Trong PostgreSQL: một bảng con vật lý chứa một phần dữ liệu của một bảng logic đã khai báo PARTITION BY (RANGE, LIST hoặc HASH). Xem Partitioning trong PostgreSQL.
Partition pruning
Phần tiêu đề “Partition pruning”Việc PostgreSQL planner loại bỏ các partition không thể chứa dòng thoả điều kiện WHERE, dựa trên so sánh giữa điều kiện và bounds của từng partition — xảy ra trước khi quét bất kỳ dữ liệu nào. Chỉ có tác dụng khi WHERE ràng buộc được đúng cột dùng làm partition key. Xem Partitioning trong PostgreSQL.
Pepper
Phần tiêu đề “Pepper”Secret dùng chung cho mọi mật khẩu, lưu ngoài database (KMS, secret manager), bảo vệ hash khi chỉ database bị lộ. Xem Hash mật khẩu.
Pessimistic locking
Phần tiêu đề “Pessimistic locking”Khoá ngay lúc đọc (SELECT ... FOR UPDATE) để bên ghi khác chờ đến khi commit. Hợp với transaction ngắn, xung đột cao; không giữ qua tương tác người dùng. Xem Optimistic hay pessimistic locking.
PgBouncer
Phần tiêu đề “PgBouncer”Connection pooler nhẹ đứng giữa app và PostgreSQL, cho nhiều client connection dùng chung ít server connection. Có ba mode: session, transaction, statement. Xem Connection pooling và PgBouncer.
PHC string
Phần tiêu đề “PHC string”Định dạng $id$v=..$params$salt$hash lưu thuật toán, tham số, salt và hash trong một cột, cho phép nâng tham số dần. Xem Hash mật khẩu.
Thành phần trong NestJS validate và transform tham số đầu vào (@Param, @Body, @Query) ngay trước khi truyền vào handler. Xem Request lifecycle trong NestJS.
Pipelining (Redis)
Phần tiêu đề “Pipelining (Redis)”Client gửi nhiều lệnh liên tiếp không chờ reply rồi đọc reply sau, giảm số round trip. Không nguyên tử: lệnh của client khác vẫn chen vào giữa. Xem Pipelining, MULTI và Lua.
Pivot transaction
Phần tiêu đề “Pivot transaction”Bước “không quay lại” trong saga. Sau khi nó thành công, các bước còn lại phải retry tới khi xong thay vì bù trừ.
PKCE (Proof Key for Code Exchange)
Phần tiêu đề “PKCE (Proof Key for Code Exchange)”Phần mở rộng của luồng authorization code: client gửi bản băm của một bí mật ngẫu nhiên (code_challenge) khi bắt đầu và phải đưa đúng bí mật (code_verifier) khi đổi code, nên code bị lấy cắp cũng vô dụng.
Port (hexagonal)
Phần tiêu đề “Port (hexagonal)”Interface do ứng dụng định nghĩa cho một cuộc hội thoại với bên ngoài. Driving port là use case ứng dụng cung cấp; driven port là thứ ứng dụng cần, như repository hay payment gateway. Xem Hexagonal & clean architecture.
Prefetch (RabbitMQ)
Phần tiêu đề “Prefetch (RabbitMQ)”Số message tối đa chưa ack mà broker giao cho một consumer. Nó điều tiết tốc độ, không xác nhận gì về việc xử lý. Xem Ack, prefetch và confirms.
Preflight
Phần tiêu đề “Preflight”Request OPTIONS mà trình duyệt tự gửi trước những request cross-origin không đơn giản (ví dụ Content-Type: application/json) để hỏi server có cho phép không. Xem CORS và CSRF.
Probe (liveness, readiness, startup)
Phần tiêu đề “Probe (liveness, readiness, startup)”Ba loại kiểm tra của Kubernetes: liveness hỏi có cần restart container không, readiness hỏi Pod có nhận traffic được không, startup hỏi khởi tạo xong chưa. Xem Kubernetes health probes.
Problem Details (RFC 9457)
Phần tiêu đề “Problem Details (RFC 9457)”Định dạng chuẩn application/problem+json cho lỗi HTTP với các trường type, title, status, detail, instance. RFC 9457 thay thế RFC 7807. Xem Problem Details.
Progressive delivery
Phần tiêu đề “Progressive delivery”Canary hoặc blue-green trong đó controller (Argo Rollouts, Flagger) tăng traffic từng bước và tự abort khi phân tích metric thất bại.
Projection / read model
Phần tiêu đề “Projection / read model”View tối ưu cho đọc, dựng bằng cách áp event theo thứ tự và lưu checkpoint; có thể rebuild từ log event.
Provider scope (NestJS)
Phần tiêu đề “Provider scope (NestJS)”Quy tắc về vòng đời instance của provider. DEFAULT tái sử dụng trong application context; REQUEST theo request context; TRANSIENT tạo instance theo consumer inject. Xem Provider scope trong NestJS.
QoS class
Phần tiêu đề “QoS class”Guaranteed, Burstable hoặc BestEffort. Kubernetes suy ra từ request và limit của mọi container trong Pod; ảnh hưởng thứ tự eviction và oom_score_adj.
Quorum queue
Phần tiêu đề “Quorum queue”Loại queue của RabbitMQ được nhân bản bằng Raft, là lựa chọn replicated nên dùng cho queue bền. Có x-delivery-limit mặc định 20 từ RabbitMQ 4.0. Xem Các loại queue của RabbitMQ.
RDB / AOF (Redis)
Phần tiêu đề “RDB / AOF (Redis)”Hai cơ chế persistence của Redis. RDB là snapshot nhị phân của dataset tại một thời điểm; AOF là log lệnh ghi được replay khi khởi động, từ Redis 7 gồm base, incr và manifest. Xem Persistence: RDB và AOF.
Read Committed
Phần tiêu đề “Read Committed”Isolation level mặc định của PostgreSQL. Mỗi câu lệnh đọc thông thường dùng snapshot ở thời điểm câu lệnh bắt đầu; hai câu lệnh trong cùng transaction có thể thấy các thay đổi đã commit khác nhau. Xem Isolation levels trong PostgreSQL.
Read-your-writes
Phần tiêu đề “Read-your-writes”Bảo đảm một client luôn đọc thấy dữ liệu chính mình vừa ghi. Với read replica async, đây là trách nhiệm của ứng dụng: đọc primary hoặc chờ replica replay tới LSN của lần ghi. Xem Replication và read replica.
Rebalance
Phần tiêu đề “Rebalance”Quá trình Kafka phân chia lại partition cho các consumer trong một group khi thành viên group thay đổi (tham gia, rời đi, crash) hoặc số partition của topic thay đổi. Xem Kafka consumer group và rebalance.
Reconciliation
Phần tiêu đề “Reconciliation”Đối soát: khớp dữ liệu của mình (payment, ledger) với nguồn bên ngoài như file settlement của gateway, và xử lý từng chỗ lệch.
Redlock
Phần tiêu đề “Redlock”Thuật toán lock của Redis trên N master độc lập: client chỉ coi là có lock khi lấy được quá bán trong thời gian nhỏ hơn TTL. Có tranh luận về độ an toàn khi không có fencing token. Xem Distributed lock.
Reflector (NestJS)
Phần tiêu đề “Reflector (NestJS)”Provider của @nestjs/core đọc metadata mà decorator đã ghi lên handler hoặc class (get, getAllAndOverride, getAllAndMerge). Thường dùng trong guard và interceptor. Xem Custom decorator & Reflector.
Replication lag
Phần tiêu đề “Replication lag”Độ trễ từ lúc commit trên primary đến lúc replica replay thay đổi đó. Đo bằng replay_lag trong pg_stat_replication hoặc chênh lệch LSN. Xem Replication và read replica.
Request fingerprint
Phần tiêu đề “Request fingerprint”Hash của method, path và body đã chuẩn hoá, lưu cùng idempotency key để phát hiện cùng key bị dùng lại cho request khác (trả 422).
Resource request / limit
Phần tiêu đề “Resource request / limit”Request là lượng scheduler giữ chỗ cho container và là mốc HPA tính utilization. Limit là trần kernel thực thi qua cgroup.
Retry budget
Phần tiêu đề “Retry budget”Giới hạn tỷ lệ retry so với tổng request để retry không khuếch đại sự cố; sách SRE của Google nêu mức khoảng 10%, Envoy mặc định 20%. Xem Retry, backoff và jitter.
Rolling update (maxSurge / maxUnavailable)
Phần tiêu đề “Rolling update (maxSurge / maxUnavailable)”Chiến lược mặc định của Deployment: thay Pod theo đợt, giới hạn bởi số Pod được thêm (maxSurge) và số Pod được phép unavailable (maxUnavailable), cùng mặc định 25%.
Row-level lock
Phần tiêu đề “Row-level lock”Cơ chế khoá một dòng dữ liệu cụ thể (không phải cả bảng) trong PostgreSQL, dùng mệnh đề FOR UPDATE, FOR NO KEY UPDATE, FOR SHARE, hoặc FOR KEY SHARE. Xem Row-level locks trong PostgreSQL.
Row-level security (RLS)
Phần tiêu đề “Row-level security (RLS)”Tính năng PostgreSQL dùng policy theo bảng để lọc dòng mà một role được đọc hoặc ghi; database tự áp dụng nên query quên điều kiện vẫn bị giới hạn. Xem Row-level security.
Ryuk (resource reaper)
Phần tiêu đề “Ryuk (resource reaper)”Container phụ của Testcontainers, xoá mọi container, network, volume mang label của session khoảng 10 s sau khi process test ngắt kết nối. Xem Testcontainers.
Chuỗi transaction cục bộ qua nhiều service, mỗi bước có một bước bù trừ; nếu một bước lỗi, các bước đã xong được bù trừ theo thứ tự ngược. Xem Saga.
Giá trị ngẫu nhiên sinh riêng cho từng mật khẩu, lưu cạnh hash. Chống rainbow table và làm hai user cùng mật khẩu có hash khác nhau; không làm từng lần đoán chậm hơn. Xem Hash mật khẩu.
SameSite
Phần tiêu đề “SameSite”Thuộc tính cookie (Strict, Lax, None) quyết định khi nào cookie được gửi kèm request cross-site. Lax gửi cookie với điều hướng cấp cao dùng method an toàn; một số trình duyệt mặc định là Lax. Xem CORS và CSRF.
Schema Registry
Phần tiêu đề “Schema Registry”Dịch vụ lưu các version schema theo subject và từ chối version mới vi phạm compatibility mode đã đặt; record chỉ mang schema ID.
Semantic lock
Phần tiêu đề “Semantic lock”Dấu hiệu ở tầng ứng dụng (ví dụ trạng thái PENDING) cho biết record đang được một saga chưa xong thay đổi, để request khác chờ, từ chối hoặc hiển thị là đang xử lý.
Serializable Snapshot Isolation (SSI)
Phần tiêu đề “Serializable Snapshot Isolation (SSI)”Cách PostgreSQL triển khai mức Serializable: vẫn đọc từ snapshot nhưng theo dõi phụ thuộc đọc–ghi và huỷ một transaction (40001) khi phát hiện nguy cơ vi phạm tính tuần tự. Xem Isolation levels.
Settlement file
Phần tiêu đề “Settlement file”Báo cáo định kỳ của nhà cung cấp thanh toán về capture, refund, phí và khoản chi trả, dùng để đối soát.
Shared cache / private cache
Phần tiêu đề “Shared cache / private cache”Shared cache (CDN, proxy, gateway) lưu response cho nhiều người dùng; private cache (trình duyệt) chỉ cho một người. private và s-maxage nhắm vào sự phân biệt này. Xem HTTP caching.
Share group (Kafka)
Phần tiêu đề “Share group (Kafka)”Kiểu nhóm consumer theo ngữ nghĩa queue (KIP-932): nhiều consumer đọc chung một partition và ack từng record. Theo thông báo phát hành, Kafka 4.2 đánh dấu tính năng này là production-ready. Xem Share groups.
SLI / SLO
Phần tiêu đề “SLI / SLO”SLI là số đo chất lượng (tỷ lệ sự kiện tốt trên sự kiện hợp lệ); SLO là mục tiêu cho SLI đó trong một cửa sổ, ví dụ 99,9% trong 30 ngày. Xem SLI, SLO và error budget.
Snapshot
Phần tiêu đề “Snapshot”Tập các transaction mà một statement hoặc transaction coi là đã commit; nó quyết định phiên bản dòng nào nhìn thấy được. Xem MVCC và Isolation levels.
Snapshot (event sourcing)
Phần tiêu đề “Snapshot (event sourcing)”State đã fold của một stream lưu sẵn tại version N để chỉ replay event sau đó; có thể xoá và tạo lại. Không phải snapshot của MVCC.
Sorted set
Phần tiêu đề “Sorted set”Kiểu Redis mà mỗi member là duy nhất và có score, luôn giữ thứ tự theo score; thêm và cập nhật tốn O(log N). Hợp cho leaderboard. Xem Redis data structures.
SSRF (Server-Side Request Forgery)
Phần tiêu đề “SSRF (Server-Side Request Forgery)”Lỗi khi attacker điều khiển đích của request do server phát ra, khiến server dùng quyền mạng của chính nó để gọi tài nguyên ngoài ý định. Xem SSRF khi API fetch URL.
stale-while-revalidate
Phần tiêu đề “stale-while-revalidate”Extension của Cache-Control (RFC 5861) cho phép cache trả bản stale trong N giây trong lúc làm mới ở nền.
Starvation
Phần tiêu đề “Starvation”Tình trạng một công việc liên tục bị trì hoãn trong khi công việc khác vẫn tiến triển. Trong queue dùng SKIP LOCKED, job giữ lock lâu có thể bị các worker bỏ qua nhiều lần.
Strategy
Phần tiêu đề “Strategy”Pattern đóng gói các thuật toán có thể hoán đổi sau một interface chung, để chọn thuật toán lúc chạy thay vì dùng chuỗi if. Xem Strategy pattern.
Table-level lock
Phần tiêu đề “Table-level lock”Lock trên cả relation (bảng, index), có 8 mode từ ACCESS SHARE đến ACCESS EXCLUSIVE, giữ đến hết transaction. Trong pg_locks là dòng locktype = 'relation'. Xem Table-level locks.
Template database
Phần tiêu đề “Template database”Database PostgreSQL làm mẫu cho CREATE DATABASE ... TEMPLATE; không được có connection nào tới nó khi đang copy. Hữu ích để mỗi file test có một database mới đã chạy migration.
Testcontainers
Phần tiêu đề “Testcontainers”Thư viện khởi động container Docker dùng một lần ngay từ code test, chờ tới khi sẵn sàng rồi trả về host và port map ngẫu nhiên. Xem Testcontainers.
Test double
Phần tiêu đề “Test double”Đối tượng thay cho dependency thật trong test. Mock kiểm tra lời gọi; fake viết lại hành vi rút gọn, ví dụ SQLite thay PostgreSQL.
Think time
Phần tiêu đề “Think time”Khoảng giữa lúc đọc và lúc ghi mà ứng dụng chờ thứ ngoài database, thường là người dùng sửa form. Think time dài thì không nên giữ lock hay transaction. Xem Optimistic hay pessimistic locking.
Thundering herd
Phần tiêu đề “Thundering herd”Xem Cache stampede.
timestamptz
Phần tiêu đề “timestamptz”Kiểu PostgreSQL lưu một thời điểm tuyệt đối (UTC nội bộ), hiển thị theo TimeZone của session. Không lưu múi giờ gốc. Xem Kiểu dữ liệu dễ dùng sai.
TOAST
Phần tiêu đề “TOAST”Viết tắt của The Oversized-Attribute Storage Technique. PostgreSQL dùng cơ chế này để nén hoặc lưu ngoài tuple các giá trị lớn của kiểu dữ liệu hỗ trợ TOAST.
Token bucket
Phần tiêu đề “Token bucket”Thuật toán rate limiting: bucket chứa tối đa capacity token, được nạp đều theo rate; mỗi request lấy token, hết token thì bị từ chối. Cho phép burst tới capacity nhưng giữ tốc độ dài hạn bằng rate. Xem Rate limiting cho API.
Tolerant reader
Phần tiêu đề “Tolerant reader”Consumer chỉ đọc field mình cần và bỏ qua field lạ, nên producer thêm field mà không làm hỏng nó.
Transaction ID wraparound
Phần tiêu đề “Transaction ID wraparound”PostgreSQL dùng XID 32-bit nên phải freeze các tuple cũ trước khi bộ đếm quay vòng; nếu không, server cảnh báo rồi từ chối cấp XID mới để bảo vệ dữ liệu. Xem Transaction ID wraparound.
Transaction pooling
Phần tiêu đề “Transaction pooling”Pooling mode của PgBouncer: server connection chỉ gán cho client trong một transaction rồi trả về pool. Trạng thái session như SET, LISTEN, session advisory lock không dùng được. Xem Connection pooling và PgBouncer.
Transaction propagation
Phần tiêu đề “Transaction propagation”Quy tắc cho biết hàm có đánh dấu transaction làm gì khi đã có transaction đang mở: dùng lại (Required), mở transaction độc lập (RequiresNew), tạo savepoint (Nested) hay báo lỗi. Xem Transaction xuyên service.
Transactional outbox
Phần tiêu đề “Transactional outbox”Ghi event vào một bảng outbox trong cùng transaction với dữ liệu nghiệp vụ; một relay đọc bảng đó rồi gửi lên broker sau. Tránh được dual write. Xem Transactional outbox.
TTL (Time To Live)
Phần tiêu đề “TTL (Time To Live)”Thời gian sống của một key trong cache trước khi nó tự động hết hạn và bị xoá.
Tuple
Phần tiêu đề “Tuple”Phiên bản vật lý của một row trong heap. Tuple gồm header PostgreSQL dùng để quản lý phiên bản và dữ liệu các cột; update có thể tạo phiên bản tuple mới.
Twelve-factor app
Phần tiêu đề “Twelve-factor app”Bộ 12 nguyên tắc cho ứng dụng chạy trên cloud, trong đó config (mọi thứ thay đổi giữa các lần deploy) nằm ở môi trường chứ không nằm trong code, để cùng một artifact chạy được ở nhiều môi trường. Xem Config và 12-factor.
Two-phase commit (2PC)
Phần tiêu đề “Two-phase commit (2PC)”Giao thức trong đó coordinator yêu cầu các bên prepare (giữ lock) rồi commit. Coordinator chết sau bước prepare thì các bên bị treo.
unhandledRejection
Phần tiêu đề “unhandledRejection”Event của Node.js khi một promise bị reject mà không có handler. Từ Node 15, mặc định process dừng. Lỗi loại này không đi qua exception filter của NestJS. Xem Exception filter.
Upcasting
Phần tiêu đề “Upcasting”Chuyển event hoặc message dạng cũ về dạng hiện tại tại một chỗ, lúc đọc, không sửa dữ liệu đã lưu.
Upsert
Phần tiêu đề “Upsert”Thao tác “chưa có thì INSERT, có rồi thì UPDATE” trong một câu lệnh. Trong PostgreSQL là INSERT ... ON CONFLICT DO UPDATE, bảo đảm INSERT hoặc UPDATE ở Read Committed. Xem Upsert với ON CONFLICT.
UUID v4 / UUID v7
Phần tiêu đề “UUID v4 / UUID v7”v4 gồm 122 bit ngẫu nhiên; v7 (RFC 9562) bắt đầu bằng timestamp 48 bit tính theo ms nên gần tăng dần. v7 giữ đường insert B-tree gần như bigint nhưng lộ thời điểm tạo. Xem UUID hay bigint làm khoá.
Varlena
Phần tiêu đề “Varlena”Định dạng biểu diễn các giá trị có độ dài thay đổi trong PostgreSQL. text và bytea là ví dụ; với những kiểu hỗ trợ TOAST, header có thể cho biết giá trị được lưu inline, nén hoặc tham chiếu dữ liệu out-of-line. Xem TOAST trong PostgreSQL 17.
WAL (Write-Ahead Log)
Phần tiêu đề “WAL (Write-Ahead Log)”Nhật ký tuần tự: mọi thay đổi được ghi vào WAL trước khi ghi vào file dữ liệu. Dùng cho crash recovery, replication và backup PITR. Xem Replication và read replica.
Worker
Phần tiêu đề “Worker”Tiến trình hoặc thành phần nền nhận và xử lý công việc từ queue. Nhiều worker cần cơ chế phân chia quyền xử lý để không cùng nhận một job.
Write amplification
Phần tiêu đề “Write amplification”Một lần ghi logic thành nhiều lần ghi vật lý, ví dụ một bài thành một lần ghi timeline cho mỗi follower.
Write skew
Phần tiêu đề “Write skew”Hai transaction cùng đọc một điều kiện rồi ghi vào hai dòng khác nhau, làm vi phạm một invariant mà từng transaction riêng lẻ không phá. Repeatable Read vẫn cho phép, Serializable chặn. Xem Các anomaly.