code: func (s *PresenceService) UpsertNodes(namespace string, servers []services.Server) error {
  	batch, ok := s.Backend.(backend.Batch)
  	if !ok {
  		return trace.BadParameter("backend does not support batch interface")
  	}
  	if namespace == "" {
  		return trace.BadParameter("missing node namespace")
  	}
  
  	start := time.Now()
  
  	items := make([]backend.Item, len(servers))
  	for i, server := range servers {
  		value, err := services.GetServerMarshaler().MarshalServer(server)
  		if err != nil {
  			return trace.Wrap(err)
  		}
  
  		items[i] = backend.Item{
  			Key:     backend.Key(nodesPrefix, server.GetNamespace(), server.GetName()),
  			Value:   value,
  			Expires: server.Expiry(),
  			ID:      server.GetResourceID(),
  		}
  	}
  
  	err := batch.PutRange(context.TODO(), items)
  	if err != nil {
  		return trace.Wrap(err)
  	}
  
  	s.log.Debugf("UpsertNodes(%v) in %v", len(servers), time.Now().Sub(start))
  
  	return nil
  }
docs: // UpsertNodes is used for bulk insertion of nodes. Schema validation is
  // always skipped during bulk insertion.