Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.02.29;
Скачать: [xml.tar.bz2];

Вниз

Движок базы данных   Найти похожие ветки 

 
Анонимщик   (2004-02-02 17:19) [0]

Кто подскажет движок базы данных, который бы позвоялял:
1. Хранить все данные в памяти.
2. Имел бы триггеры и хранимые процедуры.
3. Давал возможность накладывать первичные/вторичные индексы.
4. Не был блокировочником.
5. Позволял бы многопользовательский доступ, причем один экземпляр для чтения и записи, остальные - только для чтения.


 
MV   (2004-02-02 17:29) [1]

С требованием

1. Хранить все данные в памяти

- никакой.

Вариант: Delphi.


 
HSolo   (2004-02-02 17:45) [2]

IB / FB / Yaffil


 
MV   (2004-02-02 17:46) [3]

IB / FB / Yaffil
...в памяти?


 
Анонимщик   (2004-02-02 17:49) [4]

Я же сказал: в памяти и не блокировочник


 
sniknik   (2004-02-02 17:51) [5]

в памяти?
> 2. Имел бы триггеры и хранимые процедуры.
????

> 5. Позволял бы многопользовательский доступ, причем один экземпляр для чтения и записи, остальные - только для чтения.
?????????

нет таких.


 
Анонимщик   (2004-02-02 17:53) [6]

Ладно, хранимые процедуры убираем, вместо триггеров достаточно автоинкрементных полей, даже и их не нужно, если что.


 
HSolo   (2004-02-02 17:54) [7]

А что Вы понимаете под "в памяти" ?


 
MV   (2004-02-02 17:57) [8]

2. Имел бы триггеры и хранимые процедуры.
3. Давал возможность накладывать первичные/вторичные индексы.
4. Не был блокировочником.

- и халявный - FireBird.

5. Позволял бы многопользовательский доступ, причем один экземпляр для чтения и записи, остальные - только для чтения.

- насчет экземпляров - это как?


 
sniknik   (2004-02-02 17:58) [9]

а многопользовательский доступ? оставляем?

хотя если подумать, мидас это для вас. ;о) + клиент/ADO датасет (позволяют рекордсеты в памяти)
все примочки от sql сервера делаем руками.


 
Анонимщик   (2004-02-02 17:59) [10]

Чтоб на диск не писалось, вот и все, лишние тормоза не нужны.
Ориентировочно: три таблицы, около 200 000 - 500 000 записей, общий объем - до 10-ти мегабайт (самих таблиц, без индексирования).
Никаких отметок на удаление, удаляться записи должны сразу; не знаю, есть ли смысл говорить о транзакциях в моем случае, но, если есть, то чтоб их не было.


 
Анонимщик   (2004-02-02 18:02) [11]

И не версионник само собой


 
MV   (2004-02-02 18:02) [12]

10 мегабайт делим на 500 000 записей = 20 байт на запись

Класс.

А если 10 мегабайт в сумме на все три таблицы - то по 6 байт на таблицу.

Супер.


 
Анонимщик   (2004-02-02 18:08) [13]

MV
Насчет экземпляров - прошу прощения, грубо выразился, я имел в виду экземпляры соединения с БД.
10 мегабайт на 200 000 записей = 50 байт на запись, мне хватает.
Одна из таблиц - большая, в остальных - записей чуть-чуть.
Хватит прикалываться, не знаем - молчим.

sniknik
Midas - пробовал, тормоза после 100 000 записей.
Примочки руками - не могу, это долго, я зашьюсь в конце концов, да и, мне кажется, овчинка выделки не стоит, должно уже что-то такое быть.


 
MV   (2004-02-02 18:21) [14]

Джулиан Бакнелл. "Фундаментальные алгоритмы и структуры данных в Дельфи". Расписано все с примерами.
Создаем динамические массивы с индексами, триггеры реализуем на как функции доступа к свойствам. Связи, доступ и все остальное тоже ручками. Без SQL. Хотя если проблема, чтобы на диск не писалось (типа очень секретно) - не поможет все равно. Виндовс сама решает, кого и когда свопить. Так что FireBird. Создаем виртуальный диск, на нем генерим базу, и дальше - как обычно.
FireBird из перечисленного (кроме 1) может все.


 
Анонимщик   (2004-02-02 18:29) [15]

