Variability in Data-Intensive Systems: An Architecture Perspective