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

Статус
Закрыто для дальнейших ответов.

svi2009

New member
Регистрация
13.12.2009
Сообщения
8
Реакции
0
Баллы
1
Возраст
44
Здравствуйте!

Помогите с выбором базы данных за таких условий:
- к-во записей: 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 ( ), импортировал txt-файл SQLite Maestro v12.1.0 в ANSI кодировке (кирилица)

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

OnThink

Member
Регистрация
10.07.2004
Сообщения
35
Реакции
1
Баллы
8
Like без перебора могут дать только Oracle, MS SQL и может быть DB2 (на счёт неё точно не знаю). Да и то не в переносимых версиях. Для базы таких размеров "переносимая" архитектура, сама по себе, косяк. Подымайте сервис где-нибудь на Amazon EC2 и не морочьте голову.
PS
Правда это будет уже называться не Like, а "полнотекстовый поиск".
 
Последнее редактирование модератором:

mfarouk

New member
Регистрация
01.11.2012
Сообщения
1
Реакции
0
Баллы
1
Oracle or MS Sql , MS Sql 2008 R2 are great
 

kindghost

New member
Регистрация
28.04.2009
Сообщения
7
Реакции
0
Баллы
1
Native language | Родной язык
Русский
Interbase подойдет (сейчас использую на 10 млн записей - проблем нет)
 

vovag3074

Member
Регистрация
15.01.2010
Сообщения
44
Реакции
74
Баллы
18
Возраст
48
Native language | Родной язык
Русский
Interbase подойдет (сейчас использую на 10 млн записей - проблем нет)

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

makermaden

New member
Регистрация
12.12.2012
Сообщения
6
Реакции
0
Баллы
1
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
Регистрация
08.01.2013
Сообщения
4
Реакции
1
Баллы
3
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
 
Последнее редактирование модератором:

Alexander_K

New member
Регистрация
16.09.2010
Сообщения
1
Реакции
0
Баллы
1
У многих производителей есть бесплатные версии своих БД, например Oracle, SQL Server и т.д., у них есть какие-то ограничения, но если про это почитать про них, может вы влезете в эти ограничения.
 

LenockaSeconka

Well-known member
Команда форума
Moderator
Premium
Регистрация
11.06.2007
Сообщения
319
Реакции
451
Баллы
63
Местоположение
Минск
Native language | Родной язык
Русский
он же написал

- подключение: универсализация (программа + база => скопировал в на другой ПК и запустил без дополнительных настроек и драйверов)
 

GerholdtSchnaps

New member
Регистрация
01.04.2009
Сообщения
6
Реакции
0
Баллы
1
Возраст
41
а кто мешает тащить, например, установщик sql server 2008 express (только engine) с собой и при запуске проверять установлен или нет. если нет - ставить молча. способ не самый лучший, но имхо для баз с 1 млн записей и больше мелкие базочки - несерьезно.

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

rm822

New member
Регистрация
15.09.2004
Сообщения
5
Реакции
0
Баллы
1
Возраст
42
я бы предложил sql server 2012 localdb
-20 мб инсталер
-чисто формальная установка - примерно 5 секунд и работает не под администратором
 

kaismh

New member
Регистрация
12.07.2012
Сообщения
13
Реакции
3
Баллы
3
Mysql 5.6 will work great
 

ordozz

New member
Регистрация
08.04.2006
Сообщения
3
Реакции
0
Баллы
1
Возраст
54
Местоположение
[email protected]
Сайт
vazfun.ru
Firebird с этим справится без проблем
 

rz3rr

New member
Регистрация
29.05.2009
Сообщения
20
Реакции
0
Баллы
1
Возраст
58
Индексация по Фамилии - это по текстовому полю??? Если да, то за счёт такой индексации размер БД будет огромен. И что за БД, которая на 300 тыс. записях поиск осуществляет за 10 секунд? Походу, архитектура БД построена кривовато. Либо очень слабый комп.
 

rz3rr

New member
Регистрация
29.05.2009
Сообщения
20
Реакции
0
Баллы
1
Возраст
58
И ещё. Маленький совет: если БД нормализована и оптимизирована под конкретную задачу (как у Вас), то любая будет работать шустро (не по 10 секунд, исключение - дамп и архивация).
 

_Dimon_

New member
Регистрация
25.04.2010
Сообщения
10
Реакции
0
Баллы
1
Advantage Database Server - очень хорошая БД. Может работать без сервера (локально, как вам и нужно). На родном сайте есть компоненты для делфи, включая XE3
 

Mr.Long

New member
Регистрация
09.01.2012
Сообщения
6
Реакции
0
Баллы
1
like '%искомое_значение%' будет тормозить везде, т.к. в этом случае не используется индекс.
like 'искомое_значение% будет использовать индекс

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

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

alexskiv

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

Mr.Skinner

New member
Регистрация
13.09.2009
Сообщения
11
Реакции
0
Баллы
1
Сайт
mrskinner.pdj.ru
Firebird-2.5.x embed! кучка dll-к и не каких инсталлеров на "овер дофига" записей не блоб данных работает прекрасно.
 

tohhot

Banned
BANNED
Регистрация
02.05.2013
Сообщения
1
Реакции
0
Баллы
0
I would suggest sql server 2012
 

NkzAlex

New member
Регистрация
22.05.2013
Сообщения
4
Реакции
0
Баллы
1
Ms Sql Express самая простая и дружелюбная, а 50 млн это немного
 

shalomb

New member
Регистрация
17.11.2006
Сообщения
4
Реакции
0
Баллы
1
Возраст
64
Местоположение
Israel
MS SQL 2012 express do 50 gb na odnu bazu
 

Mitrofan78

New member
Регистрация
11.05.2006
Сообщения
5
Реакции
0
Баллы
1
Возраст
45
Местоположение
Russia
Юзаем MSSQL для хранения времянки (временных рядов)...
Запись в базу 1 раз в секунду...
За пол года база разрослась до 40 Гб...
Количество записей 15 млн строк...
 
Статус
Закрыто для дальнейших ответов.
198 154Темы
635 125Сообщения
3 618 410Пользователи
MFzoneНовый пользователь
Верх