Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 База данных только для чтения, выжать производительность по максимуму  [new]
Senegura
Member

Откуда:
Сообщений: 17
Всем привет,
помогите определится с базой данных для нового проекта. Самое главное требование, производительность.

- Данные обнавляются раз в день, остальное время БД используется только для чтения.
- Все данные денормализированы, то есть нет никаких Joinов, но есть поиск по индексу и запросы типа "Like".
- Всё далжно работать Линуксе.
- Б.Д. естественно должна быть бесплатна.
- Б.Д. используется в проекте под Web.
- На одном сервере планируется около 200 баз данных в каждой из них по 100к - 400к записей.

Sql server express, Postgres, My Sql может NoSql Монго, Аранго?

Буду рад любым мыслям на этот счёт.
23 янв 19, 20:27    [21792642]     Ответить | Цитировать Сообщить модератору
 Re: База данных только для чтения, выжать производительность по максимуму  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48430

Тут программист нужен.

Posted via ActualForum NNTP Server 1.5

23 янв 19, 22:16    [21792689]     Ответить | Цитировать Сообщить модератору
 Re: База данных только для чтения, выжать производительность по максимуму  [new]
experience
Member

Откуда: Новосибирск
Сообщений: 154
Senegura
- Данные обнОвляются раз в день, остальное время БД используется только для чтения.
- Все данные денормализированы, то есть нет никаких Joinов, но есть поиск по индексу и запросы типа "Like".


Если бы у проекта http://hytechdb.ru была менее печальная и более предсказуемая судьба, это был бы идеальный кандидат под эти два пункта требований.
Возможно отдаёт найденное как и все прочие но на плоских таблицах подсчитывает количество записей удовлетворяющих множественным и сложным лайкам(like) практически мгновенно.
24 янв 19, 08:18    [21792825]     Ответить | Цитировать Сообщить модератору
 Re: База данных только для чтения, выжать производительность по максимуму  [new]
Senegura
Member

Откуда:
Сообщений: 17
Dimitry Sibiryakov
Тут программист нужен.

Спасибо это я, поэтому обратился к форуму, т.к. 100% здесь есть люди которые разбираются в базах данных лучше меня.
Похоже придётся самому сделать бенчмарки. Выбор стоит между Sql Server Express и Postgresql, т.к. .NET стек приоритете (.Net > Java).


Короче нужна База данных, которая при максимальной нагрузке, даст наилучшие результаты по индексам, запросы "Like" и фильтрация данных по нескольким полям.
24 янв 19, 10:55    [21793032]     Ответить | Цитировать Сообщить модератору
 Re: База данных только для чтения, выжать производительность по максимуму  [new]
experience
Member

Откуда: Новосибирск
Сообщений: 154
Senegura,
http://www.minimdb.com/mbook/mumps_dbms.pdf

Глава 3
Индексация данных
стр. 227

Если вы вольны сами формировать структуру хранения может быть полезна оч. старая и оч. добрая технология.

ИМХО sql и его like в частности оч. хорош при анализе чужих данных в случае не возможности их реструктуризировать под нужные запросы, т.е. их(запросов) число и структура не известны. В противном случае реорганизация хранения под требования может оказаться единственно верным решением с точки зрения эффективности.
24 янв 19, 12:52    [21793231]     Ответить | Цитировать Сообщить модератору
 Re: База данных только для чтения, выжать производительность по максимуму  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
Senegura, а запросы типа like по какому набору данных? По фамилии имени отчеству или по какому-нибудь описанию? И пример.
24 янв 19, 12:56    [21793236]     Ответить | Цитировать Сообщить модератору
 Re: База данных только для чтения, выжать производительность по максимуму  [new]
Senegura
Member

Откуда:
Сообщений: 17
Озверин
Senegura, а запросы типа like по какому набору данных? По фамилии имени отчеству или по какому-нибудь описанию? И пример.


По юникодовой строке ограниченой длинны. Что то типа nvarchar(200) имя + фамилия вместе.
Грубо говоря обычный стринговый индекс в одной колонке, не разбит на 2 поля и ограниченой длинны, не текст.
24 янв 19, 13:13    [21793270]     Ответить | Цитировать Сообщить модератору
 Re: База данных только для чтения, выжать производительность по максимуму  [new]
Senegura
Member

Откуда:
Сообщений: 17
experience
Senegura,
http://www.minimdb.com/mbook/mumps_dbms.pdf

