As @Anony-Mousse specify it you need a distance function fitting with your data nature.
You have multiple possibilities, convert all your data as categorical, more specifically as binary data applying one hot encoding for example for categrorical data and by bucketing your scalar data.
You can also convert all your data into scalar type, applying dimentionality reduction (PCA, t-SNE, UMAP,...)
If you desire to keep your data as mixed (scalar and binary), Gower distance is a good start, or you can combine Euclidean(scalar) + $\alpha .$Hamming(binary) where $\alpha$ rest to determine depending your need.
Concerning algorithms, classic DBScan and Hierarchical clustering are respectively $O(n^2)$ and $O(n^3)$, you could start with another example which is the $K$-$Prototypes$ and which is $O(n)$, the mixed equivalent of the $KMeans$. Here you can find a scala $K$-$Prototypes$ implementation with the basic mixed metric, and other algorithms working on mixed data.