Sobes.tech

Golang

Sa stanovišta performansi, koja opšteprihvaćena pravila treba primeniti na takvu šemu baze podataka?

140

Zašto programeri Go jezika ne garantuju redosled prolaska kroz mapu tokom range?

128

Šta da radimo ako smo dodali sve potrebne indekse, ali baza podataka i dalje ne može da se nosi sa opterećenjem i usporava?

128

// GetUsersList vraća popis korisnika. (u bazi podataka pohranjujemo otprilike 1 milijun korisnika) // Koristi se za prikaz popisa korisnika u administracijskom panelu. Ako je isActive = true, vraćaju se samo aktivni korisnici. func (u *UsersRepo) GetUsersList(ctx context.Context, isActive bool) ([]User, error) { rows, err := u.DB.Query("SELECT id, name, phone FROM users WHERE is_active = ?", isActive) if err != nil { return nil, errors.New("greška pri dohvaćanju popisa korisnika") } var users []User // Popunite informacije o korisnicima. for rows.Next() { var user User err := rows.Scan(&user.ID, &user.Name, &user.Phone) if err != nil { return nil, err } // Dohvatite popis e-mailova korisnika err, err := u.DB.QueryContext(ctx, "SELECT email FROM user_emails WHERE user_id = ?", user.ID) if err != nil { return nil, errors.New("greška pri dohvaćanju popisa korisnika") } var emails []string for er.Next() { var email string err := rows.Scan(&email) if err != nil { return nil, err } emails = append(emails, email) } if len(emails) != 0 { for i, e := range emails { e = strings.ToLower(e) emails[i] = e } } user.Emails = emails // Dohvatite profilne informacije iz VK API-ja profile, err := getUserProfileFromVkApiByUserPhone(user.Phone) if err != nil { return nil, errors.New("greška pri dohvaćanju popisa korisnika") } user.Profile = profile users = append(users, user) } if err = rows.Err(); err != nil { return nil, errors.New("greška pri dohvaćanju popisa korisnika") } }

109

-- prikaži spisak knjiga sortirane po id, -- ali u izlazu zameni mesta 2. i 3. red: -- 1 Majstor i Margarita 100 -- 3 Zlati Telenok 50 -- 2 Dvanaest stolica 200 -- 4 Evgenij Onegin 250 -- 5 Belkinove priče 90 -- 6 Tri musketara 60

105
/2