Форум: "Прочее";
Текущий архив: 2007.11.11;
Скачать: [xml.tar.bz2];
ВнизБесплатная Embedded-СУБД Найти похожие ветки
← →
Ega23 © (2007-09-26 13:10) [0]кроме FB, что ещё есть и где скачать можно?
← →
Ega23 © (2007-09-26 13:13) [1]Вот тут Яндекс подсказывает про SQLite
Кто пользовался, как она вообще?
← →
Вася Правильный (2007-09-26 13:16) [2]у Кетмара спроси
← →
Sergey13 © (2007-09-26 13:22) [3]Absolut DB (вроде так как-то) многие рекомендуют.
← →
tesseract © (2007-09-26 13:41) [4]
> Вот тут Яндекс подсказывает про SQLiteКто пользовался, как
> она вообще?
Ну я пользовался - отлично, если работать в одном потоке.
← →
Ega23 © (2007-09-26 13:45) [5]
> Ну я пользовался - отлично, если работать в одном потоке.
Да, мне локальный DataStorage надо сделать.
Что там нужно-то для работы?
← →
matt © (2007-09-26 13:57) [6]
> Что там нужно-то для работы?
одна дллка, и простейший интерфейсный файлик..
использую уже с полгода - очень доволен
← →
tesseract © (2007-09-26 14:02) [7]Да есть давно датасеты : http://www.aducom.com/cen/news.php
← →
Ega23 © (2007-09-26 14:21) [8]
> tesseract © (26.09.07 14:02) [7]
Макс, чё-то я не понял, где там загрузка.
Можешь мне на мыло выслать, коль скачивал уже?
← →
DVM © (2007-09-26 14:26) [9]
> Ega23 © (26.09.07 14:21) [8]
http://www.aducom.com/cen/download.php?list.11
← →
PEAKTOP © (2007-09-26 15:11) [10]А че, MySQL уже не поддерживает Embedded ?
← →
Черный Шаман (2007-09-26 16:09) [11]Ня
Absolute Database
http://www.componentace.com/bde_replacement_database_delphi_absolute_database.htm
SQLite4Delphi
http://sqlite4delphi.sourceforge.net/
← →
Ega23 © (2007-09-26 16:10) [12]ОК, всем спасибо!
← →
tesseract © (2007-09-26 16:15) [13]
> А че, MySQL уже не поддерживает Embedded ?
На кой она после 3-ей версии вообще нужна ?
← →
Суслик © (2007-09-26 16:25) [14]знатокам sql-lite
sqlite.dll это что?
где ее брать в исходниках?
← →
tesseract © (2007-09-26 16:28) [15]
> sqlite.dll это что?где ее брать в исходниках?
А зачем она ? Адукомовская статически может вставиваться. А про с-шник ты удивишься - http://sqlite.org/
← →
Суслик © (2007-09-26 16:44) [16]
> А про с-шник ты удивишься
странная у тебя, однако, манера общения.
все равно спасибо :)
← →
tesseract © (2007-09-26 16:49) [17]
> странная у тебя, однако, манера общения.
привык, что её все знают :-) + 12 дятлов по магазмнам :-)
← →
Суслик © (2007-09-26 16:59) [18]как же не жватает в дельфи типа аля numberic или decimal.
блин, а ее еще расценивают как РАД для клиента базы данных.
← →
tesseract © (2007-09-26 17:12) [19]
> как же не жватает в дельфи типа аля numberic или decimal
А поля в двух разных СУБД всегда одинаковыми бывают ?
← →
Суслик © (2007-09-26 17:33) [20]Ну есть тип decimal(28,10)
если не ошибаюсь он есть в стандарте.
так в дельфи нет аналога прямого.
судя по QC они сами давно это заметили, даже пооткрывали несколько репортов по темен decimal. Но пока тишина.
← →
tesseract © (2007-09-26 17:40) [21]
> так в дельфи нет аналога прямого.
Бинарных полей, тоже нет. Вот это меня больше беспокоит :-)
← →
Суслик © (2007-09-26 17:44) [22]
> Бинарных полей, тоже нет. Вот это меня больше беспокоит
> :-)
кого чего беспокоит.
меня все же беспокоит отсутствие decimal.
пока перебиваюьс юзая TDecimal из ActiveX и функции аля "VarDecAdd" и пр. из oleaut32.dll.
Но как-то это достало. Вот почему currency сделалали, а Decimal - нет? несправедливо.
ЗЫ. Оффтоп, конечно это, уж извинит. Просто я посмотрел на SQLLite. Сам по себе он decimal подерживает. А вот в дельфи только BCD.
← →
tesseract © (2007-09-26 17:49) [23]
> Сам по себе он decimal подерживает. А вот в дельфи только
> BCD.
Да на кой он так сильно нужен ? Хотя что-то вроде делал - на WinCe работало и понимало.
← →
Суслик © (2007-09-26 18:08) [24]Он точный. Никаких тебе закидонов плавающей точки.
Т.е. 0.1321231 = 0.1321231 всегда равно true вне зависимости от того, как получены 0.1321231 слева и справа.
← →
Черный Шаман (2007-09-26 18:32) [25]
> Суслик © (26.09.07 18:08) [24]
Double?
← →
matt © (2007-09-26 18:57) [26]
> Просто я посмотрел на SQLLite. Сам по себе он decimal подерживает.
> А вот в дельфи только BCD.
она, кажется, вообще все в строках хранит
← →
Суслик © (2007-09-26 18:57) [27]
> [25] Черный Шаман (26.09.07 18:32)
> > Суслик © (26.09.07 18:08) [24]
> Double?
все равно вычисления не точные
например в таком кодеvar
d: double;
begin
d := 1207;
d := - d/ 2 + (d * 2 - d / 4) / 5 + d + d / 10 + d / 20 - d + d / d;
end;
в не равно 1, а равно 0.9999999999999сфигом.
для финансовых вычислений хочеца, чтобы было точно.
← →
Черный Шаман (2007-09-26 19:30) [28]Нууу есть чудесная функция RoundTo
var
d: double;
begin
d := 1207;
d := - d/ 2 + (d * 2 - d / 4) / 5 + d + d / 10 + d / 20 - d + d / d;
d := RoundTo(d, -12);
if d = 1.0 then
ShowMessage(FloatToStr(d));
← →
Суслик © (2007-09-26 19:39) [29]
> Нууу есть чудесная функция RoundTo
ну если ты такой умный, скажи - зачем придуман тип Currency?
← →
pasha_golub © (2007-09-26 20:31) [30]
> Суслик © (26.09.07 19:39) [29]
> ну если ты такой умный, скажи - зачем придуман тип Currency?
Для операций с деньгаме. Ну, а что тут такого. А decimal(28,12) это уже, мать его, ядерная физика. Котрая встречается один раз в году и то на ходу
← →
tesseract © (2007-09-26 21:20) [31]
> ну если ты такой умный, скажи - зачем придуман тип Currency?
Округление у него банковское. Все эти decimal и тд - всё равно производные для базовых типов, но приведение происходит на сервере.
← →
Суслик © (2007-09-26 21:33) [32]
> Все эти decimal и тд - всё равно производные для базовых
> типов, но приведение происходит на сервере.
поясни мысль, будь добр, немного более развернуто.
← →
tesseract © (2007-09-26 21:44) [33]
> поясни мысль, будь добр, немного более развернуто.
Заводишь базовый тип данных, потом приводишь к нужной точности на клиенте, по любому все эти типы всего-лишь производные типы данных - т.е. различаються типом выдачи клиенту, хранение физическое - ну да оно прибавит производительности при поиске, но не слишком сильно.
← →
Суслик © (2007-09-26 21:55) [34]да я вроде не о том - нет в дельфи типа в датасете, эквивалнтного decimal.
я об этом. а ты о чем?
← →
Черный Шаман (2007-09-26 21:55) [35]
> Суслик © (26.09.07 21:33) [32]
>
>
> > Все эти decimal и тд - всё равно производные для базовых
> > типов, но приведение происходит на сервере.
>
> поясни мысль, будь добр, немного более развернуто.
Как ты думаешь, как на самом деле работает Currency?
По-моему мнению как RoundTo(d, -2);, но с проверкой на управляющее слово(банковского округления).
Напиши себе функции
Add, Sub, Mul, Div и радуйся
← →
tesseract © (2007-09-26 22:09) [36]
> По-моему мнению как RoundTo(d, -2);, но с проверкой на управляющее
> слово(банковского округления).
Типа того, но с SQL проблемы.
> да я вроде не о том - нет в дельфи типа в датасете, эквивалнтного
> decimal.я об этом. а ты о чем?
Что он, всего лишь приведённый базовый тип. Можно привести и на клиенте - не так уж он часто нужен.
← →
Суслик © (2007-09-26 22:19) [37]
> Можно привести и на клиенте - не так уж он часто нужен.
шото я тебя решительно не понимаю.
есть mssql, есть тип decimal(28,10)
к чему ты его будешь приводить в дельфи?
← →
Ega23 © (2007-09-27 09:56) [38]
> к чему ты его будешь приводить в дельфи?
К строке
← →
tesseract © (2007-09-27 10:13) [39]
> к чему ты его будешь приводить в дельфи?
TField - уникальный класс - приводиться к чему угодно :-)
← →
Суслик © (2007-09-27 13:07) [40]
> [39] tesseract © (27.09.07 10:13)
> > к чему ты его будешь приводить в дельфи?
> TField - уникальный класс - приводиться к чему угодно :-)
шойто я начинаю сомневаться в твоей компетентности в обсуждаемом вопросе :)
← →
Anatoly Podgoretsky © (2007-09-27 13:23) [41]> Суслик (27.09.2007 13:07:40) [40]
Ну вообще он наверняка имел ввиду наследников.
Но приводить можно к чему угодно, кроме редких случаев, вот напримек к Integer(TField)
← →
iZEN © (2007-09-27 14:29) [42]
> Ega23 © (26.09.07 13:10)
>
> кроме FB, что ещё есть и где скачать можно?
Apache Derby
← →
tesseract © (2007-09-27 15:34) [43]
> Ну вообще он наверняка имел ввиду наследников.
Конечно,
function TField.GetAsBoolean: Boolean;
begin
raise AccessError("Boolean"); { Do not localize }
end;
function TField.GetAsByteArray: Variant;
begin
VarClear(Result);
if not GetData(@Result, False) then Result := Null;
end;
function TField.GetAsBCD: TBcd;
begin
CurrToBcd(GetAsCurrency, Result);
end;
function TField.GetAsCurrency: Currency;
begin
Result := GetAsFloat;
end;
function TField.GetAsDateTime: TDateTime;
begin
raise AccessError("DateTime"); { Do not localize }
end;
function TField.GetAsFloat: Double;
begin
raise AccessError("Float"); { Do not localize }
end;
function TField.GetAsInteger: Longint;
begin
raise AccessError("Integer"); { Do not localize }
end;
function TField.GetAsSQLTimeStamp: TSQLTimeStamp;
begin
raise AccessError("SQLTimeStamp"); { Do not localize }
end;
function TField.GetAsString: string;
begin
Result := GetClassDesc;
end;
function TField.GetAsWideString: WideString;
begin
Result := GetAsString; // fall back to GetAsString.
end;
function TField.GetAsVariant: Variant;
begin
raise AccessError("Variant"); { Do not localize }
end;
← →
Суслик © (2007-09-28 01:38) [44]
> tesseract © (27.09.07 15:34) [43]
да, спасибо.
только пока в дельфи не будет decimal - это не RAD для DB-clients.
Вот http://qc.codegear.com/wc/qcmain.aspx?d=28022, кстати.
Заметь - открыт.
← →
Petr V. Abramov © (2007-09-28 09:31) [45]> Суслик © (28.09.07 01:38) [44]
> только пока в дельфи не будет decimal - это не RAD для DB-clients.
что ж ты раньше-то молчал, народ вон банковских систем сколько на дельфях наваял :)
но насчет decimal - согласен 100%
← →
Anatoly Podgoretsky © (2007-09-28 10:20) [46]> Petr V. Abramov (28.09.2007 09:31:45) [45]
У них был подлинный BCD, когда они купили dBase - они его успешно похерили, в угоду маркетинговым соображениям.
← →
Суслик © (2007-09-28 10:39) [47]
> но насчет decimal - согласен 100%
> У них был подлинный BCD, когда они купили dBase - они его
> успешно похерили, в угоду маркетинговым соображениям.
ну вот видите, господа, есть зерно разума в моих претензиях.
хорошо хоть Дельфи 14 (это и есть деcimal) тип воспринимает при операторе ":=".
-----
> [45] Petr V. Abramov © (28.09.07 09:31)
> что ж ты раньше-то молчал, народ вон банковских систем сколько
> на дельфях наваял :)
Русскому челу не привыкать. Кстати заметь, что в других языках подобный тип есть. Есть в VB, есть в C#, есть в Java. А вот в дельфи нет
← →
Petr V. Abramov © (2007-09-28 10:59) [48]> Суслик © (28.09.07 10:39) [47]
> Русскому челу не привыкать.
было дело, чтоб не вникать в "особенности вещественных чисел" написал round, который вызывал round с сервера :)))
← →
SPeller © (2007-09-28 16:31) [49]Использовал MySql embedded. Вполне хорошо рабоает. И таскать с собой надо длл и конфиг. Жаль только, что под 5-ю версию embedded нет. Только четверки.
← →
tesseract © (2007-09-28 16:38) [50]
> Жаль только, что под 5-ю версию embedded нет. Только четверки.
Ага, дико вот народ жалеет, что не хватает sybase embedded или Oracle, а по встроенный IBM DB2 я вообще слёзы лью - таскать-то с собой всего 500 мегабайт.
← →
SPeller © (2007-09-28 17:01) [51]а к чему такой сарказм? я понимю что тут дельфимастер и тут местная такая зараза отвечать таким вот образом. но всё-же, по существу?
← →
tesseract © (2007-09-28 17:11) [52]
> но всё-же, по существу?
5-й Мускул тормознее четвёртого процентов на 20-50 и памяти жрёт до чёрта, из-за передоза кривого функционала. В Embedded надо что попроще. Поэтому и топик про то, что полегче.
ЗЫ: И Мускул тут реально не любят :-)
← →
SPeller © (2007-09-28 17:22) [53]Я замеры памяти не производил, поэтому тут не буду спорить )
А по части не любят - от чего-то это самый противный мускул стоит на каждом коммерческом хостинге. Ну, может кроме виндового. Правда, 4-й мускул восновном ставят, на 5-й не торопятся переходить ) Хотя в 5-м и завлены некоторые вкусности.
← →
tesseract © (2007-09-29 10:18) [54]
> от чего-то это самый противный мускул стоит на каждом коммерческом
> хостинге.
Против 3-ей ничего не скажу - многопоточный SQLite. 5-й не ствят потому как он реально никому не нужен, проще поставить слоника.
← →
inoremap (2007-09-29 11:12) [55]2 Суслик [44]
> только пока в дельфи не будет decimal - это не RAD для DB-clients.
Вместо decimal можно использовать библиотеки для работы с рациональными числами, например, эту http://kladovka.net.ru/index.cgi?pid=board&rid=459
она позволяет складывать, вычитать, умножать, делить без потери точности, есть методы для "банковского" и "математического" округления.
← →
Суслик © (2007-09-29 22:06) [56]
> inoremap (29.09.07 11:12) [55]
Спасибо, но
> Библиотека НЕ оптимизировалась на максимальную скорость
> работы, если скорость является критическим параметром следует
> использовать другие библиотеки.
ставит крест, ибо мне некоторый уровень оптимизированности кода важен.
ВОПРОС, может знаешь что-то подходящее?
← →
Petr V. Abramov © (2007-09-30 00:39) [57]> ставит крест, ибо мне некоторый уровень оптимизированности кода важен.
ты какие-то большие циклы гонеяшь с финвычислениями???
← →
Суслик © (2007-09-30 01:22) [58]
> Petr V. Abramov © (30.09.07 00:39) [57]
> > ставит крест, ибо мне некоторый уровень оптимизированности
> кода важен.
> ты какие-то большие циклы гонеяшь с финвычислениями???
да гоняю, да такой я.
в общем хочу быструю бибиотеку для работы с числами 18.10 (18 до запятой 10 после) без чисел с плав. точкой. Т.е. типа работа с цел. 28-цифровыми значениями, в которых точка смещена на 10 знаков влева.
(если у кого есть, можно обсудить коммерческие аспекты моего желания)
← →
sniknik © (2007-09-30 02:01) [59]> можно обсудить коммерческие аспекты моего желания
будеш должен...
> для работы с числами 18.10 (18 до запятой 10 после)
подойдет int64 с отданными 10-ю разрядами под дробь (аналогично currency, только у него 4)
будет число с разрядностью от -922337203.6854775808 до 922337203.6854775807 (19.10), оптимизация лучше не бывает (т.к. это не BCD, не строка или массив а "истинное" число), остается только вывод немного поправить.
← →
sniknik © (2007-09-30 02:07) [60]> 18 до запятой 10 после
упс... не так понял, тебе нужно число 29.10 (так записывается, чтобы получилось 18 до и 10 после.), не обратил внимание на описание, ориентировался по форме записи (так в фокспро задается. привык).
← →
wicked © (2007-09-30 02:08) [61]
> > для работы с числами 18.10 (18 до запятой 10 после)
> подойдет int64 с отданными 10-ю разрядами под дробь (аналогично
> currency, только у него 4)
> будет число с разрядностью от -922337203.6854775808 до 922337203.
> 6854775807 (19.10), оптимизация лучше не бывает (т.к. это
> не BCD, не строка или массив а "истинное" число), остается
> только вывод немного поправить.
а переполнения и сдвиги при умножении/делении? вручную отлавливать?
← →
Суслик © (2007-09-30 02:14) [62]если ответить на вопрос, почему этонужно, то отвечу, что есть АБСОЛЮТНО нормализованная мат. модель - все считается только на том, что вводит пользователь. Поэтому все расчеты дожны работать совершенно одинаково на всех компьюетерах в мире!
пока я использую TDecimal, но он тормозной какой-то :(
← →
sniknik © (2007-09-30 02:42) [63]> а переполнения и сдвиги при умножении/делении? вручную отлавливать?
зачем? знаеш как currency реализован? вот точно также.
работаешь как обычно с целым числом, только в уме держишь, что 10 знаков это за точкой... исключительно для вывода на показ пользователю (для currency это "автоматом").
только все одно не пойдет, разрядности не хватает под требования в [58]. (по форме записи (на что и смотрел) в фоксе первым стоит общая длина числа, вторым разрядов после запятой, подходит. а вот по описанию у него "немного" по другому, сразу + еще десяток разрядов, тут мало)
← →
Суслик © (2007-09-30 02:46) [64]
> sniknik © (30.09.07 02:42) [63]
повторю, что есть oleaut32 тип TDecimal и функции из него.
но он тормозной все же. к тому же не дает гаранитий в детерминированности вычислений. пока я, правда, не обнаружил проблем с детерминированностью на разных ОС, но все же ... гарантии нет.
← →
Petr V. Abramov © (2007-09-30 11:44) [65]> Суслик © (30.09.07 02:14) [62]
переходите к нам на Oracle :)))
до кучи получишь нужную тебе библиотеку, она в составе клиентской части. Не знаю, быстрее она будет чем decimal, или нет, но
> все расчеты дожны работать совершенно одинаково на всех компьюетерах в мире!
гарантировано
← →
inoremap (2007-09-30 16:08) [66]2 Суслик [56]
> ставит крест, ибо мне некоторый уровень оптимизированности кода важен.
> ВОПРОС, может знаешь что-то подходящее?
Вроде есть pascal-биндинги для GNU MP. У меня работа с рациональными числами занимает не больше 10% процессорного времени, некоторые места можно улучшить до 5-10 раз по скорости, но мне что 10% что 1% пока без особой разницы.
← →
Суслик © (2007-09-30 16:28) [67]
> Вроде есть pascal-биндинги для GNU MP
ну там для каких то нестандратных (для меня) паскалей.
все равно спасибо - буду копать.
← →
имя (2007-10-07 22:26) [68]Удалено модератором
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2007.11.11;
Скачать: [xml.tar.bz2];
Память: 0.63 MB
Время: 0.137 c