Захотелось вдруг написать небольшую системку, где в качестве БД использовалась какая-нибудь hash table, аля
memcacheDB. Просто чтобы понять насколько оно актуально в типичных вебах.
Поэтому пытаюсь предварительно придумать реализации привычных фич.
Связи между записями:- один-ко-одному - просто какой-то прокси-объект над хэшом
- один-ко-многим: для получения списка детей - отдельно лежащая коллекция, для получения родителя опять же проксик
- многие-ко-многим: отдельная коллекция с каждой стороны
Фильтрация:Видимо уход от фильтрации в пользу предварительной подготовки данных. Например, если нам надо выбрать все статьи определенного пользователя, то мы вместо фильтрации по id пользователя заводим коллекцию статей определенного пользователя.
Для автоматизации работы с этими коллекциями удобно будет использовать тэгирование. Типа "на вот статью сохрани, заодно повесь на нее тэг article_member_13".
Не радует, что на каждую фильтрацию придется заводить отдельную коллекцию. Т.е. комментарии за последние 5 минут/ час / день это три разных коллекции (тэга).
Сортировка:Тут все просто - только в приложении. Но можно заранее сделать индексы (те же 5 минут / час / день) и выбирать последовательно.
Лимитирование:Опять же только в приложении, причем индексировать уже хуже, ибо очень не хочется перестраивать все индексы, когда удаляют запись стоящую на первой странице. Хотя это можно и не делать, ну и хрен с ним что на странице вместо 20 записей всего 15 :)
Вывод:В общем написал я все это, и понял, что оно мне нафиг пока не надо. В смысле это имеет смысл только задача сильно подходит. Ну а в случае обычного веба - ну его нафиг.