Bitcoin Forum
May 10, 2024, 11:51:28 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [18] 19 20 21 22 »  All
  Print  
Author Topic: Давайте создадим с нуля биржу Open Source?  (Read 32167 times)
This is a self-moderated topic. If you do not want to be moderated by the person who started this topic, create a new topic. (5 posts by 1+ user deleted.)
Balthazar
Legendary
*
Offline Offline

Activity: 3108
Merit: 1358



View Profile
December 01, 2019, 03:43:10 PM
Last edit: December 01, 2019, 03:54:52 PM by Balthazar
Merited by kzv (1)
 #341

Жесть. Бутят. Очень быстро. Скорость Брута зависит от исходящего канала. нужно тайминг вставить.
Соль нельзя сменить после первого пуска или я не понял как.
Нужно тайминг вставить, что-бы ответ на неверный пароль приходил с задержкой а не мгновенно..
Я понимаю что капча решает, но она уже давно не нужна от слова совсем, ну разве людей только мучать.
Лучше сделать на бирже подставной профиль с левыми данными, и при бруте для случайных попыток логинить юзера в него.
Задолбается выяснять, какие попытки реально успешные, а какие - троллинг биржи в его адрес. Мало того, что эффективно, это ещё и смешно.

SQLite, серьезно? На любом пампе проект сломается. ТС видимо не знаком с напором торговых роботов. Масштабирование- никакое.
Я все никак не могу забыть, как один эксперт отличился. Заявил, что в SQLite масштабирование никакое, а когда ему было предложено побить в реальной производительности конкретное решение, то покряхтел недельку и исчез. Не пишет вот уже год со своим InnoDB.

почитайте о транзакциях в базах данных. Или давайте представим ситуацию: пользователь производит операцию создания ордера и у него баланс 0.01 BTC который вычитается и в базу записывается 0, и в этот же момент у него срабатывает другой ордер который также видит баланс 0.01 и хочет прибавить к нему 0.005 за исполненный ордер на продажу.  В зависимости от того какая операция запишет в базу первая или вторая баланс будет либо 0 либо 0.015 и то и другое неправильно. Должна быть блокировка на уровне строки которая не позволит получить баланс пользователя из базы пока не завершена другая операция. В sqlite можно блокировать только таблицу полностью, это сильно уменьшит производительность
Не знаю, в каком году вы застряли, но SQLite уже много лет как умеет write-ahead logging. Если хорошо "читали о базах данных", то вы вкурсе, что это такое и зачем нужно.
Bitcoin addresses contain a checksum, so it is very unlikely that mistyping an address will cause you to lose money.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
Balthazar
Legendary
*
Offline Offline

Activity: 3108
Merit: 1358



View Profile
December 02, 2019, 05:21:55 PM
 #342

Насчет СУБД, если хочется чего-то радикально быстрого, то можно попробовать RediSQL. Это модификация SQLite, которая использует Redis в качестве бэкэнда.

https://redisql.com/

Натянет по самые гланды любые мускули, при сохранении совместимости с ANSI SQL, если такова цель.

Проект в активной разработке, но с биндингами проблем нет.

SteepPepper
Jr. Member
*
Offline Offline

Activity: 198
Merit: 8


View Profile WWW
December 17, 2019, 09:57:32 AM
 #343

Привет! Можете разъяснить механизм действия кнопки Fix и когда возникает необходимость ей воспользоваться?
kzv (OP)
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
December 17, 2019, 10:01:48 AM
 #344

Привет! Можете разъяснить механизм действия кнопки Fix и когда возникает необходимость ей воспользоваться?

1. Если у пользователя что-то сглючило с балансами
2. Если на пользователе сработала автоблокировка вывода (когда задетектилась подозрительная активность)

Если нажать на Fix, то
1. Снимутся все пользовательские ордера по этой монете
2. Баланс пользователя будет проверен по блокчейну и по истории торгов
3. Если будут найдены несоответствия - баланс приведется в порядок
4. Вывод разблокируется

OpenTrade - Open Source Cryptocurrency Exchange
SteepPepper
Jr. Member
*
Offline Offline

Activity: 198
Merit: 8


View Profile WWW
December 17, 2019, 10:17:49 AM
Merited by Veleor (1)
 #345