Если вы вольны сами формировать структуру хранения может быть полезна оч. старая и оч. добрая технология.



Спасибо за линк, что то подобное искал. т.к. был конечно соблазн самому реализовать некоторые аспекты.
Но думую, что в 2019 не стоит заниматься изобретением велосипеда. В любом случае профисиональная база данных сделает это лучше меня.
24 янв 19, 13:21    [21793284]     Ответить | Цитировать Сообщить модератору
 Re: База данных только для чтения, выжать производительность по максимуму  [new]
experience
Member

Откуда: Новосибирск
Сообщений: 154
Senegura
experience
Senegura,
http://www.minimdb.com/mbook/mumps_dbms.pdf

Если вы вольны сами формировать структуру хранения может быть полезна оч. старая и оч. добрая технология.



Спасибо за линк, что то подобное искал. т.к. был конечно соблазн самому реализовать некоторые аспекты.
Но думаю, что в 2019 не стоит заниматься изобретением велосипеда. В любом случае профессиональная база данных сделает это лучше меня.

В дополнение к спасибо )))
У вас в требованиях: web и бесплатно...
https://www.sql.ru/forum/1307574/opublikovan-fastcgi-dlya-gt-m
24 янв 19, 14:00    [21793344]     Ответить | Цитировать Сообщить модератору
 Re: База данных только для чтения, выжать производительность по максимуму  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48430

Senegura
Короче нужна База данных, которая при максимальной нагрузке, даст наилучшие результаты по
индексам, запросы "Like" и фильтрация данных по нескольким полям.

std::map вполне даст наилучшие результаты. Но программист таки понадобится.

Posted via ActualForum NNTP Server 1.5

24 янв 19, 14:20    [21793372]     Ответить | Цитировать Сообщить модератору
 Re: База данных только для чтения, выжать производительность по максимуму  [new]
Senegura
Member

Откуда:
Сообщений: 17
Senegura
- На одном сервере планируется около 200 баз данных в каждой из них по 100к - 400к записей.
.


Dimitry Sibiryakov
std::map вполне даст наилучшие результаты. Но программист таки понадобится.


Програмист посоветовавший std::map не понадобится.
24 янв 19, 15:05    [21793441]     Ответить | Цитировать Сообщить модератору
 Re: База данных только для чтения, выжать производительность по максимуму  [new]
loki1984
Member

Откуда:
Сообщений: 343
ClickHouse в облаке или без облака
24 янв 19, 17:15    [21793664]     Ответить | Цитировать Сообщить модератору
 Re: База данных только для чтения, выжать производительность по максимуму  [new]
mayton
Member

Откуда: loopback
Сообщений: 42477
Senegura
Dimitry Sibiryakov
Тут программист нужен.

Спасибо это я, поэтому обратился к форуму, т.к. 100% здесь есть люди которые разбираются в базах данных лучше меня.
Похоже придётся самому сделать бенчмарки. Выбор стоит между Sql Server Express и Postgresql, т.к. .NET стек приоритете (.Net > Java).


Короче нужна База данных, которая при максимальной нагрузке, даст наилучшие результаты по индексам, запросы "Like" и фильтрация данных по нескольким полям.


Если быть дотошным. То твой задание - непонятно.
Нужно включить все возможности логгирования и собрать все виды запросов за 1 типичный день.
Выделить из них критичные.
И посмотреть что программист может сделать для производительности.
Посокльку система обновляется раз в день - то можно кешировать все что можно в приложении.
LIKE - expressions надо проанализировать и понять что на самом деле искал пользователь.
Часть этих запросов покрываются такими структурами как Radix-tree.

Правильно было сказано что для решения этой задачи нужен программист. Таких волшебных
опций чтобы все летало в PG/MySQL/Sql нету. Они по дефолту достаточно хороши. И твикать их
надо с умом.
24 янв 19, 21:45    [21793818]     Ответить | Цитировать Сообщить модератору
 Re: База данных только для чтения, выжать производительность по максимуму  [new]
Senegura
Member

Откуда:
Сообщений: 17
mayton
И посмотреть что программист может сделать для производительности.
Посокльку система обновляется раз в день - то можно кешировать все что можно в приложении.
LIKE - expressions надо проанализировать и понять что на самом деле искал пользователь.


Не совсем понятно почему люди продолжают писать, что нужен программист. Это из серии советов Виталия Кличко: "Чем старше человек, тем больше ему лет."

