Я реализую то, что составляет файловую систему онлайн, поддерживаемую базой данных SQL через JPA. Для иерархии каталогов я создал объект, который выглядит следующим образом:Насколько я могу масштабировать коллекцию JPA (карта или список)
@Entity
@Table(name = "PATH")
public class Path extends BaseObject implements Serializable {
@Column(nullable = false)
private String name;
@ManyToOne
private BaseObject reference;
@OneToMany(fetch = FetchType.LAZY, orphanRemoval = true)
@MapKey(name = "name")
private Map<String, Path> members;
@ManyToOne
private Path parent;
//etc
Это работает удивительно хорошо. Корневым узлом является Путь экземпляр, где parent is null. С помощью этой схемы я могу делать обходы дерева вверх и вниз и искать как можно безболезненно.
Проблема в том, насколько это можно масштабировать. Например, один из моих корневых экземпляров Path будет иметь один член для каждого пользователя системы. Это нормально для нескольких десятков или даже нескольких сотен пользователей, что происходит, если мой сайт привлекает десятки или даже сотни тысяч пользователей?
Если бы я должен был я мог отказаться от членов колонки и найти узлы членов с SQL SELECT операции, но я не хочу этого делать. Есть ли какие-либо рекомендации, чтобы определить, насколько велика эта Карта Структура должна быть до того, как она станет непрактичной?