LINUX.ORG.RU

Посоветуйте базу данных для форума


0

0

Хочу сделать для локалки простенький форум. Подскажите, какую базу данных лучше выбрать: mysql или sqlite? В sqlite хорошая интеграция в С, но мне не нравится, что все данные хранятся в одном файле, что грозит тормозами при значительном количестве сообщений. Существующие движки использовать не хочу, т.к. они на php, который надо учить (а некогда, и нет никого, кто его знает).

☆☆☆☆☆

«т.к. они на php, который надо учить»

Простенький форум как раз легче написать на php.

Mysql ничего сложного, c php все очень хорошо, удобно.
+ много можеш найти инфы даже по запросу «форум на php+mysql», а также почти в любой книжке по php идет пример простейщего форума-гостевушки.

Хотя в данном случае может быть оптимальней взять готовый движок форума.

Megamozg
()

Если уж хочется писать именно самому, то советую использовать какой-нибудь фреймворк. Например, CodeIgniter. Он очень прост и удобен для небольших проектов.

Wizard_ ★★★★★
()

>В sqlite хорошая интеграция в _С_

ой ой, что же это будет!? :]

hizel ★★★★★
()
Ответ на: комментарий от Wizard_

Ах, да, СУБД. В CodeIgniter вот что говорят насчёт поддержки:

http://codeigniter.com/user_guide/general/requirements.html

A Database is required for most web application programming. Current supported databases are MySQL (4.1+), MySQLi, MS SQL, Postgres, Oracle, SQLite, and ODBC.

В случае чего, веб-приложение будет достаточно просто перенести с одной СУБД на другую. Решается этот вопрос использованием ActiveRecord:

http://codeigniter.com/user_guide/database/active_record.html

CodeIgniter uses a modified version of the Active Record Database Pattern. This pattern allows information to be retrieved, inserted, and updated in your database with minimal scripting. In some cases only one or two lines of code are necessary to perform a database action. CodeIgniter does not require that each database table be its own class file. It instead provides a more simplified interface.

Beyond simplicity, a major benefit to using the Active Record features is that it allows you to create database independent applications, since the query syntax is generated by each database adapter. It also allows for safer queries, since the values are escaped automatically by the system.

А что касается выбора под задачу «для локалки простенький форум», то ответ очевиден — да что угодно можно использовать. Любую легковесную СУБД, требующую наименьшее количество движений для работы и обслуживания.

Wizard_ ★★★★★
()
Ответ на: комментарий от Wizard_

Спасибо, посмотрю codeigniter. Но, боюсь, без знаний php с ней вряд ли что-нибудь хорошее получится.

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

PHP - это простой язык с Си-подобным синтаксисом, написанный не осилившим Perl. Там как бы нечего особенно учить. Сдается мне, что для Си есть более достойные области применения.

ef37 ★★
()
Ответ на: комментарий от ef37

Сдается мне, что для Си есть более достойные области применения.

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

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

>Почему же, веб-приложения на С тоже неплохо получаются :) Просто, я доклепал свой файл-менеджер (правда, не до конца - надо еще добавить авторизацию), теперь хочу с форумом потренироваться в свободное время.

Скажем так, большой производительности на приличной загрузке от Си-шных CGI ты не добьешься. Тем более на apache. Но для общего развития может и полезно, наверное, хотя несколько экзотично.

ef37 ★★
()
Ответ на: комментарий от ef37

Скажем так, большой производительности на приличной загрузке от Си-шных CGI ты не добьешься. Тем более на apache.

Так ведь с таким же успехом эти CGI могут и на nginx работать.

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

В свете последней покупки Oracle, сдается мне, PostgreSQL живее всех живых.

ef37 ★★
()
Ответ на: комментарий от Eddy_Em

>Так ведь с таким же успехом эти CGI могут и на nginx работать.

nginx никогда не поддерживал CGI и не будет никогда его поддерживать.
Сысоев в конфе гдето об этом писал.


возможно вы путаете с FastCGI?


почитайте:

http://ru.wikipedia.org/wiki/CGI
и
http://ru.wikipedia.org/wiki/FastCGI

C под CGI будет работать наверное даже медленнее чем php (mod_php/php-fastcgi)

Effect
()
Ответ на: комментарий от Effect

nginx никогда не поддерживал CGI и не будет никогда его поддерживать.

o_O

Так получается, что на nginx только статические html-страницы можно делать? В принципе, я с ним никогда не работал, так что, даже не представляю, какие у него вообще возможности.

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

>Так получается, что на nginx только статические html-страницы можно делать?

Нет, почему же. просто технология CGI - морально устарела. и является очень медленной и ресурсоемкой.

CGI != FCGI (FastCGI)

это совершенно разные технологии.

к nginx отлично цепляется php через fcgi, я например писал движок для одного проекта на perl'е, он был сделан в виде fcgi сервера, и отлично работал с nginx

Effect
()
Ответ на: комментарий от Effect

просто технология CGI - морально устарела.

Первый раз такое слышу: работает, и очень быстро. По крайней мере, уж точно быстрее интерпретируемых языков.

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

>Первый раз такое слышу: работает, и очень быстро.

как вы измеряли? «на глаз» ?

когда вы запускаете программу как CGI - то апачу приходится запускать процесс с вашей программой, и читать\писать в ее stdin\stdout

надеюсь вы понимаете, что порождение процесса - достаточно ресурсоемкая операция (конечно, при 1-2 запросах в секунду это незаметно)

fastcgi работает несколько по другому. поэтому читайте документацию!

Effect
()

Простенький форум я бы сделал на NoSQL базе

dizza ★★★★★
()
Ответ на: комментарий от Eddy_Em

>Первый раз такое слышу: работает, и очень быстро. По крайней мере, уж точно быстрее интерпретируемых языков.

На 2-3 ГГц процессоре и паре гигабайт памяти при десятке запросов в секунду что угодно быстро работает. Нагрузите как следует и посмотрите, что получится.

Трава, курнув которой, бизнес-логику писали на Си, закончилась в 90-х.

ef37 ★★
()
Ответ на: комментарий от Effect

fastcgi работает несколько по другому. поэтому читайте документацию!

Посмотрел. Мои сишные CGI можно и к fastcgi прикрутить :)

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

>Мои сишные CGI можно и к fastcgi прикрутить

а я и не говорил, что нельзя. я говорил, что _CGI устарел и медленен_ и _C с CGI не факт, что будет быстрее mod-php+zend optimizer_

- а если не видно разници, зачем платить больше ©

Effect
()
Ответ на: комментарий от Eddy_Em

Про него я, честно говоря, и не думал: мне кажется, что это уже вымирающий вид.


'Форум на C'
'Постгресс - вымирающий вид'
'Сложно учить PHP'

Ой-ой-ой. Просто полный ой какой-то.

bibi
()
Ответ на: комментарий от Effect

а я и не говорил, что нельзя. я говорил, что _CGI устарел и медленен_ и _C с CGI не факт, что будет быстрее mod-php+zend optimizer_

Он те то что 'не факт' - он железно будет медленнее. И без всякого зенда.

bibi
()
Ответ на: комментарий от bibi

>Он те то что 'не факт' - он железно будет медленнее. И без всякого зенда.


я не поленился, и проверил. итак.


test.c

-----------------
#include <stdio.h>
int main(void) {
printf(«Content-Type: text/plain;charset=us-ascii\n\n»);
printf(«Hello world\n\n»);
return 0;
}
------------------


test.php
------------------
<?php
echo «Hello world\n\n»;
?>
-------------------

тестим:

ab -n 10000 -c 10 http://test/test.cgi (и пхп соответственно)




итак, cgi нам выдал:

Server Software: Apache/2.2.3
Server Hostname: test
Server Port: 80

Document Path: /test.cgi
Document Length: 13 bytes

Concurrency Level: 10
Time taken for tests: 39.249839 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Total transferred: 1815040 bytes
HTML transferred: 130000 bytes
Requests per second: 254.78 [#/sec] (mean)
Time per request: 39.250 [ms] (mean)
Time per request: 3.925 [ms] (mean, across all concurrent requests)
Transfer rate: 45.15 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 1
Processing: 3 38 132.2 15 1469
Waiting: 3 37 130.1 15 1469
Total: 3 38 132.2 15 1469

Percentage of the requests served within a certain time (ms)
50% 15
66% 18
75% 19
80% 22
90% 33
95% 54
98% 637
99% 870
100% 1469 (longest request)


а вот php



Server Software: Apache/2.2.3
Server Hostname: test
Server Port: 80

Document Path: /test.php
Document Length: 11 bytes

Concurrency Level: 10
Time taken for tests: 7.723490 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Total transferred: 2021212 bytes
HTML transferred: 110066 bytes
Requests per second: 1294.75 [#/sec] (mean)
Time per request: 7.723 [ms] (mean)
Time per request: 0.772 [ms] (mean, across all concurrent requests)
Transfer rate: 255.45 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 2 2.4 2 23
Processing: 1 4 48.3 4 4833
Waiting: 0 2 48.3 2 4828
Total: 5 7 48.4 6 4843

Percentage of the requests served within a certain time (ms)
50% 6
66% 6
75% 7
80% 7
90% 8
95% 12
98% 13
99% 14
100% 4843 (longest request)



чувствуете разницу?
да, это без zend optimazer'а еще..... лень ставить его сейчас, позже еще с оптимайзером потестю.


ИТОГ:

mod_php в 6 раз отработал быстрее, чем C через CGI

CGI сожрал всю производительность, которую дал С.



PS.

$uname -a
Linux localhost.localdomain 2.6.18-164.el5 #1 SMP Thu Sep 3 03:28:30 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux

$php -v
PHP 5.3.0 (cli) (built: Jul 19 2009 18:22:52)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies


Effect
()

> В sqlite хорошая интеграция в С, но мне не нравится, что все данные хранятся в одном файле, что грозит тормозами при значительном количестве сообщений.

А mysql сколько файлов использует?

Существующие движки использовать не хочу, т.к. они на php, который надо учить

Зачем знать PHP? Движки на то они и движки, там всё за тебя уже сделали. Любой школьник осилит. Причем их тыщы, выбирай на вкус.

И вообще, ты давно из анабиоза то?

anonymous
()
Ответ на: комментарий от Effect

чувствуете разницу? да, это без zend optimazer'а еще..... лень ставить его сейчас, позже еще с оптимайзером потестю.

Вообще то я об этом и писал :) CGI vs mod_php - даже не смешно.

bibi
()
Ответ на: комментарий от KRoN73

Да хватит вам расхваливать пыхпых. trashymichael правильно заметил: что вы понимаете в религии? ;)

Я, вообще-то, не программист, и уж тем более не веб-программист. Программированием занимаюсь только из-за необходимости (надо же не только железяку собрать, но и заставить ее работать), ну и плюс это мое хобби. Ну а веб-приложеними (также отчасти в качестве хобби) я занялся первоначально из-за необходимости создания веб-интерфейса для моих железяк. Потом уже появился интерес сделать что-нибудь еще (хоть тот же html-файлменеджер для тех, у кого нет возможности подключиться к моему компьютеру по ftp или ssh).

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

>Да хватит вам расхваливать пыхпых

Кхм. И давно приведение реальных цифр и фактов стало «расхваливанием»?

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

И давно приведение реальных цифр и фактов стало «расхваливанием»?

Я понимаю, что он быстрее. Но повторяю: прочитайте дальше мое предыдущее сообщение.

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

>Но повторяю: прочитайте дальше мое предыдущее сообщение.

Так я по этому поводу вообще ничего не писал.

...

Но если бы мне сейчас пришлось заниматься embedded с ограниченными ресурсами, я бы web-серверную часть делал бы на Forth. Благо, есть для танцев с бубном готовое и много лет используемое решение: http://www.eserv.ru/

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Зачем же embedded. Обычный промышленный x86, к которому по RS232 подсоединяются модули PIC-контроллеров (думаю, в скором времени будем переходить на промышленные ARM или MIPS-компьютеры: и намного дешевле, и энергопотребление на порядок меньше, и размер небольшой). Ничего сложного. Контроллеры обслуживаются программой, работающей либо в качестве демона, либо в качестве CGI. Взаимодействие с браузером - посредством cgi либо напрямую, либо через FIFO.

Eddy_Em ☆☆☆☆☆
() автор топика

> Да хватит вам расхваливать пыхпых.

пишите ваш форум в виде html+js+один_fcgi_процесс на Си, тестируйте и выкладывайте - даю гарантию, что все здешние любители ПыхПых-а сделаю «буль-буль-пшшш» [звуки слива])))

r0mik
()
Ответ на: комментарий от r0mik

пишите ваш форум в виде html+js+один_fcgi_процесс на Си, тестируйте и выкладывайте - даю гарантию, что все здешние любители ПыхПых-а сделаю «буль-буль-пшшш» [звуки слива])))

Да мне без разницы, что они сделают ;)

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

это будет интересно еще и с т.з. практики написания отказоустойчивых и высоконагруженных fcgi-приложений, что само по себе интересно и не тривиально... короче одни только плюсы.....

r0mik
()
Ответ на: комментарий от r0mik

>пишите ваш форум в виде html+js+один_fcgi_процесс на Си

Eserv - уже готовое решение. И производительное, и скриптовое, и опенсорсное :)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Eserv - уже готовое решение.

Что-то я на указанном вами сайте ничего, кроме почтового сервера для мастдая, не нашел.

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от KRoN73

Там почтовый сервер и прокси. Web-сервер в них встроенный, они веб-сервером, как бы, управляются :)

Можно нескромный вопрос: какое отношение к моей задаче имеет мастдайный сервер?

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

SP-Forth, на котором написан Eserv есть под Linux.

KRoN73 ★★★★★
()

1) Если большая не нагрузка, а количество обращений к бд - sqlite не твой выбор. Всё по тому что он требует доступа из одного потока на запись.
2) CGI давно убили, ибо он инициализирует всё окружения с нуля при каждом обращении. Используй FCGI - libfcgi/libfcgi++.
3) Писать «простенький» форум на С это всё-равно что писать большой форум на php.
4) Лушчий вариант - заюзать готовый форум на PHP или накидать свой или на django(если скорость не важна да и с английским плохо), или на turbogears2(если хочется больше скорости), или на Pylons(если хочется всего и при этом не запутанную архитектуру, позволяющую делать всё что хочется). Во всех случаях - пайтон. Изучить его реально за 10 часов(я за 3 дня изучил, в сумме ~8 часов). Изучение фреймворка - дня 2 на джанго, 3-4 на TG2 или Pylons.
Советую Pylons.

tia
()
Ответ на: комментарий от tia

Спасибо, хоть один дельный совет. Посмотрю fcgi - может, в дальнейшем пригодится. Ну а форум, если некогда будет писать, можно и на фреймворке сварганить (если найду кого-нибудь, кто захочет этот фреймворк изучать, чтобы ему спихнуть).

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от tia

>Изучить его реально за 10 часов(я за 3 дня изучил, в сумме ~8 часов). Изучение фреймворка - дня 2 на джанго, 3-4 на TG2 или Pylons.

Сколько ж можно пропагандировать этот примитивный язык? Вы вообще программист? Потому что нормальные программисты всегда выбирают под конкретные задачи конкретные языки, а не пишут на лоре во всех тредах: «Forth - масдай! C++ рулит!», «Delphi не рулит, Forth - эпик вин». Успокойтесь, ваш пайтон - это дешевое подделие для тех, кто не осилил профессиональные языки.

anonymous
()
Ответ на: комментарий от anonymous

>Потому что нормальные программисты всегда выбирают под конкретные задачи конкретные языки

сами себе противоречите
быстро и решительно назовите парочку web frameworks for pure-c

hizel ★★★★★
()
Ответ на: комментарий от hizel

быстро и решительно назовите парочку web frameworks for pure-c

Уже упомянутый здесь fcgi? Или, может быть, какой-нибудь libcurl? Смотря что вы подразумеваете под фреймворком.

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

Цитирую из википедии:

Фреймворк — в информационных системах структура программной системы; программное обеспечение, облегчающее разработку и объединение разных компонентов большого программного проекта. В его состав могут входить вспомогательные программы, библиотеки кода, язык сценариев и проч.

Eddy_Em ☆☆☆☆☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.