Программист понадобится в любом случае.
Система публикует статистику для игроков онлайн игры. Там больше милиона пользователей, но на пиках там сидит до 100 человек.
Естественно, что всё что возможно там закэшировано, кэшировать что то на уровне одного юзера нет смысла. Radix непонятно как мне поможет тут, записовать милионы игроков в словарь?
Сейчас возникло желание перевести всё под Линукс и на новый .NET ну либо Java.

Из требований сейчас только максимальная производительность индексов под нагрузкой. Индекс 1 строковое поле, имя игрока в игре, а также индексы фильтрации, по дате например.
26 янв 19, 17:10    [21794854]     Ответить | Цитировать Сообщить модератору
 Re: База данных только для чтения, выжать производительность по максимуму  [new]
Senegura
Member

Откуда:
Сообщений: 17
loki1984
ClickHouse в облаке или без облака


Что то типо такого я и искал. Протестирую Clickhouse как он в сравении с postgresql для моей специфической цели.
26 янв 19, 17:13    [21794855]     Ответить | Цитировать Сообщить модератору
 Re: База данных только для чтения, выжать производительность по максимуму  [new]
Senegura
Member

Откуда:
Сообщений: 17
Да зыбыл ещё кое что:
ненужен Fault tolerance, журнал и Isolation Level может быть низким, т.к. база данных побликует всё 1 раз в день и вслучае ошибки, просото переопубликует данные на следующий день.
26 янв 19, 17:27    [21794860]     Ответить | Цитировать Сообщить модератору
 Re: База данных только для чтения, выжать производительность по максимуму  [new]
mayton
Member

Откуда: loopback
Сообщений: 42477
Senegura
mayton
И посмотреть что программист может сделать для производительности.
Посокльку система обновляется раз в день - то можно кешировать все что можно в приложении.
LIKE - expressions надо проанализировать и понять что на самом деле искал пользователь.


Не совсем понятно почему люди продолжают писать, что нужен программист. Это из серии советов Виталия Кличко: "Чем старше человек, тем больше ему лет."