Насчет СУБД, если хочется чего-то радикально быстрого, то можно попробовать RediSQL. Это модификация SQLite, которая использует Redis в качестве бэкэнда.

https://redisql.com/

Натянет по самые гланды любые мускули, при сохранении совместимости с ANSI SQL, если такова цель.

Проект в активной разработке, но с биндингами проблем нет.



Разъясняю всем!
Мне удивительно почему многим это не понят? Почему не могут проводить аналогии с личным творческим трудом в новой, аццки сложной области, когда ты вытягиваешь ее в соло.
Если ты взявшись в соло за сложный проект будешь много выбирать, анализировать - он не будет завершен НИКОГДА.
Меня удивляет, почему вы не в состоянии оценить! даже косвенно. можно даже не смотреть в код!!! У этого движка столько форков, потому что его код настолько структурирован и изящен, что каждый его может заюзать и допилить под себя!!! Вот в чем ценность этого движка!!! И еще в том, что благодаря ему можно в принципе даже научится создавать свои движки. Посмотрите на другие на гитхабе! Да там черт ногу сломит!! там столько намешано технологий, что видно что этти движки амнокодеры создавали - там фарш-код - кто во что гаразд...
Ну очевидно же!!! что автору OpenTrade советы не нужны!! Он дал сообществу, причем бесплатно, нечто великолепное! Так как теперь глядя на его код даже школота сможет написать свой обменник или биржу!!!
Плять! В мире только несколько людей могут похвастатся тамики соло-проектами!!! Вы просто не в состоянии заценить. Ну очевидно же, что автору если понадобится сделать улучшения в следующих версиях - он их сделает. а советы ему не нужны, так как он превосходит и знаниях и профессионализме 99% программистов.
Лучше бы задонатили ему - там на гитхабе реквезиты есть...
kzv (OP)
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
December 17, 2019, 10:47:10 AM
 #346

~

Спасибо вам за поддержку. Правда Бальтазар-то не при чем ) У него реально есть чему поучиться, по крайней мере в плане программирования на JavaScript.

OpenTrade - Open Source Cryptocurrency Exchange
investgroup
Full Member
***
Offline Offline

Activity: 644
Merit: 135


View Profile
December 17, 2019, 11:54:09 AM
 #347

Бальт еще и на жабе пишет?..

Вот кошмар то Wink))
privetvsem
Newbie
*
Offline Offline

Activity: 7
Merit: 0


View Profile
December 21, 2019, 11:12:34 PM
 #348

А теперь давайте создадим тоже самое только децентрализованную и без необходимости пополнять баланс для полных нод...
kzv (OP)
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
December 22, 2019, 07:21:26 AM
 #349

А теперь давайте создадим тоже самое только децентрализованную и без необходимости пополнять баланс для полных нод...

Давайте.
Чем вы можете помочь?

OpenTrade - Open Source Cryptocurrency Exchange
Balthazar
Legendary
*
Offline Offline

Activity: 3108
Merit: 1358



View Profile
December 22, 2019, 07:24:15 AM
 #350

А теперь давайте создадим тоже самое только децентрализованную и без необходимости пополнять баланс для полных нод...
А давайте создадим межпространственный туннель и отправимся в параллельную вселенную...

Примерно того же порядка пост. Можете - создавайте топик и делайте, нахрена шитпостить в чужих?
dzyk
Legendary
*
Offline Offline

Activity: 1792
Merit: 1028


dzyk.ru


View Profile WWW
January 06, 2020, 03:48:40 PM
 #351

Привет, kzv. Год назад в новогодние праздники был разговор о sqlite и о ядрах бирж.
Я тут накидал биржу прямо внутри PostgreSQL .. 2 функции всего купить битки за рубли и продать.
200 ордеров выполняются чуть больше чем за 2 секунды. Нормально?