1. Нет ничего секретного.
2. Ручками - проблема; зачем огород городить на том, что должно быть написано и без меня. Поменяю завтра структуру - переписывать? Кроме того, динамических массивов будет недостаточно, нужны будут еще двоичные деревья, связные списки, возможно, и, возможно, хеш-таблицы и прочая хрень. Впрочем, ладно, не вам ведь писать, оно и советовать вроде проще.
3. Не FireBird, мне не нужен версионник, это точно.

Так что ответа нет.
Ладно, спасибо и на том.


 
MV   (2004-02-02 18:31) [16]

Анонимщик © (02.02.04 17:19)
4. Не был блокировочником.

Анонимщик © (02.02.04 18:29) [15]
3. Не FireBird, мне не нужен версионник, это точно.


Класс.
Удачи!


 
Anatoly Podgoretsky   (2004-02-02 20:12) [17]

MV (02.02.04 18:31) [16]
Промежуточник


 
Sergey_Masloff   (2004-02-02 20:32) [18]

Анонимщик © (02.02.04 18:29) [15]
>2. Ручками - проблема;
ну это мы поняли
>зачем огород городить на том, что должно быть написано и без >меня. Поменяю завтра структуру - переписывать? Кроме того, >динамических массивов будет недостаточно, нужны будут еще >двоичные деревья, связные списки, возможно, и, возможно, хеш->таблицы и прочая хрень. Впрочем, ладно, не вам ведь писать, оно >и советовать вроде проще.
отмазки не катят

>3. Не FireBird, мне не нужен версионник, это точно.
Знаешь еще способы кроме версионников и блокировочников?

>Так что ответа нет.
Ответ есть. Если бы ты так не пыжился то нашел бы его давно и не парил людям мозги. Твою проблему решит практически любой сервер СУБД, уж ORACLE и MSSQL точно, я думаю и в FB уже убрали излишнюю экономию оперативки. При наличии достаточного объема памяти ВСЕ данные будут сидеть в кеше. АБСОЛЮТНО никакого оверхеда связанного с записью на диск в данном случае не будет.

>Я же сказал: в памяти и не блокировочник
ты можешь говорить что угодно. Все эти разговоры происходят из незнания предмета. Точка.


 
Deniz   (2004-02-03 09:57) [19]

В орешник :)


 
Анонимщик   (2004-02-03 10:59) [20]

Знаешь еще способы кроме версионников и блокировочников?

Знаю.


 
Digitman   (2004-02-03 11:05) [21]


> Анонимщик © (03.02.04 10:59) [20]


> Знаю.


просвети уж нас, тундру беспросветную, о секретном третьем варианте ?


 
Анонимщик   (2004-02-03 11:12) [22]

Открой любой файл для редактирования и подумай - файловая система его блокирует или версионит.


 
Sandman25   (2004-02-03 11:16) [23]

В общем, Анонимщику нужна СУБД без транзакций. Кто последний записал, тот и молодец.


 
Анонимщик   (2004-02-03 11:21) [24]

Я сказал ведь, один пишет - остальные только читают. О транзакциях тоже было. Какие еще вопросы? От вас всегда нужно отбиваться?


 
Sandman25   (2004-02-03 11:24) [25]

[24] Анонимщик © (03.02.04 11:21)

Это называется, подходит блокировочник с возможностью отключения блокировки (dirty read).


 
Digitman   (2004-02-03 11:33) [26]


> Анонимщик © (03.02.04 11:12) [22]


и какое же определение ты сам даешь механизму работы файловой системы ? и почему не упоминаешь, какую ФС имеешь ввиду ? NTFS действует по иному нежели FAT - ее работа в ряде ситуаций сродни версионнику ..


 
Romkin   (2004-02-03 11:34) [27]

Тебе не нужна СУБД. Небольшой сервер, со списками или другими структурами. Thread safe. Без SQL, увы, придется обойтись :)


 
Анонимщик   (2004-02-03 11:50) [28]

Sandman25
Ну, это не то чтоб совсем dirty read, но, скажем так, поскольку транзакций нет, то и подтверждать нечего. Впрочем, если настаиваешь, что это именно грязное чтение, то по смыслу - да.

