pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: Что должен уметь и знать project management?

Лучший ответ: Суть - убрать все преграды на пути работы команды.Уметь слышать и понимать
Преграда 1 - коммуникации, разработчики не хотят этим заниматься, по этому мы должны сделать это за них, понять, что необходимо заказчику.Уметь говорить
Мало понимать заказчика, мы должны еще объяснить программистам \ дизайнерам на на их языке то что необходимо заказчику. Из этого пункта мы получаем следующее:
1) Коммуникации - наше всё.
2) Говорить с командой на одном языке жизненно необходимоФормулируй, властвуй, распределяй.
Хорошо написанное ТЗ - минус дохрелион человекочасов работы и тонны нервных клеток, помните, что даже если ТЗ написано идеально - программист все равно скажет, что оно херовое (чтоб ПМ не расслаблялся, а то иш тут менеджер...)Планируй
Календарный план, Jira и ко - наши бро, планируй вехи и спринты и следи за планом, но без наркомании, не нужно анально карать всех вокруг за то что просрочили такс на 1 час.Риск менеджмент
Во всех проектах есть риски, которые надо учитывать чтобы в середине проекта не оказалось, что реализовать важную для бизнеса фичу вообще невозможно, формируй список рисков и закладывай на них бюджет, причем не просто записал риски и забыл, а именно управляй ими - всегда есть симптомы того, что риск наступит вот вот, умение вовремя увидеть эти симптомы может спасти проект.Менеджмент
Ну и разумется ПМ это менеджер, который может управлять командой, настроем команды, управлять конфликтами (искусственными) либо нейтрализовать их если они негативные.
Минутка полезного чтения - советы начинающим руководителям проектов

Худший ответ: Самый хороший ответ, который я получил на этот вопрос, что знания PM должен быть "a mile wide and an inch deep" :-) 
А если серьёзно, то:
1. Традиционные методологии и стандарты проектного управления: PMI, Prince2, IPMI.
2. Гибкие методологии управления разработкой ПО: Agile, SCRUM, Lean, XP.
3. Выбрать один стандарт управления, на котором вы будете специализироваться и знать его глубоко.
4. Знать ГОСТ 34.602-89 «Техническое задание на создание автоматизируемой системы».
5. Ознакомиться с распространёнными нотациями, предназначенную для формализации и описания бизнес-процессов(IDEF, UML, BPMN).
6. Изучить ПО для ведения и управления проектами (MS Project, JIRA - обязательно). Вот хорошая подборка - https://habrahabr.ru/post/276873/ 
И, основное, уметь общаться с людьми! Это, наверное, самое главное. Большая часть проблем возникает от недостатка коммуникации между участниками проекта (IMHO)
Вопрос: Возможно ли сделать стерео(анаглиф) на сайте?

Лучший ответ: Three.js приходит на помощь - стерео и анаглиф

Худший ответ: body {
  -webkit-filter: drop-shadow(10px 0 0 rgba(0,0,0,.5));
  filter: drop-shadow(10px 0 0 rgba(0,0,0,.5));
}Но лучше, наверное, какой-то свой svg-фильтр, потому что это не совсем то..
Вопрос: Есть торрент клиенты для Linux без установки?

Лучший ответ: Есть:
https://www.google.ru/search?q=linux+portable+torr...

Худший ответ: rtorrent можно просто архивом скачать
https://rakshasa.github.io/rtorrent/
Вопрос: Как написать программу для создания отчетов на Python?

Лучший ответ: Начни с Гугла.
Конкретно для работы с шаблонами есть модуль docxtpl. Там сразу идёт пример, но в нём нет файла шаблона, поэтому: идёшь сюда, скачиваешь архив и изучаешь папку test.

Худший ответ: Не надо забивать гвозди микроскопом. Судя по описанию проблемы, вы вряд ли генерируете сам отчёт на Python. Вам проще будет создать шаблон word, где будет указано:<Имя> <Тел>
Вот буквально так, с косыми скобочками. А потом при работе просто CTRL+H (или как там замена в Ворде вызывается) и сделать автозамену <Имя> на Петров Пётр Петрович.
Вопрос: Откуда geo-ip SaaS берут свои данные?

Лучший ответ: 1) j.mp/2qUNVhb
2) могут. но такое не практикуется особо часто.

Худший ответ: 1) https://habrahabr.ru/post/227183/ тут популярное, изначально все от IANA
2) в след месяце нет, но вообще могут, особенно четко это выражено у ATT и прочих глобальных провайдеров, того же Akamai, хостеров (Амазон и т.п.), мобильных операторов
Вопрос: История программерских вакансий с hh(или других ресурсов)?

Лучший ответ: у HeadHaner есть подобная статистика тут
Можно выбирать область и периоды.

Худший ответ: glassdoor россия
Вопрос: Как отделить сеть IP-видеонаблюдения от сети компьютеров?

Лучший ответ: vlan видимо вам нужен.

Худший ответ: ИМХО, ставьте модифицированную схему сети, Dlink'и в режим "неуправляемых" коммутаторов.
Сеть не очень большая, проблем не должно возникать и при текущем варианта. Проверьте, скорее всего на камерах или регистраторах включен multicast, который забивает коммутаторы мусором.
З.Ы. коммутаторы к TpLinkу подключайте через транковые порты (26-28), камеры в юзерские. После этого траффик между регистраторами и остальной сетью будет только рабочий, в пределах 2-4 мегабит на подключенного пользователя.
Вопрос: Как запустить аргумент в уже работающий код на Python?

Лучший ответ: 2) очереди
1) fileopen
0) socket

Худший ответ: Можете попробовать так поэкспериментировать
"test.py"print('Hello!',input())
"main.py"from subprocess import Popen,PIPE

process = Popen('py test.py', stdout=PIPE,stdin=PIPE,stderr=PIPE,shell=True)
data = process.communicate(b'developer.')[0].decode()
print(data)При запуске main.py
Получим выходHello! developer.
Вопрос: Почему не работает WOL?

Лучший ответ: В приложение вы забили MAC роутера? А по идее нужен MAC ноутбука.

Худший ответ: Wake-On-LAN через сеть Интернет. Есть ещё настройки. Например, драйвера сетевого устройства. Или "Привязка IP и MAC-адресов".
Вопрос: Большой проект на С. Как строить работу чтобы не завалило кодом?

Лучший ответ: 1) Разбиваем по категориям, каждую категорию - в свою папку. Если надо - еще подпапки. 
2) Общий или старый код вынести в библиотеку, подключать только .h + .lib
3) Использовать систему контроля версий.
4) Ввести лимит по количеству строк на файл, перераспределять код таким образом, чтобы в одном .c файле было не больше 1000 строк (имхо даже 500 на с уже много. )

Худший ответ: По самому проекту тебе ответил уже Владимир Дубровин, а вот по малой части надо стремиться к декомпозиции (разложению) на исполнители.
В одном .h файле описываешь интерфейс объекта, например, стекаvoid stack_start();
int stack_push(int value);
int stack_pop();
int stack_isempty();
int stack_topr();
int stack_topw(int value);
void stack_del();
void stack_end();
Дальше в .c файле пишешь реализации этих методов (сами функции и статические (закрытые в файле) переменные, которые им нужны для внутренней работы). И потом, чтобы подключить стек, ты просто подключаешь его .h файл и используешь эти методы.
(Это пример; на самом деле, делается набор методов, который можно применять к разным стекам, где соответствующий стек (структура) просто передаётся в метод первым аргументом.)
В результате у тебя проект (модуль, законченная часть) должен состоять из таких исполнителей, взаимодействующих друг с другом через такие методы.
Тогда всё будет чисто, это всё можно будет тестировать ясными unit-тестами, можно будет легко выделять такую часть и заменять на другую и, самое главное, можно будет сами эти методы также декомпозировать дальше, так как не всегда они просто устроены, как в примере со стеком.
Вопрос: Отношение ПС к автогенерируемому контенту?

Лучший ответ: Вашу идею уже давно реализовали: https://yandex.ru/referats/

Худший ответ: Если генератор текстов хороший топроблем не будет у нас много сайтов с генеренными текстами
Вопрос: Как разрешить вводить только указанные числа?

Лучший ответ: Советую, пока не поздно, убедить заказчика сделать выпадающим списком, иначе пользователи будут плеваться, и называть нехорошими словами всех причастных к этой глупой идее.