Quote
1578325171347409
SystemSeconds:1578325171.347409
select buybtcR(783.10,0.00394383,2);select sellbtcR(197.55,0.00911647,2);
select buybtcR(277.77,0.00768230,2);select sellbtcR(628.87,0.00477397,2);
select buybtcR(952.23,0.00513401,3);select sellbtcR(717.30,0.00635712,2);
select buybtcR(16.30,0.00606969,2);select sellbtcR(804.18,0.00137232,3);
select buybtcR(129.79,0.00400944,3);select sellbtcR(218.26,0.00998924,2);
select buybtcR(612.64,0.00839112,3);select sellbtcR(524.29,0.00637552,1);
select buybtcR(292.52,0.00972775,2);select sellbtcR(769.91,0.00526745,2);
select buybtcR(283.31,0.00891529,1);select sellbtcR(919.03,0.00807725,2);
select buybtcR(526.00,0.00949327,3);select sellbtcR(663.23,0.00192214,2);
select buybtcR(64.17,0.00348893,3);select sellbtcR(63.10,0.00457702,3);
select buybtcR(902.21,0.00970634,1);select sellbtcR(539.76,0.00266666,1);
select buybtcR(512.54,0.00760249,2);select sellbtcR(39.28,0.00531606,3);
select buybtcR(930.81,0.00931835,1);select sellbtcR(738.53,0.00284293,1);
select buybtcR(687.86,0.00354049,1);select sellbtcR(880.08,0.00440104,1);
select buybtcR(228.97,0.00330337,3);select sellbtcR(686.67,0.00350360,3);
select buybtcR(657.30,0.00588640,1);select sellbtcR(923.97,0.00439560,1);
select buybtcR(684.22,0.00814767,2);select sellbtcR(215.82,0.00482491,3);
select buybtcR(147.66,0.00920128,3);select sellbtcR(431.95,0.00641081,1);
select buybtcR(786.00,0.00281059,1);select sellbtcR(226.11,0.00447034,3);
select buybtcR(556.44,0.00276235,3);select sellbtcR(906.80,0.00169607,3);
select buybtcR(495.44,0.00126075,2);select sellbtcR(935.00,0.00984752,2);
select buybtcR(749.77,0.00383188,1);select sellbtcR(232.26,0.00294160,2);
select buybtcR(152.39,0.00244413,3);select sellbtcR(793.47,0.00125475,3);
select buybtcR(74.53,0.00745071,3);select sellbtcR(521.56,0.00052529,1);
select buybtcR(797.80,0.00240062,1);select sellbtcR(967.41,0.00656564,1);
select buybtcR(93.48,0.00759735,2);select sellbtcR(78.23,0.00520210,3);
select buybtcR(461.42,0.00204655,3);select sellbtcR(755.58,0.00573319,3);
select buybtcR(999.99,0.00157807,3);select sellbtcR(125.47,0.00889956,3);
select buybtcR(870.54,0.00054058,3);select sellbtcR(923.07,0.00004162,2);
select buybtcR(163.13,0.00180372,1);select sellbtcR(819.70,0.00913027,2);
select buybtcR(579.43,0.00552485,2);select sellbtcR(99.64,0.00687387,2);
select buybtcR(304.30,0.00757294,1);select sellbtcR(877.61,0.00576971,2);
select buybtcR(35.42,0.00628910,1);select sellbtcR(925.38,0.00833239,3);
select buybtcR(979.43,0.00831037,1);select sellbtcR(983.60,0.00903366,2);
select buybtcR(163.97,0.00497259,3);select sellbtcR(76.99,0.00888949,2);
select buybtcR(629.48,0.00248044,1);select sellbtcR(316.87,0.00700620,1);
select buybtcR(74.16,0.00231428,3);select sellbtcR(651.13,0.00223656,3);
select buybtcR(280.04,0.00971466,2);select sellbtcR(113.28,0.00719269,1);
select buybtcR(944.32,0.00592540,3);select sellbtcR(847.68,0.00336351,3);
select buybtcR(344.94,0.00003231,2);select sellbtcR(233.89,0.00833243,2);
select buybtcR(481.94,0.00482950,3);select sellbtcR(182.56,0.00712087,1);
select buybtcR(413.98,0.00040864,2);select sellbtcR(637.64,0.00673936,2);
select buybtcR(609.11,0.00184622,2);select sellbtcR(328.37,0.00730729,3);
select buybtcR(920.91,0.00202213,2);select sellbtcR(257.27,0.00653130,3);
select buybtcR(260.50,0.00087644,1);select sellbtcR(93.74,0.00686125,1);
select buybtcR(576.69,0.00361601,1);select sellbtcR(288.78,0.00666557,3);
select buybtcR(329.64,0.00288379,3);select sellbtcR(3.58,0.00984363,3);
select buybtcR(188.20,0.00331479,2);select sellbtcR(918.93,0.00958637,1);
select buybtcR(121.14,0.00699075,3);select sellbtcR(774.27,0.00383832,1);
select buybtcR(861.92,0.00916273,3);select sellbtcR(548.04,0.00793657,3);
select buybtcR(909.64,0.00904933,2);select sellbtcR(576.20,0.00498144,1);
select buybtcR(864.58,0.00273911,1);select sellbtcR(848.94,0.00463662,1);
select buybtcR(180.42,0.00291053,2);select sellbtcR(139.06,0.00727550,1);
select buybtcR(838.13,0.00492422,1);select sellbtcR(221.97,0.00178208,1);
select buybtcR(138.24,0.00121259,2);select sellbtcR(931.90,0.00324807,2);
select buybtcR(836.83,0.00622095,2);select sellbtcR(334.97,0.00496074,3);
select buybtcR(608.88,0.00658831,3);select sellbtcR(72.55,0.00151230,2);
select buybtcR(363.60,0.00647207,2);select sellbtcR(91.15,0.00331386,2);
select buybtcR(583.57,0.00934495,2);select sellbtcR(761.78,0.00658747,3);
select buybtcR(883.04,0.00157272,3);select sellbtcR(207.84,0.00517715,3);
select buybtcR(829.94,0.00426199,3);select sellbtcR(326.01,0.00244327,3);
select buybtcR(984.84,0.00638654,1);select sellbtcR(136.07,0.00897560,2);
select buybtcR(783.28,0.00005409,3);select sellbtcR(114.67,0.00293678,3);
select buybtcR(49.16,0.00721006,2);select sellbtcR(707.91,0.00986467,2);
select buybtcR(865.18,0.00473894,3);select sellbtcR(382.90,0.00099559,2);
select buybtcR(809.10,0.00657120,1);select sellbtcR(53.42,0.00051508,2);
select buybtcR(692.08,0.00780868,3);select sellbtcR(589.64,0.00119111,1);
select buybtcR(595.05,0.00529899,2);select sellbtcR(888.72,0.00304285,1);
select buybtcR(609.73,0.00169820,2);select sellbtcR(596.20,0.00618925,2);
select buybtcR(70.09,0.00829808,1);select sellbtcR(169.65,0.00923728,1);
select buybtcR(826.77,0.00225491,3);select sellbtcR(878.28,0.00357193,3);
select buybtcR(659.15,0.00814909,2);select sellbtcR(778.26,0.00257469,3);
select buybtcR(308.16,0.00836104,1);select sellbtcR(612.44,0.00198021,2);
select buybtcR(782.26,0.00674605,1);select sellbtcR(401.19,0.00200352,1);
select buybtcR(231.00,0.00434009,1);select sellbtcR(154.72,0.00532846,2);
select buybtcR(380.21,0.00014579,2);select sellbtcR(737.41,0.00305408,1);
select buybtcR(552.32,0.00649659,3);select sellbtcR(809.79,0.00685986,1);
select buybtcR(645.89,0.00311950,3);select sellbtcR(843.91,0.00532960,3);
select buybtcR(518.51,0.00642692,2);select sellbtcR(718.87,0.00362154,1);
select buybtcR(152.88,0.00677812,2);select sellbtcR(685.72,0.00063561,2);
select buybtcR(700.30,0.00618958,1);select sellbtcR(5.71,0.00001125,3);
select buybtcR(655.37,0.00261570,3);select sellbtcR(341.35,0.00181161,3);
select buybtcR(653.30,0.00879009,1);select sellbtcR(186.26,0.00885014,3);
select buybtcR(828.96,0.00503461,3);select sellbtcR(191.11,0.00904170,1);
select buybtcR(868.92,0.00706067,1);select sellbtcR(932.48,0.00738959,1);
select buybtcR(551.44,0.00926576,3);select sellbtcR(552.57,0.00494407,1);
select buybtcR(814.14,0.00799646,2);select sellbtcR(995.30,0.00657201,3);
select buybtcR(874.31,0.00324541,3);select sellbtcR(759.32,0.00637771,1);
select buybtcR(262.78,0.00794910,2);select sellbtcR(166.95,0.00470564,2);
select buybtcR(873.02,0.00865085,3);select sellbtcR(611.98,0.00412483,1);
select buybtcR(538.56,0.00645602,2);select sellbtcR(32.96,0.00579021,2);
select buybtcR(832.61,0.00518151,3);select sellbtcR(489.81,0.00112648,1);
select buybtcR(814.35,0.00048500,1);select sellbtcR(452.12,0.00637656,3);
select buybtcR(247.03,0.00413078,1);select sellbtcR(717.60,0.00017457,2);
select buybtcR(582.68,0.00812947,3);select sellbtcR(995.16,0.00477361,2);
select buybtcR(640.77,0.00074260,1);select sellbtcR(219.79,0.00222602,1);
select buybtcR(737.94,0.00923513,2);select sellbtcR(850.59,0.00438562,3);
select buybtcR(899.09,0.00948911,2);select sellbtcR(536.74,0.00333569,2);
select buybtcR(949.82,0.00477551,1);select sellbtcR(967.28,0.00884318,2);
select buybtcR(780.22,0.00458039,1);select sellbtcR(257.59,0.00904781,2);
1578325173597722
SystemSeconds:1578325173.597722

kzv (OP)
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
January 06, 2020, 06:06:06 PM
 #352

Конечно нормально.
Если с такой скоростью будет работать реальная биржа, то это будет очень круто!

OpenTrade - Open Source Cryptocurrency Exchange
dzyk
Legendary
*
Offline Offline

Activity: 1792
Merit: 1028


dzyk.ru


View Profile WWW
January 07, 2020, 08:55:24 AM
Last edit: January 07, 2020, 05:35:21 PM by dzyk
 #353

Конечно нормально.
Если с такой скоростью будет работать реальная биржа, то это будет очень круто!
Не будет. Это 200 ордеров на пустом стакане. Вечером будет время, 10 тыс прогоню и посчитаю

dzyk
Legendary
*
Offline Offline

Activity: 1792
Merit: 1028


dzyk.ru


View Profile WWW
January 11, 2020, 09:47:14 AM
 #354

20 тыс ордеров проведено. после этого в стаканах осталось по 2 тыс не исполненных ордеров. публикую последние строки теста
Quote
select buybtcR(705.22,0.00740590,3);11121 mcs select sellbtcR(630.92,0.00802493,3); 26765 mcs
select buybtcR(185.07,0.00962241,3);29069 mcs select sellbtcR(435.84,0.00473537,2); 10746 mcs
select buybtcR(408.71,0.00244875,3);155708 mcs select sellbtcR(658.31,0.00410866,2); 11257 mcs
select buybtcR(576.58,0.00998753,1);11023 mcs select sellbtcR(583.55,0.00196305,2); 11201 mcs
select buybtcR(700.78,0.00913356,2);22160 mcs select sellbtcR(42.29,0.00914930,2); 22007 mcs
select buybtcR(782.88,0.00190901,1);11078 mcs select sellbtcR(585.37,0.00329407,1); 11190 mcs
select buybtcR(547.61,0.00391641,1);11045 mcs select sellbtcR(21.15,0.00649772,2); 11123 mcs
select buybtcR(266.02,0.00375255,1);11229 mcs select sellbtcR(676.89,0.00164506,1); 11248 mcs
select buybtcR(675.64,0.00207455,3);11109 mcs select sellbtcR(871.95,0.00921576,3); 11065 mcs
select buybtcR(785.30,0.00054354,2);177927 mcs select sellbtcR(700.23,0.00991648,2); 11193 mcs
select buybtcR(891.13,0.00927551,3);22193 mcs select sellbtcR(220.54,0.00568675,1); 22072 mcs
select buybtcR(612.18,0.00840720,1);11016 mcs select sellbtcR(261.95,0.00297831,2); 11230 mcs
select buybtcR(637.21,0.00190780,1);11089 mcs select sellbtcR(801.72,0.00492443,2); 11151 mcs

вот последний ордер из 20 тыс исполнился за 0.11 сек
в следующий раз запущу 100 копий приложения для тестирования, посмотреть не будет ли ерорлоков БД

kzv (OP)
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
January 11, 2020, 12:34:07 PM
 #355

А что именно делают эти селекты?
Там же еще и апдейты и инсерты должны быть...

OpenTrade - Open Source Cryptocurrency Exchange
dzyk
Legendary
*
Offline Offline

Activity: 1792
Merit: 1028


dzyk.ru


View Profile WWW
January 11, 2020, 06:03:17 PM
 #356

А что именно делают эти селекты?
Там же еще и апдейты и инсерты должны быть...

это функция, которая реализует алгоритм биржевой торговли. остается только вывести таблицы) балансы меняются автоматически, тк тоже в таблицах

все внутри БД

Balthazar
Legendary
*
Offline Offline

Activity: 3108
Merit: 1358



View Profile
January 11, 2020, 06:20:44 PM
Merited by Symmetrick (1)
 #357

А что именно делают эти селекты?
Там же еще и апдейты и инсерты должны быть...
Функции вызываются обычно селектом, если более сложной логики не нужно. А внутри функций может быть что угодно, хоть многотомник на питоне.

Любителям ноды по душе придется модуль plv8. А так, помимо родного plpgsql, поддерживается с полсотни всяких язычков, включая никому не нужные.

все внутри БД
Одна беда есть только, с масштабированием. Использование хранимых процедур автоматически создает большой геморрой, когда возникнет желание поднять производительность с помощью репликации и балансирования нагрузки. Чтобы такого не было, надо в самих процедурах предусмотреть работу с базой, недоступной на запись.

Для опенсорс проекта это всё избыточно, наверно... Кому нужен энтерпрайз - сам разработает.
dzyk
Legendary
*
Offline Offline

Activity: 1792
Merit: 1028


dzyk.ru


View Profile WWW
January 11, 2020, 08:41:21 PM
 #358

Энтерпрайз).... может кто-то я хочет Postgre форкнуть))) предыдущий за него топил)))

Coin-1
Legendary
*
Offline Offline

Activity: 2450
Merit: 2190



View Profile
January 12, 2020, 06:59:02 PM
 #359

А что именно делают эти селекты?
Там же еще и апдейты и инсерты должны быть...
Функции вызываются обычно селектом, если более сложной логики не нужно. А внутри функций может быть что угодно, хоть многотомник на питоне.

Далеко не все системы управления базами данных поддерживают вызовы функций селектом. Насколько я знаю, SQLite, которая используется в этой open-source бирже, точно не поддерживает такие вызовы из запросов.

Скорее всего, kzv имел в виду стандартные команды SQL:
1) select * from table
2) insert into *
3) update * where

Чтобы вести активные торги между достаточно большим количеством пользователей, ордера на покупки или продажу должны быстро создаваться, показываться и исполняться на бирже. Под "созданием" понимается добавление новой строки в таблицу базы данных (командой INSERT), под "показом" понимается считывание данных из базы (командой SELECT), под "исполнением" понимается изменение поля "статус" в строке (командой UPDATE). Также ещё разумно будет предусмотреть удаление ордера из таблицы (командой DELETE), для этого действия тоже требуется некоторое время.
Balthazar
Legendary
*
Offline Offline

Activity: 3108
Merit: 1358



View Profile
January 15, 2020, 08:47:21 PM
Last edit: January 15, 2020, 09:26:35 PM by Balthazar
Merited by Coin-1 (1), Symmetrick (1)
 #360

Речь идёт конкретно о постгресе, и в нем функции писать хоть на PHP. И можно хоть делитом вызывать, как и в любой СУБД, следующей стандарту SQL.

Далеко не все системы управления базами данных поддерживают вызовы функций селектом. Насколько я знаю, SQLite, которая используется в этой open-source бирже, точно не поддерживает такие вызовы из запросов.
Плохо известно.

create table test(ID, data);
insert into test(ID, data) values (1, x'0dfeed');
delete from test where lower(hex(data)) = '0deed';

Единственное отличие sqlite от "взрослых" СУБД в том, что у неё есть только встроенные функции и нет родного языка для написания новых функций. Однако, во многих случаях можно писать функции на том же языке, на котором пишется приложение, использующее sqlite. Для этого в api присутствуют функции sqlite3_create_function и sqlite3_create_window_function. При разработке на c/c++ не составляет проблем определить функцию, которой можно будет пользоваться в запросах, в sqlite для .Net присутствует аналогичная функциональность. То же верно и для модулей к иным средам и средствам разработки, однако node-sqlite в их число не входит. Если сильно надо, то можно написать расширение на c++ или использовать другой модуль sqlite, их для ноды много.
Pages: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [18] 19 20 21 22 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!