Digitman
А что это, мы уже все-таки начали обсуждать? Зачем это - в орешник и все дела.

Romkin
Согласен, что СУБД здесь, может и не нужна. Но! Во-первых, в другую ветку такие вопросы задавать, вроде, не стоит. Во-вторых, мне-то, скорее всего, придется структуру переделывать и экспериментировать. Хотя, конечно, идеальный вариант - библиотека с указанными тобой функциями. И где оно, да чтоб удобство было? В этом и вопрос, собственно. А что касается SQL - то это, может, и необязательно, но лучше бы было, если не SQL, то какой-нибудь другой макроязык.


 
asp   (2004-02-03 11:52) [29]

Анонимщик © (03.02.04 11:21) [24]> Ввиду нестандартности придется.
Каверзный вопрос по поводу отсутствия транзакций: а если пользователь, наложивший блокировку аварийно вывалится?
IMHO, критерий незаписи на диск совершенно напрасен. Как уже писали, СУБД поддерживают кэширование таблиц.


 
Boroda Oleg   (2004-02-03 11:54) [30]

Ну, еще как вариант, действительно создать виртуальный диск и разместить на нем базы в формате обычных DBF - индексы они потдерживают, да и SQL запросы всунуть можно, если завернуть доступ через BDE. Вот насчет тригеров - тут минус.

А вот что касаемо наличия таких СУБД - вероятность существования практически равна нулю. Принцип построения СУБД и ее первоочередная задача - сохранность данных, а о какой сохранности можно говорить если таблы в памяти :))


 
Digitman   (2004-02-03 11:59) [31]


> Анонимщик © (02.02.04 17:59) [10]
> Чтоб на диск не писалось, вот и все


а про свопинг забыл ? система без твоего ведома примет решение, выкинуть ли редко используемые страницы ВАП в файл подкачки или не трогать до поры до времени ...

это ты как бы к дисковым операциям не относишь уже ? я правильно понимаю ?


 
asp   (2004-02-03 12:08) [32]

В продолжение темы.
В DB2, например, можно отключить своппинг NT дабы не получить двойной. Плюс своп можно разместить на неформатированную партицию, избавляясь от расходов на файловую систему.
Т. е. используя СУБД, даже в случае своппинга можно добиться лучших результатов. IMHO.


 
Danilka   (2004-02-03 12:16) [33]

[32] asp © (03.02.04 12:08)
СУБД никак низя, ибо есть каприз - шоб обязательно не блокировочник и не версионник, и на винт писать тоже ничего низя ни в коем случае.

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


 
Анонимщик   (2004-02-03 12:16) [34]

asp
а если пользователь, наложивший блокировку аварийно вывалится?

На самом деле все подключения - из одной программы. Так что ничего страшного.

Boroda Oleg
Боюсь, не подойдет. Пробовал, но мне нужно 50-100 обновлений в секунду, скорость удалений некритична, их и нет, в общем. Вот на двоичных деревьях, списках и прочему скорость достаточна, но организовывать это в одно целое - сил моих нет, вот если бы уже библиотека была.
Ну, СУБД - не СУБД, это так действительно. Но мне эти данные после завершения приложения даром не нужны.

Digitman

Ни о чем я не забыл. Но требования более-менее гибкие. И, надеюсь, при гигабайте памяти 10 мегабайт не засвопятся никогда. Но это отдельный вопрос, конечно.


 
Анонимщик   (2004-02-03 12:18) [35]

Короче говоря, быстренько отвечаем о библиотеке.
Нет ответов - нет вопроса.
Если все, то всем спасибо.


 
Sandman25   (2004-02-03 12:19) [36]

но мне нужно 50-100 обновлений в секунду

О каких обновлениях речь? Обновление грида на экране?


 
Анонимщик   (2004-02-03 12:22) [37]

Sandman25
Я еще с ума не сошел.
Обновлений записей в одной из таблиц.


 
asp   (2004-02-03 12:24) [38]

Анонимщик © (03.02.04 12:18) [35]> Возможно, RxMemoryData.


 
Анонимщик   (2004-02-03 12:27) [39]

asp