Худший ответ: Можно сделать что-то вроде такого: https://jsfiddle.net/xkfyzan9/
Только нужно решить что делать с очень мелкими значениями, там где у float уже точности недостаточно.
Частичное решение https://jsfiddle.net/xkfyzan9/1/
Вопрос: Когда когда на Cisco применять ACL на входе и когда на выходе интерфейса?

Лучший ответ: на in любые входящие соединения (что пришло к Вам в сеть), на out - исходящие (что выйдет из Вашей сети).

Худший ответ: Для определения куда вешать лист доступа, есть правило - всегда нужно смотреть относительно устройства in для трафика который входящий в устройство, out для исходящего из устройства.
Вопрос: Laravel vue-router на многостраничном сайте можно сделать?

Лучший ответ: Многостраничный сайт - и.е. обычный, с HTTP раутингом, где используются силы раутера laravel и какой-нить шаблонизатор там же? Если да, то причем тут vue-router? 
vue-router нужен для SPA (single page application), то есть там, где переход по ссылке на какой-нить внутренний ресурс лишь дергает JS, то-есть весь фронт - крутится только в браузере, а на бек (и на раутер laravel) - летят только ajax запросы. Сам по себе к laravel не имеет вообще никакого отношения, равно как и vue.
Причем тут пакеты - не понимаю. Бекендовские, из composer'а? Ну они вообще не связанны с vue-router. Фронтовские, из npm? Ну я таких не знаю, но смею предположить, что те дают лишь какие-то готовые компоненты, в лучшем случае, а раутер никто трогать не посмеет. Ну и даже если посмеет - что с того? Вам прийдется передать его инстенс куда-то в либу (кто как напишет), но об этом будет четко указано в документации.
Здается мне, что вы не понимаете что такое vue, vue-router, пакеты и многостраничные сайты. Ну или хотя бы что-то из этого :/

Худший ответ: Я про то что как мне переделывать пакеты для Laravel(composer) чтоб не страницы отдавали а работали как api, т.е. изначально были под api настроены
Вопрос: Как вернуть Mac os из виндовс boot camp?

Лучший ответ: Привет,
https://support.apple.com/ru-ru/HT208123

Худший ответ: В принципе должна сработать клавиша Option. Или в трее windows найти серый ромбик и в его меню найти "перезагрузить в мак"
Вопрос: Как с помощью foreach создать строку?

Лучший ответ: Почему такое решение неправильно?потому что оно не создает строку, а просто выводит на экран по одному символу.Разве можно так сделать чтобы echo было за циклом?$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$str = '';
foreach ($arr as $i) {
	$str .= $i;
}
echo $str;

Худший ответ: Зачем вообще foreach. Это условие задачи такое?
Или все таки сгодится php.net/manual/ru/function.implode.php
Вопрос: Что необходимо знать о нарезке дизайна для ios-, android- приложений?

Лучший ответ: Есть два способа передачи ресурсов графики и спецификаций для разработчиков: ручной и автоматический.
Если дизайн сделан в скетч или фотошоп, то используйте плагины отсюда sympli.io
Там графика векторная или растровая создаётся автоматически, но правда нужно немного подготовить и сами макеты - указать что из всех слоёв и групп является ассетами. Дальше разработчику просто дадите ссылку и он её откроет на любом PC/Mac/Linux. Если у разработчика будут, какие-то вопросы то он сможет прямо в том же сервисе и спросить вас, используя комментарии (очень удобно, кстати). 
Если ещё больше хотите упростить жизнь разработчикам, то предложите им установить плагины для Xcode/Android Studio, потому что благодаря им быстрее получится обновить ассеты, если вдруг произошли изменения.
Сервис платный, но за хороший продукт нужно платить. Я давно пользуюсь и пока он меня не подводил. Если хотите просто попробовать, то там есть возможность загрузить один проект бесплатно. Кстати, платный он только для дизайнера, разработчики всё бесплатно получают.
Если вы решите всё нарезать вручную, то тут нужно читать документацию представленную Apple/Google.
Там указаны все размеры и типы графики, которая нужна разработчику. (ссылки могу дать позже, на память не помню) После прочтения, вам нужно используя стандартные средства программ скетч/фотошоп сделать экспорт графики в спец. папку. А потом создать pdf документ в котором прописать все отступы и размеры, стили, используемые цвета. Также если вы используете нестандартные шрифты, то их тоже нужно будет положить в папочку, которую передадите разработчику.
Ещё стоит учесть, что помимо самой графики и размеров, вам нужно рассказать разработчикам, как именно будет меняться макет в зависимости от размера и положения (горизонтальный/вертикальный) экрана. Тут уже лучше просто обсудить этот момент в чатике с разработчиками. Потом уже можно будет задокументировать это в pdf, на всякий случай.

