Sobes.tech

Golang

/* Są dwa serwery PostgreSQL: * PROD - serwer OLTP, * STATS - serwer do długich zapytań analitycznych. Na aktualnym serwerze, w bazie danych prod, znajduje się duża tabela (10Tb) o następującej strukturze: CREATE TABLE profiles( id SERIAL, data JSONB ) W tabeli mogą występować "luki", tzn. niektóre `id` mogą być pominięte. Należy napisać program do kopiowania tabeli profiles z PROD do STATS. Zakłada się, że do pracy z bazami danych będą używane następujące interfejsy: type Row []interface{} type Database interface { // implementacja interfejsu Database może ponownie ustanawiać połączenia // wywołanie SaveRows jest idempotentne io.Closer GetMaxID(ctx context.Context) (uint64, error) LoadRows(ctx context.Context, minID, maxID uint64) ([]Row, error) // [minID, maxID] SaveRows(ctx context.Context, rows []Row) error } func Connect(ctx context.Context, dbname string) (Database, error) // CopyTable // Jeśli full=false, kontynuować transfer danych od miejsca poprzedniego błędu // Jeśli full=true, przenieść wszystkie dane func CopyTable(fromName string, toName string, full bool) error { // ... twój kod } Jeśli przekazana jest opcja `full=false`, program powinien kontynuować transfer danych od miejsca poprzedniego błędu. Jeśli `full=true`, powinien przenieść wszystkie dane. **Podstawowy poziom**: - sekwencyjny transfer danych w jednym strumieniu - odzyskiwanie po błędach (opcja `full=false`) Dodatkowe informacje: - w razie potrzeby można rozbudować interfejs, dodając własne metody - w razie potrzeby można używać bezpośrednio pakietu **database/sql**

Senior
Яндекс
63

Czy można utworzyć indeks tylko na repliki, ale nie na masterze?

Senior
Cloud.ru
63

Jak uruchomić kontener w Kubernetes bez Registry?

Middle
Сбертех
63

Krótko o produkcji: kto wdraża, kto monitoruje i tak dalej.

Senior
OZONOZON
63

Jaki jest skład zespołu pod względem liczebności?

Senior
Магнит Тех
63

Jaki jest główny język programowania, którego używasz? Czy używasz C++ lub Python?

Middle+
Яндекс
63

Co oznaczają skróty KISS i DRY?

Senior
техвил
63

Czym są szybkie gry?

Senior
UPSL
63

Czy słyszałeś coś o wzorcu Transactional Outbox?

Senior
Финтехробот
63

Jak działa mapa pod maską w nowych wersjach Go, co się zmieniło?

Middle
Бюро 1440Бюро 1440
63

func main() { defer func() { if r := recover(); r != nil { fmt.Println("odzyskano") } }() defer func() { fmt.Println("odroczenie") }() go func() { fmt.Println("początek goroutine") panic("bum") fmt.Println("koniec goroutine") }() time.Sleep(time.Second) }

Senior
CRTEX
63

Dlaczego zdecydowałeś się zmienić miejsce pracy? Czego szukasz?

Senior
X5
63

Jak zoptymalizować wyszukiwanie w bazie danych? Czym są indeksy i jaka jest ich złożoność?

Middle+
101ХР101ХР
63

Jaka jest przewaga Swiss Tables w porównaniu do starej implementacji tablicy haszującej? Ile bitów zajmuje kod haszujący w starej i nowej implementacji?

Senior
AstonAston
63

Czy pracowałeś z architekturą? Opowiedz o kilku rozwiązaniach architektonicznych

Senior
bip.ru
62

Jakie polecenie jest używane do wstawiania wartości do tabeli?

Middle+
МТСМТС
62

Jak uczynić pamięć stałą (usunąć zależność od liczby unikalnych znaków)?

Senior
Яндекс
62

Jak działa złożony indeks (A, B, C) w zapytaniach?

Middle+
Magnit Tech
62

Jak zmienić semafor Acquire/Lock, aby oczekiwanie można było anulować lub ograniczyć czasowo?

Senior
FinFrame
62

Z jakimi metodologiami rozwoju pracowałeś? Które są najbardziej wygodne?

Senior
ClearWay
62
/411