Size: a a a

2020 September 01

SP

Sergey Pronin in dbGeeks
а почему не использовать СУБД? )
источник

SP

Sergey Pronin in dbGeeks
чисто инженерный интерес?
источник

A

Adv0cat in dbGeeks
Sergey Pronin
а почему не использовать СУБД? )
Если пролистаете к началу сабжа, то увидите, что это именно инженерный интерес 😄
источник

SP

Sergey Pronin in dbGeeks
а, ну тогда отлично )
источник

A

Adv0cat in dbGeeks
Sergey Pronin
чисто инженерный интерес?
Собственно вот -
Adv0cat, [1 Sep 2020 at 19:22:43]:
Добрый вечер! Обдумываю архитектуру embedded key-value базы данных, чтобы может быть написать, а может и не написать. Хотел бы задать пару вопросов по этому поводу.

Тут такое приветствуется? или пошел я нахуй с такими вопросами?))
источник
2020 September 02

VK

Vladimir Karamazov in dbGeeks
Adv0cat
Так вот собственно #вопрос
Знакома ли вам такая структура (понятно что это такой себе LIFO-массив) или метод работы со структурой, как это называется?))
Здравствуйте. Не знакома данная структура. Но мне почти никакие структуры не знакомы)) По-моему, верно сделано для апдейта: если при апдейте между транзакциями "вклинится" новый апдейт того же k2, то это корректно обработается - вторая транзакция на рисунке (обновляющая k2), возьмёт справа самый актуальный элемент получается. А вот для делита не понял, что происходит.
Когда во второй транзакции успели замениться k1 и k2 (самый левые) на k3 и k2? Если Вы переместили k1 направо, впритык до курсора, то почему не вышло  k2|k3|k1-?
UPD пока писал, кажется, понял)) k1 поменялось с k3, который находится слева от него. Таким образом если между транзакциями вклинится еще одна, удаляющая k1, она нормально обработается. Кажется, здорово придумано)
источник

VK

Vladimir Karamazov in dbGeeks
Ну а инсёрт самый понятный - добавляется один элемент в конец просто, одной транзакцией
источник

VK

Vladimir Karamazov in dbGeeks
Но это ж Вам ещё радо заботится о уникальности, при добавлении/обновлении, реляциях и прочих субдшных штуках
источник

VK

Vladimir Karamazov in dbGeeks
Или Вы просто продумываете механизм транзакций при операциях, и не пойдете дальше делать субд?
источник

A

Adv0cat in dbGeeks
Vladimir Karamazov
Здравствуйте. Не знакома данная структура. Но мне почти никакие структуры не знакомы)) По-моему, верно сделано для апдейта: если при апдейте между транзакциями "вклинится" новый апдейт того же k2, то это корректно обработается - вторая транзакция на рисунке (обновляющая k2), возьмёт справа самый актуальный элемент получается. А вот для делита не понял, что происходит.
Когда во второй транзакции успели замениться k1 и k2 (самый левые) на k3 и k2? Если Вы переместили k1 направо, впритык до курсора, то почему не вышло  k2|k3|k1-?
UPD пока писал, кажется, понял)) k1 поменялось с k3, который находится слева от него. Таким образом если между транзакциями вклинится еще одна, удаляющая k1, она нормально обработается. Кажется, здорово придумано)
Всё вы правильно поняли!)) тут просто есть одно условие, запись в эту структуру происходит только одной транзакции и только во время коммита, когда все данные уже известны, какие добавить, какие убавить, какие изменить)))
Про удаление, там просто чтобы сократить лишнее К1, которое было удалено, на его место я записываю ближайшее значение к К1-, т.е. К3, а так как потом К3 уже записано раньше, то можно то К3 что справа и К1- убрать, потому что слева уже нет К1 первоначального))
источник

A

Adv0cat in dbGeeks
Vladimir Karamazov
Или Вы просто продумываете механизм транзакций при операциях, и не пойдете дальше делать субд?
Пока продумываю механизм транзакций, но если понравится, то пойду реализовывать дальше embedded key-value 😏
источник

A

Adv0cat in dbGeeks
Вечером и ночью смотрел и про lsm, и про wal.
Так вот, WAL это просто запись всех новых действий последовательно, insert value, delete value, commit transaction и т.д. Т.е. там нет никаких преобразований с этим логом, при откате просто идет проход в обратную сторону и восстановление данных, ну и переодическое сбрасывание этих логов в ноль, или как-то там это называлось поставить метку, по которой лог разделялся до и после, а так там идет только запись действий в конец и ничего больше, никаких сокращений лога, никаких других действий кроме тупо добавления действия в конец.
А вот LSM дерево таки очень и очень похоже на то, что я описал, с той лишь разницей, что там есть несколько уровней для слияния и есть сортировка при слиянии на новый уровень. А моя структура это похоже LSM (без дерева, просто `Log-structured merge`) с его удалением через добавление нового элемента, с его записью в конец и чтением справа налево, со слиянием, только немного не таким как в дереве, не на следующий уровень, а слияние в этот же уровень. Т.е. у меня описана структура без сортировки, без WAL, без лишне занимаего места, с полностью согласованными данными, с возвможностью слиять саму в себя без каких либо уровней
источник
2020 September 04

SG

Stanislav Golivets in dbGeeks
Всем привет. А можете кинуть в меня ссылкой на подробный мануал по настройке Encryption at REST для MongoDB? Если можно, на русском, но пойдет и английский. А то я доку монгодб листаю, но что-то там нахожу только рассказы что это такое, а вот как его есть никак не могу найти. И вообще, подскажите, это то что надо или нет, если у меня стоит вот такая задача про одно конкретное поле в таблице
- When saving to DB - encrypted
- When sending back to phone - unencrypted
источник

VK

Vladimir Karamazov in dbGeeks
То есть, надо поле, которое по rest api гоняется, сохранить зашифрованным в базу, а после получения - расшифровать и вернуть?
источник

SG

Stanislav Golivets in dbGeeks
ага
источник

VK

Vladimir Karamazov in dbGeeks
Гуглите encryption и название фреймворка, с которым работаете на бекенде
источник

SG

Stanislav Golivets in dbGeeks
это node, express. попробую, спасибо
источник

VK

Vladimir Karamazov in dbGeeks
Энкриптите данные, которые пришли по рест -> сохраняете в базу -> при получении декриптите обратно и отдаете по рест 🤷
источник

A

Adv0cat in dbGeeks
Stanislav Golivets
Всем привет. А можете кинуть в меня ссылкой на подробный мануал по настройке Encryption at REST для MongoDB? Если можно, на русском, но пойдет и английский. А то я доку монгодб листаю, но что-то там нахожу только рассказы что это такое, а вот как его есть никак не могу найти. И вообще, подскажите, это то что надо или нет, если у меня стоит вот такая задача про одно конкретное поле в таблице
- When saving to DB - encrypted
- When sending back to phone - unencrypted
Ну судя по всему, база данных тут не сильно причем, можно использовать любой из существующих шифрованных алгоритмов 😉
источник

EK

Evgeniy Kuvshinov in dbGeeks
можно маунтить раздел из вера крипт
источник