Было принято решение провести тестирование разных баз данных, в разных режимах.
Основная задача:
- Протестировать разные БД, на скорость в разных режимах работы.
- Изучить API и удобство работы с драйверами БД напрямую.
- Изучить удобстов работы с БД через фреймворк.
- Сделать анализ и графики по полученным результатам.
Есть желание получить ответ на вопрос как ведут себя в работе SQL и noSQL БД.
Второе желание получить ответ на вопрос разницу в цене между серьезным и облегченным БД.
Третье желание получить ответ цены производительности использования фрймворков.
Поэтому выбраны три БД, и два варианта использования.
Типы БД для тестирования:
- MongoDB - driver nodejs [mongo-db-driver];
- MongoDB - TypeORM [mongo-db-typeorm];
- Postgress - driver nodejs [postgress-driver];
- Postgress - TypeORM [postgress-typeorm];
- SQLite - driver nodejs [sqlite-driver];
- SQLite - TypeORM [sqlite-typeorm];
Режимы работы:
- Запись на запись в одну таблицу:
1.0. Запись 999000 записей из файла по object-id (uuid) [write-objid-999];
1.1. Запись 999000 записей из файла по number-id [write-numid-999];
1.2. Дозапись 1000 записей из оперативной памяти [write-objectid-1]; - Чтение из БД в 1000000 записей:
2.0. Выборка 50 объектов по object-id или uuid [read-objid-50];
2.1. Выборка 50 объектов по number-id [read-numid-50];
2.2. Выборка 50 объектов по уникальному и индексированному полю [read-unique-50];
2.3. Поиск по строковому полю 3 записей [find-string-3];
2.4. Поиск по другому строковому полю 50 записей [find-string-50];
2.5. Поиск по двум строковым полям 5 записей [find2-string-5];
2.6. Выборка по булевому значению (примерно 50% записей из 1000000) [select-bool-50per-1000];
2.7. Выборка по числу (примерно 1% записей из 1000000) [select-num-1per-1000]; - Запись 1000000 и 5000 связанных БД (foregnkey) записей:
3.1. Записать 999000 и 4950 связанных записей [write-fkeylink-999];
3.2. Дозаписать 1000 и 50 связанных записей [write-fkeylink-1]; - Чтение связанных записей:
4.1. Поиск 5 записей из малой таблицы [read-fkeylink-small-5];
4.2. Выборка объектов большой таблицы из 5 записей малой таблицы [read-fkeylink-big-5]; - Запись 1000000 и 5000 логически связанных (программная реализация) записей:
5.1. Записать 999000 и 4950 связанных записей [write-link-999];
5.2. Дозаписать 1000 и 50 связанных записей [write-link-1]; - Чтение связанных записей:
6.1. Поиск 5 записей из малой таблицы [read-link-small-5];
6.2. Выборка объектов большой таблицы из 5 записей малой таблицы [read-link-big-5]; - Обновление данных в большой таблице с 1000000 записей.
7.1. Полное обновление 50 записей [update-50];
7.2. Частичное (одно поле) обновление 50 записей [p-update-50];