SQLite vs MySQL: Выбор БД для ZennoPoster [+ Шаблон БД SQLite]

meriin

Client
Регистрация
30.01.2020
Сообщения
66
Благодарностей
69
Баллы
18
Всем привет!

На форуме регулярно возникают вопросы по хранению и обработке данных в шаблонах. Многие, новички и не только, продолжают использовать бесконечные списки и таблицы в ZennoPoster. Я их прекрасно понимаю — когда-то и мне работа с базами данных казалась чем-то для избранных.
Но, скажу однозначно: преодолев этот барьер, вы выйдете на новый уровень. Работа шаблонов станет стабильнее, а многие технические проблемы исчезнут сами собой.
Какую же БД выбрать? Давайте разберем двух главных кандидатов: SQLite и MySQL (и подобные серверные СУБД).

Ключевое отличие: Архитектура
  • SQLite — это файл-база. Вся БД — это один файл на диске (например, project.db). Не требует установки сервера. (Необходимо только подключить к шаблону библиотеку - System.Data.SQLite.dll).
  • MySQL, PostgreSQL — это клиент-серверные системы. База работает как отдельный сервис, к которому ZennoPoster подключается по сети.
Почему SQLite — идеальный старт для ZennoPoster
  • Простота и портативность. Скопировали файл .db рядом с шаблоном — и база готова. Перенести проект на другой ПК — просто скопируйте папку.
  • Нулевая администрация. Не нужно настраивать сервер, управлять пользователями или открывать порты.
  • Высокая скорость. Для записи прокси, обновления статусов аккаунтов или работы с куками SQLite очень быстр, так как все данные локальны.
  • Надежность. База строго соблюдает принципы ACID. Риск повреждения данных минимален.
Ограничение: SQLite лучше подходит для проектов с малым количеством одновременных потоков на запись. SQLite допускает множественное чтение, но только одну запись в один момент времени (последовательная запись).
Когда переходить на MySQL?
MySQL — решение для сложных и высоконагруженных проектов.

Выбирайте MySQL, если:

  • Шаблон работает в 10+ потоков. MySQL эффективно обрабатывает concurrent-операции записи и чтения.
  • Вы работаете в команде. Несколько шаблонов или пользователей должны собирать данные в одну базу.
  • Данные нужны другим сервисам. К вашей БД может подключаться не только ZennoPoster, но и ваш сайт или приложение.
  • Работаете с большими данными. Для проектов с десятками миллионов записей и сложными запросами.
Минус MySQL: требует установки, настройки сервера и менее портативен.
Итог: Что выбрать?
  • Начинайте с SQLite. Если вы новичок в БД и ваш проект работает на одном компьютере, вы получите 90% преимуществ с 10% усилий.
  • Переходите на MySQL, когда упретесь в ограничения. Когда шаблону потребуется масштабирование на десятки потоков или централизованное хранилище для нескольких ПК.
Ну и бонусом хочу представить шаблон для автоматизированного создания файла БД SQLite с необходимыми вам таблицами в ней и полностью готовой к использованию в вашем проекте. Шаблон имеет два режима работы. В первом режиме создаем файл БД (без таблиц).
  • Выбор режима работы (Создание БД).
  • Название Базы данных:
  • Директория для сохранения БД:
137798

Во втором режиме создаем таблицу с необходимыми нам параметрами, если необходимо несколько таблиц - повторяем работу во втором режиме нужное количество раз. По окончании наша база готова к работе.

  • Выбор режима работы (Создание таблицы в готовой БД).
  • Название Базы данных:
  • Путь к файлу БД:
  • Название таблицы:
  • Параметры таблицы (CSV формат):
137799

Как составить описание таблицы:
id,INTEGER,PRIMARY KEY AUTOINCREMENT
name,TEXT,NOT NULL
email,TEXT,UNIQUE
age,INTEGER
url,TEXT,NOT NULL
Одна строка = один столбец.
Разделитель: запятая.
Первое значение - название столбца (id, name, email, age, url)
Второе значение - типы данных
  • INTEGER - целые числа
  • TEXT - текст/строки
  • REAL - дробные числа
  • BLOB - бинарные данные
  • NUMERIC - числовые данные
  • BOOLEAN - логические значения
Третье значение - дополнительные параметры
  • PRIMARY KEY - первичный ключ
  • AUTOINCREMENT - автоинкремент (только для INTEGER)
  • NOT NULL - обязательное поле
  • UNIQUE - уникальные значения
  • DEFAULT значение - значение по умолчанию
  • CHECK(условие) - проверка условий

Прежде чем использовать шаблон, необходимо cкопировать файл
System.Data.SQLite.dll в папку ExternalAssemblies вашего ZennoPoster.
Файл System.Data.SQLite.dll лежит в архиве.
 

Вложения

Последнее редактирование:

seodamage

Client
Регистрация
08.09.2014
Сообщения
257
Благодарностей
89
Баллы
28

molotok

Client
Регистрация
17.04.2015
Сообщения
747
Благодарностей
373
Баллы
63
Почему бы стразу на PostgreSQL не переходить?
 

meriin

Client
Регистрация
30.01.2020
Сообщения
66
Благодарностей
69
Баллы
18
Почему бы стразу на PostgreSQL не переходить?
Считаю, что для новичка в БД, который только переходит с таблиц ZennoPoster, она создаст те же первоначальные сложности, что и MySQL, если не больше. Наверное начинать нужно с самого простого инструмента и по мере необходимости переходить к более сложным.
 

искра

Client
Регистрация
07.06.2014
Сообщения
292
Благодарностей
26
Баллы
28
Считаю, что для новичка в БД, который только переходит с таблиц ZennoPoster, она создаст те же первоначальные сложности, что и MySQL, если не больше. Наверное начинать нужно с самого простого инструмента и по мере необходимости переходить к более сложным.
я понимаю что раньше надо было из простого к сложному переходить а сейчас же при наличии ии можно разные инструменты юзать не понимая все нюансы
 

Чешир

Client
Регистрация
27.06.2014
Сообщения
1 721
Благодарностей
1 078
Баллы
113
Спасибо! Сам давно думал о БД
 
  • Спасибо
Реакции: meriin

look2009

Client
Регистрация
03.08.2020
Сообщения
17
Благодарностей
3
Баллы
3
Если нужна скорость, и независимость от библиотек на хосте, то sqllite, т.к. sqllite просто файл, а либа на разных языках есть, если хост свой то ставим mysql и ему подобные и не паримся. Была задача как-то софт написать, условие - запуск без зависимостей, наличие бд, 1000 потоков на 1 ядре, итог - написан кеш бд в памяти и раз в минуту выгрузка апдейта бд в sqllite на 1 коннекте, при запуске софта подтягивание данных из бд в кеш и по кругу. Да софт можно было запустить под любым пользователем и правами, достаточно было прав записи хотябы в 1 дирректорию 744 и всё ехало. С mysql такое не пройдёт, вот где разница, а с нормальной оптимизацией конфига под задачи mysql для любых задачь подойдёт на локальном ПК. Учить можно, что угодно хоть sqlite или mysql, но mysql для старта предпочтительнее, по синтаксису различие минимальное, а инфы по mysql в разы больше.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)