Сейчас я хочу попробовать что то новое (уйти от стандартных бд вроде мусколя и постгрес). Я сделал сервис в котором жестко в коде сделал структуры данных (вроде таблиц), а в роли индекса выступает подобная система
//структура юзеров
type User struct{
login string
email string
}
//первичный индекс int == id. Он используется в индексах других таблиц
var UserId map[int]User
//индекс на логин где string индекс, а int хранит ключ для массива UserId
var UserIndexLogin map[string]int
Всё это дело пока что я при записи/обновлении кодирую в json и сохраняю в файл. Потом я этот алгоритм улучшу путём создания вместо огромного json всей таблицы на кучу мелких (один id == один json всех структур). Но боюсь что с этим выйдут проблемы (как отнесётся файловая система к 100к мелких фалов в одной директории...) по этому думаю фс заменить на NoSql бд только вот все что я нашел хранят данные в озу, а мне нужна безопасная (гарантированная) запись на диск.
Так как озу рано или поздно не хватит я сделал масив который хранит UnixTime последнего обращения к каждому из id и те к которым долго не обращались тупо удаляю.
Но я так и не разобрался как можно узнать сколько всё это дело занимает места в озу.
Если много букаф
Нужна NoSql которая гарантированно сохранить данные на жд и с возможностью легкого маштабирвания. Что взять?
Как в golang узнать сколько места в озу занимают все глобальные переменные?