Не, оно такие объемы не тянет, проверено. Кроме того, ключи медленные. И потом, запросы не быстрые. Все из-за неоптимальных, видимо, алгоритмов поиска данных. То же самое на двоичных деревьях работате как нужно, но, как уже говорил, устану под каждый конкретный случай структуры городить.


 
Digitman   (2004-02-03 12:28) [40]


> Анонимщик © (03.02.04 12:18) [35]


ну единственное что можно предложить тебе - какой-нибудь TClientDataSet или TMemoryTable ... у их предков достаточно вирт.методов, с пом.которых осуществляется открытие НД, позиц-е и доступ к записи .. перекрыв некоторые из них и задействовав MMF и интерпроцессные сист.объекты синхронизации, ты сможешь добиться чего-то отдаленно похожего на то, что тебе требуется


 
Анонимщик   (2004-02-03 12:32) [41]

Digitman
Вот-вот, это уже лучше. TClientDataSet - самое то, но..., я уже пробовал когда-то использовать (для другой задачи), и пришел к выводу, что не так-то оно быстро да просто, хотя, конечно, нерешаемым вопрос назвать нельзя.
Ссылку бы на библиотеку, где бы к виртуальным методам были бы добавлены еще и кое-какие алгоритмы и структуры, а?


 
Romkin   (2004-02-03 12:45) [42]

TMultiReadSingleWriteSyncronizer + TList (TThreadList)


 
Sir Alex   (2004-02-03 12:46) [43]

>Анонимщик © (03.02.04 12:32) [41]

Посмотри:
- Absolute Database
- kbmMemTable (кажись так)
- Apollo VCL

Что-нить да подойдет...


 
Анонимщик   (2004-02-03 12:49) [44]

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

Sir Alex
Спасибо, щас.


 
Анонимщик   (2004-02-03 12:53) [45]

Sir Alex
А сам не использовал? Впечатления можно услышать?


 
Digitman   (2004-02-03 13:04) [46]


> Анонимщик © (03.02.04 12:53) [45]


есть еще одно простейшее решение : реализуешь MIDAS-сервер, который будет монопольно работать с каким-нибудь готовым TMemoryTable, предоставлять через IAppServer интерфейс DataSetProvider"а и с пом. TMultiReadSingleWriteSyncronizer осуществлять нужный тебе арбитраж мультипоточных обращений к НД

доступ к твоему MIDAS-серверу сос стороны клиентских процессов осуществляешь обычным образом - через MidasConnection и ClientDataSet


 
Sir Alex   (2004-02-03 13:21) [47]

2 Анонимщик © (03.02.04 12:53) [45]
В твоем случае больше всего подходит AbsDatabase, у него и SQL и in-memry tables и еще куча всего...
Не пробовал (т.е. не использовал в реальных проектах).

- kbm - Пробовал 2 года назад, непонравилась работа с фильтрами (если установить фильтр, то нельзя узнать сколько записей БД, и у пользователя в гриде скроллбар становился 3-state(3-и положения), что меня крайне удивило и я ее снес). Как она сейчас работает я не знаю.

- Apollo VCL - работает на основе DBF(FoxPro,Clipper, HiPerSix), использовал, если надо делать работу с DBF. требует наличие отдельных DLL.


 
Анонимщик   (2004-02-03 14:33) [48]

Sir Alex
Спасибо большое, буду проверять.


 
Анонимщик   (2004-02-03 14:34) [49]

Извини, а какой вариант лучше использовать:

Personal Edition
Single-User Edition
Multi-User Edition



Страницы: 1 2 вся ветка

Форум: "Базы";
Текущий архив: 2004.02.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.57 MB
Время: 0.009 c
14-94128
Ega23
2004-02-09 10:34
2004.02.29
Programming Windows Driver Model


3-93792
Delph
2004-02-02 17:26
2004.02.29
MSSQL2000


3-93813
Крутыш
2004-02-03 00:18
2004.02.29
Проблемы с датами в запросе Update


14-94103
Думкин
2004-02-10 06:03
2004.02.29
С днем рождения! 10 февраля.


14-94154
xMan
2004-02-08 12:17
2004.02.29
Помогите установить WinXP Pro на Win98





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский