База данных на 1 млн. записей

Status
Not open for further replies.

svi2009

Member
Joined
Dec 13, 2009
Messages
8
Reaction score
0
Age
45
Здравствуйте!

Помогите с выбором базы данных за таких условий:
- к-во записей: 1 млн. (в планах до 50 млн.)
- к-во полей: до 30
- информация: текст (списки людей + информация о них);
- задачи: первостепенное - поиск и выборки, второстепенное - редактирование;
- ключевой момент: первостепенный - скорость выборки, второстепенный - размер (в границах 10-30 Гб)
- ОС: Windows
- обслуживание: программа на Delphi;
- локализация: локальная;
- подключение: универсализация (программа + база => скопировал в на другой ПК и запустил без дополнительных настроек и драйверов)

На сегодня проработал 2 варианта:
1) NexusDB - импортнул 300 тыс. записей, проиндексировал по Фамилии
плюс - неплохая скорость выборки на 300 тыс. записях (точный запрос "=" - порядка 10 с., условный "like" - порядка 30 с.) (норма ...)
минус - база уже переваливает за 3 Гб, т.е. на 50 млн. записях это будет порядка 500 Гб (перебор ...)

2) SQLite - импортнул 1 млн. записей, проиндексировал по Фамилии
плюс - небольшой размер базы (около 600 Мб), т.е. на 50 млн. записях это будет порядка 30 Гб (норма ...)
плюс - отличная скорость выборки при точном запросе ("=") - 3-5 с
(супер ...)
минус - при условной выборке ("like") скорость неприемлемая - порядка 5 мин. (перебор ...)

База формируется из txt-файла (экспорт из БД Cronos).

Может я чего-то не учел в SQLite. Под Delphi подключался с помощью DISQLite3 v2.4.5 from Yunga (http://www.yunqa.de), импортировал txt-файл SQLite Maestro v12.1.0 в ANSI кодировке (кирилица)

Помогите советом или подскажите еще варианты реализации задачи.
 

OnThink

Member
Joined
Jul 10, 2004
Messages
35
Reaction score
1
Like без перебора могут дать только Oracle, MS SQL и может быть DB2 (на счёт неё точно не знаю). Да и то не в переносимых версиях. Для базы таких размеров "переносимая" архитектура, сама по себе, косяк. Подымайте сервис где-нибудь на Amazon EC2 и не морочьте голову.
PS
Правда это будет уже называться не Like, а "полнотекстовый поиск".
 
Last edited by a moderator:

kindghost

Member
Joined
Apr 28, 2009
Messages
7
Reaction score
0
Interbase подойдет (сейчас использую на 10 млн записей - проблем нет)
 

vovag3074

Member
Joined
Jan 15, 2010
Messages
44
Reaction score
74
Age
48
Interbase подойдет (сейчас использую на 10 млн записей - проблем нет)

Firebird подойдет тоже. У самого база с 30 млн. записей. Но по стандарту SQL 92 поиск по условию LIKE безиндексный. Ищу методом SRARTING WITH иначе нужно делать что- то вроде полнотекстового поиска.
 

makermaden

Member
Joined
Dec 12, 2012
Messages
6
Reaction score
0
I'm using SQL Server Express with over 4 million record (world cities table).

A very simple query for autocomplete by city name takes between 5 to 13 ms (3 chars as minimum input).

City name field is obviously indexed.
 

-m-

New member
Joined
Jan 8, 2013
Messages
4
Reaction score
1
MariaDB + sphinx for very quick full text search (about 30ms for 1M row).
Little or no overhead

Добавлено через 1 минуту
... PS I don't know exactly how to index cirillic text, I work on "latin" keymap
 
Last edited by a moderator:

Alexander_K

New member
Joined
Sep 16, 2010
Messages
1
Reaction score
0
У многих производителей есть бесплатные версии своих БД, например Oracle, SQL Server и т.д., у них есть какие-то ограничения, но если про это почитать про них, может вы влезете в эти ограничения.
 

LeshaRB

Staff member
Premium
Joined
Jun 11, 2007
Messages
319
Reaction score
451
Location
Минск
он же написал

- подключение: универсализация (программа + база => скопировал в на другой ПК и запустил без дополнительных настроек и драйверов)
 
Joined
Apr 1, 2009
Messages
6
Reaction score
0
Age
41
а кто мешает тащить, например, установщик sql server 2008 express (только engine) с собой и при запуске проверять установлен или нет. если нет - ставить молча. способ не самый лучший, но имхо для баз с 1 млн записей и больше мелкие базочки - несерьезно.

И про NexusDB немного - вот до чего ж замороченная БД. Уж лучше CE взять, но для него надо с собой таскать фреймворк.
 

rm822

Member
Joined
Sep 15, 2004
Messages
5
Reaction score
0
Age
43
я бы предложил sql server 2012 localdb
-20 мб инсталер
-чисто формальная установка - примерно 5 секунд и работает не под администратором
 

rz3rr

Member
Joined
May 29, 2009
Messages
20
Reaction score
0
Age
58
Индексация по Фамилии - это по текстовому полю??? Если да, то за счёт такой индексации размер БД будет огромен. И что за БД, которая на 300 тыс. записях поиск осуществляет за 10 секунд? Походу, архитектура БД построена кривовато. Либо очень слабый комп.
 

rz3rr

Member
Joined
May 29, 2009
Messages
20
Reaction score
0
Age
58
И ещё. Маленький совет: если БД нормализована и оптимизирована под конкретную задачу (как у Вас), то любая будет работать шустро (не по 10 секунд, исключение - дамп и архивация).
 

_Dimon_

Member
Joined
Apr 25, 2010
Messages
10
Reaction score
0
Advantage Database Server - очень хорошая БД. Может работать без сервера (локально, как вам и нужно). На родном сайте есть компоненты для делфи, включая XE3
 

Mr.Long

Member
Joined
Jan 9, 2012
Messages
6
Reaction score
0
like '%искомое_значение%' будет тормозить везде, т.к. в этом случае не используется индекс.
like 'искомое_значение% будет использовать индекс

Если речь идет именно о поиске текста, то хорошие результаты даст полнотекстовый поиск SQL Server. Но это уже Enterprise версия.

Поэтому копайте в сторону SQLLite, Firebird + проектирование архитектуры, настройка запрос на оптимизацию (отказаться от like %%)
 

alexskiv

New member
Joined
Mar 12, 2013
Messages
4
Reaction score
0
MS SQL EXPRESS!
Решал подобную задачу ... получилось на 100%
Проблему переноса решил методом Инсталяция + автоматическая установка MS SQL + при первом старте приложения проверка на наличие БД. Если нет, команда подключить файлы в качестве источника данных.
Мои "специалисты" переносили систему попивая кофе и вися на телефоне.:beer::beer:
 

Mr.Skinner

Member
Joined
Sep 13, 2009
Messages
11
Reaction score
0
Website
mrskinner.pdj.ru
Firebird-2.5.x embed! кучка dll-к и не каких инсталлеров на "овер дофига" записей не блоб данных работает прекрасно.
 
Status
Not open for further replies.
Top