Худший ответ: Все парадигмы по дизайну есть на тех же ресурсах (apple, google) и ОЧЕНЬ детально расписаны. Просто берите и читайте.
Вопрос: Как закрыть модалку кликом вне окна?

Лучший ответ: Варианта 2
1) Вешаете @click.self на фон. https://jsfiddle.net/37e4wmgo/3/
2) Вешаете вот это https://www.npmjs.com/package/vue-click-outside на форму.

Худший ответ: У тебя есть два пути, в первом тебе надо искать нужный узел, во втором тебе надо расположить за элементом другой фоновый элемент, по которому кликаешь. Второй проще, но требует дополнительный элемент на странице(фон видимый/невидимый) и дополнительные стили для него, чтоб он был на весь экран, позади нужного элемента и он не должен быть родителем отображаемого элемента. 
При первом варианте ты вешаешь обработчик клика на body, в нем ты получишь текущий target по которому был произведен клик, далее тебе надо рекурсивно проверить, не является ли он потомком или самим отображаемым элементом, если нет, то клик был за пределами. Проверять надо e.target.parentNode.
Вопрос: Производительность Bootcamp и Parallels Desktop?

Лучший ответ: a что тут знать то?
буткамп - полноценная винда, как на писюке.
рельсы - виртуализация.
вещи по производительности и возможностям вообще не сравнимые.

Худший ответ: В игры не поиграть, а в остальном работает. Я правда перешел на vmware. У них ценовая политика проще. Хотя параллели немного побыстрее будут.
Вопрос: Правильно ли я сделал парсер?

Лучший ответ: Нет, это не из-за GIL.
Создавать количество тредов по количеству страниц неправильно. Создание треда - трудоёмкая задача для ОС.И правильно ли я вообще делаю?
Не совсем правильно, правильнее использовать то, что уже есть.
Если scrapy тебя не устраивает, ты можешь использовать ThreadPool'ы, вместо того, чтобы вручную управлять lowlevel api тредов. Примерно так:from concurrent.futures import ThreadPoolExecutor
from requests import Session

session = Session()

urls = [
    'https://toster.ru/q/372757',
    'https://toster.ru/',
]

with ThreadPoolExecutor(7) as pool:  # 7 - количество тредов
    for response in pool.map(session.get, urls):
        do_something_with_response(response)

Худший ответ: Почитайте про scrapy. Он делает всю грязную работу за вас, так что никаких проблем не будет.
Вопрос: Как избежать race condition при переводе денег?

Лучший ответ: SQL транзакции

Худший ответ: 1. получаем баланс пользователя из базы
2. проверяем хватает ли средств для перевода по полученному балансу в пункте 1
3. обновляем значения у одного пользователя и другого в базе
Вообще-то эти действия при желании выполняются одним атомарным запросом UPDATE ... JOIN ... WHERE.
После которого можно проверить, сколько строк изменил запрос - и либо сохранить информацию об успешно совершенной транзакции (у вас же не только сумма на счетах меняется, правда?), либо вернуть ответ о невозможности перевода.
Вопрос: Почему клиент видит рекламу, когда заходит на сайт через мобильный браузер?

Лучший ответ: У клиента Мегафон?
https://tjournal.ru/62611-pochemu-megafon-bessoves...
https://meduza.io/shapito/2017/11/22/megafon-nacha...

Худший ответ: Это оператор сотовой связи встраивает рекламу, сайт и хром тут не причем.
Вопрос: Где хранятся данные сессий PHP?

Лучший ответ: По-умолчанию, данные сессии хранятся в файлах и явно читаются в оперативную память во время выполнения скрипта. Место хранения можно изменить, реализовав собственный SessionHandler, но нужно понимать, что "в оперативной памяти" - понятие растяжимое и разделяемой памяти у php нет.
Почитайте документацию, там всё подробно описано.

Худший ответ: Используйте Memcached или Redis.
Вопрос: Почему setTimeout() срабатывает без второго аргумента?

Лучший ответ: у меня все сразу работает. Кроме того, если её запустить в консоли браузера хром, то кроме фразы 'hello' выводится какая-то цифра.
setTimeout() также как и setInterval() возвращают числовой идентификатор счетчика, чтоб можно было по нему отменить через clearTimeout(timeoutId)/clearInterval(intervalId)

Худший ответ: "Какая-то цифра" - это идентификатор таймаута, которую функция возвращает, может быть в дальнейшем использован для передачи в  функцию clearTimeout (отменяет таймаут).
А второй аргумент - задержка в милисекундах, если не задано, то используется 0, но в реальности это не значит, что функция будет мгновенно выполнена, может пройти 16 мс или даже больше (в зависимости от нагруженности браузера).
Вопрос: Что делать с домашним сервером?

Лучший ответ: Nidere, Есть мысли перенести хостинг своего сугубо утилитарного сайта с амазона сюда же.Не очень хорошая идея. 
Хотя какой- нибудь домашний сайт или что-то не сильно нужное и малокритичное перенести на домашний вполне можно.

Худший ответ: контролер домена, конекться к нему по рдп с доменного компа, ковыряй ад, политики и тд и тп, виртуализация приложений тоже интересная тема
Вопрос: Сортировка в JavaScript многомерных массивов по одному из параметров?

Лучший ответ: var item_unitaz = [
{'item_id':1, 'article':'DE23421312', 'name':'Привет','type':2},
{'item_id':2, 'article':'DE12421442', 'name':'Пока','type':32},
{'item_id':3, 'article':'DE78677833', 'name':'Воробей','type':68},
{'item_id':4, 'article':'DE23442235', 'name':'Петух','type':45}];

function compareUnitaz(a, b) {
     return a.type - b.type;
}
item_unitaz.sort(compareUnitaz)

Худший ответ: var item_unitaz = [
{'item_id':1, 'article':'DE23421312', 'name':'Привет','type':2},
{'item_id':2, 'article':'DE12421442', 'name':'Пока','type':32},
{'item_id':3, 'article':'DE78677833', 'name':'Воробей','type':68},
{'item_id':4, 'article':'DE23442235', 'name':'Петух','type':45}];

function compareUnitaz(a, b) {
  if (a.type > b.type) return 1;
  if (a.type < b.type) return -1;
  return 0;
}

item_unitaz.sort(compareUnitaz);
Вопрос: При включении компьютер издает три писка, и начинается загрузка windows. Из-за чего эти сигналы?

Лучший ответ: Взять мануал на материнскую плату и посмотреть, что там означают 3 писка.

Худший ответ: При прохождении процедуры POST комп может издавать различные звуки, таким способом он сообщает пользователю о возможных проблемах. Один бип - самый распространённый сигнал, это отсутствие проблем (всё ОК), а остальные сигналы у всех производителей разные. Если хотите подробностей - гуглите список этих сигналов от производителя вашей материнки (или BIOSа).
Если после вашего тройного бипа комп нормально грузится - значит, обнаруженная проблема не фатальна, с нею можно жить.
Вопрос: Как лучше сделать Сайт на WordPress для 2 стран и языков?

Лучший ответ: Здравствуйте!
Простой вариант использовать связку Wordpress + Woocommerce + WPML (мультиязычность). 
Другой вариант создать мультисайт на ВП + Woocommerce + woocommerce multistore
Как по мне, первый вариант проще и лучше...

Худший ответ: Wordpress + Woocommerce + Polylang как бесплатный вариант.
Вопрос: Парсинг url по шаблону в PHP?

Лучший ответ: Учите регулярные выражения.
p.s. А еще лучше - возьмите готовый компонент для маршрутизации.

Худший ответ: Написал скрипт, который бы решал данный вопрос:$patterns = [
    "node/%node",
    "node/%node/news",
    "album/%album/shadowbox/%photo",
    "media/photo",
    "blogs",
    "news",
    "node/%node/players",
];

$url = "node/11111/news";

foreach ($patterns as $pattern) {

    $result_pattern = preg_replace("/\/%[^\/]+/x", '/*', $pattern);

    $to_replace = ['/\\\\\*/'];
    $replacements = ['[^\/]+'];

    $result_pattern = preg_quote($result_pattern, '/');
    $result_pattern = '/^(' . preg_replace($to_replace, $replacements, $result_pattern) . ')$/';

    if (preg_match($result_pattern, $url)) {
        echo "<pre>" . $pattern . "</pre>"; 
    }

}
Можете проанализировать, достаточно ли он функционален в данном случае. И также хотел бы узнать, зачем в данной строке  $to_replace = ['/\\\\\*/'];  слэш для экранирования используется целых 5 раз (нашел такой спсособ в интернете).
Вопрос: Лучший способ редиректа с главной страницы?

Лучший ответ: одно из них временный редирект, другое постоянный.
для поисковиков разницы практически нет.
если использовать постоянный редирект, есть небольшой такой, но существенный нюанс.
этот редирект может закэшироваться постоянно на стороне клиента в браузере и его будет перекидывать с той ссылки постоянно.
если позже вы передумаете и нужно будет редиректить в другое место, вас будет ждать неприятный сюрприз.

Худший ответ: А можете уточнить,зачем вам перебрасывать с главной на внутреннюю? Возможно я не до конца понимаю суть вопроса
Вопрос: Как сделать адаптивное изображение затемненым с помощью css или js?

Лучший ответ: оборачиваешь изображение в див типа .img-wrap и ему задаешь :before {
  content: '';
  display: block;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0,0,0,0.5);
  z-index: 2;
}
а самому .img-wrap {
  position: relative;
  z-index: 1;
}

Худший ответ: Можно ещё box-shadow использовать.
Вопрос: С помощью каких инструментов можно верстать в компонентном стиле?

Лучший ответ: Вас не спасёт ни MODX, ни БЭМ, ни React'ы с Angular'ами. Если использование инструментов сборки вызывают сложности — не используйте. Целесообразность их использования приходит лишь с опытом понимания того, что вы реально можете автоматизировать, от «магии» толку мало.
Это я вам говорю, как адепт БЭМ-стека (ага, того самого, из Яндекса) и амбассадор MODX.

Худший ответ: Vue Cli + Bootsrap Vue
Не будет заморочек с формами, каруселями, табами , модальными окнами и т.д., там целый список компонентов + легко верстается под все устройство за счёт bootsrap grid
Вопрос: Как реализовать поиск в django/python/Mysql с учетом морфологии?

Лучший ответ: solr или elastic поможет вам.

Худший ответ: haystacksearch.org
ну и никто не отменял Сфинкс, но он для больших пацанов, для начинающих вполне пойдет Эластик
Вопрос: Какой брокер сообщений удовлетворяет всем условиям?

Лучший ответ: Redis?
Это redis simple message queue

Худший ответ: Apache Kafka? 
- правда не уверен, что там кафка удовлетворит все требования. Но гляньте, может там и есть такой функционал. Использовал в проекте для записи данных, передачи другим лицам и также считывания в той же последовательности.
Вопрос: Какая самая оптимальная БД для хранения больших объемов информации?

Лучший ответ: 1. Миллионы записей это вовсе НЕ большая БД. Для современной СУБД - это ерунда. Нынче и миллиарды записей не большая проблема, а вы о миллионах каких-то.
2. В БД очень много места занимают индексы. Если вы не будете их делать (и не будете использовать СУБД, которая сама создает индексы) - можете сэкономить и в 2 раза. Как вариант - индексировать каждый раз при запуске приложения.
3. Касается только постоянно изменяемой БД. В БД очень много места занимает журнал транзакций. Если использовать СУБД без журнала транзакций - сэкономите размер, но потеряете в надежности. Если изменения происходят редко и в небольших объемах - проблемы с этим нет.
4. Есть append only СУБД. Там нет фрагментации. Там нет журнала транзакций (или он сильно упрощен).
5. У вас не такие уж и большие объемы. Допустим даже у вас будет 8 строковых полей по 120 символов в каждом. Это около килобайта без индексов. Допустим их будет 1 миллион. Это около 1 гигабайта без индексов. 
6. Можно прекрасно разместить в оперативной памяти.
Если нужно прям-таки жестко сэкономить на дисковом пространстве, например, я бы взял СУБД in-memory (1 гигабайт данных + индексы на полгигабайта даже если - это не много для современного компьютера). А данные бы сжимал.

Худший ответ: Для малого объёма - только работа с узлами "дерева" Вас спасёт (и создание начального дерева).
А по остальным критериям - можно брать любую.