За свою практику я побыл 6 лет DBA. И оставшиеся годы - разработчиком. И я скажу DBA в общем понимании этого
слова обладает большей экспертизой в области оптимизации запросов. Я много общался с разработчиками
SQL и могу сказать что на фоне того что у них есть знания в обычных ЯП (C#, Java), в области баз данных
у них знания - поверхностные. Обычно разработчик очень быстро охладевает к самой теме оптимизации запросов
просто попробовав 2-3 варианта и далее "забивает". У него как правило есть приоритетные вещи а оптимизацию
можно скинуть одельной эпикой на сектор поддержки БД. По крайней мере так было в эпоху 2000х. Доткомы.
Двузвенки. Толстые клиенты.

Поэтому и эту задачу можно рассматривать в разрезе 2х сценариев. Один сценарий - это создание
систем материализованных views на стороне SQL таким образом чтобы LIKE запросы заработали быстрее.
Это сделает DBA. И второй сценарий - это создание на уровне приложения кешей которые сделают то-же самое.
Сейчас сказать однозначно что лучше невозможно. У нас мало статстики по задаче. У нас нет оценок стоимости
доработки. И нет понимания какая экспертиза есть у команды. И сколько времени дано и денег.

Но учитывая последние тренды в сегменте It. Я сказал что лучше - программист.
Тоесть мое предположение о том что нужен программист звучало именно как
выбор между программистом и DBA.
26 янв 19, 18:38    [21794888]     Ответить | Цитировать Сообщить модератору
 Re: База данных только для чтения, выжать производительность по максимуму  [new]
Дегтярев Евгений
Member

Откуда: Барнаул
Сообщений: 1690
Senegura
Система публикует статистику для игроков онлайн игры. Там больше милиона пользователей, но на пиках там сидит до 100 человек

до 100 или нолей не забыли дописать?

Senegura
Radix непонятно как мне поможет тут, записовать милионы игроков в словарь?

Это проблема?
26 янв 19, 19:43    [21794916]     Ответить | Цитировать Сообщить модератору
 Re: База данных только для чтения, выжать производительность по максимуму  [new]
mayton
Member

Откуда: loopback
Сообщений: 42477
Senegura
Radix непонятно как мне поможет тут, записовать милионы игроков в словарь?

Ну.. вы сначала почитайте про подобные структуры данных. Их много. Сюда-же красно-черные деревья
и прочее. Это все сущности мира "оперативной памяти". Тоесть то что гарантировано не свапируется.
И если ваш замечательный справочник уложится в 2-4-8 Гигабайт. А я надеюсь что уложится потому-что
миллионы - это не так уж много. Миллионы - это приставка мега*. А миллиарды - это гига*
Вы - инженер? Должны понимать порядок измерений. И в даннмо случае если у вас на борту миллиарды
то речь идет о преимуществе в три порядка.
26 янв 19, 19:54    [21794922]     Ответить | Цитировать Сообщить модератору
 Re: База данных только для чтения, выжать производительность по максимуму  [new]
mayton
Member

Откуда: loopback
Сообщений: 42477
Senegura
Сейчас возникло желание перевести всё под Линукс и на новый .NET ну либо Java.

Вообще непонятно... На чем основано это отчаянное... безосновательное желание. Вроде как
последняя попытка спасти ситуацию. Согласитесь? Как-то так выглядит..

Если у вас есть код под .Net и он уже написан и протестирован - пускай он и работает
под Windows. Потому что чудовищное количество архитетурных вопросов которые надо
решать при такой миграции не поддается оценке. Тут - просто ваши деньги и ваши ресурсы
и ваша интуиция должны подсказать.

Но я-бы не советовал.
26 янв 19, 19:59    [21794924]     Ответить | Цитировать Сообщить модератору
 Re: База данных только для чтения, выжать производительность по максимуму  [new]
Senegura
Member

Откуда:
Сообщений: 17
mayton
Вообще непонятно... На чем основано это отчаянное... безосновательное желание. Вроде как
последняя попытка спасти ситуацию. Согласитесь? Как-то так выглядит..

Потому что чудовищное количество архитетурных вопросов которые надо
решать при такой миграции не поддается оценке.

Но я-бы не советовал.


На удивление, некоторые проекты, мигрирую довольно легко с .NET на .NET CORE.
При условии, если они неплохо написаны и нету плаформо-зависимого кода.

Помню, как то у меня заняло всего 1 рабочий день на миграцию, в основном из за работы с базами данных. Новая EF Core работает немного по другому.
29 янв 19, 15:28    [21796953]     Ответить | Цитировать Сообщить модератору
 Re: База данных только для чтения, выжать производительность по максимуму  [new]
Senegura
Member

Откуда:
Сообщений: 17
mayton
Ну.. вы сначала почитайте про подобные структуры данных. Их много. Сюда-же красно-черные деревья
и прочее. Это все сущности мира "оперативной памяти".


В моём случае всё гораздо проще, ненужно изобретать велосипед, я могу просто всё хранить так, как это будет использовано в Web. Например у меня есть Web Grid я могу просто держать это в обычном листе.

Но я не уверен, что пихать всё в оперативную память это правильное решение, т.к. со временем количество юзеров только увеличивается.
29 янв 19, 15:33    [21796962]     Ответить | Цитировать Сообщить модератору
 Re: База данных только для чтения, выжать производительность по максимуму  [new]
Senegura
Member

Откуда:
Сообщений: 17
Дегтярев Евгений
до 100 или нолей не забыли дописать?

К сожалению тормоза начинаются даже немного раньше.

Дегтярев Евгений
Это проблема?

Не уверен, не привык пихать всё подряд в оперативку.
29 янв 19, 15:37    [21796969]     Ответить | Цитировать Сообщить модератору
 Re: База данных только для чтения, выжать производительность по максимуму  [new]
mayton
Member

Откуда: loopback
Сообщений: 42477
У меня - большой скепсис на эту тему. Если под миграцией на NET CORE подразумевается
миграция на Linux (NET CORE) то все ваши знания в администрировании Windows - нивелируются.
Нужно получать новые знания и нужно научится решать новый пласт вопросов.
Как это будет выглядеть во времени - мне сложно представить. Ну или здесь
просто высокий риск залипнуть с каким-то пустяком на долгий срок.
29 янв 19, 15:37    [21796970]     Ответить | Цитировать Сообщить модератору
 Re: База данных только для чтения, выжать производительность по максимуму  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48430

Senegura
Но я не уверен, что пихать всё в оперативную память это правильное решение, т.к. со
временем количество юзеров только увеличивается.

Поэтому в оперативной памяти следует держать только активную их часть. Остальное и на
диске может полежать.

Posted via ActualForum NNTP Server 1.5

29 янв 19, 16:34    [21797068]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить