Jump to content
php.lv forumi

mysql dalisana - CI


goma smile

Recommended Posts

Neko viņš nav atklājis, tas, ka dati ir invalidi tiklīdz tie ir nolasīti un ar tiem strādā vairāk kā viens klients jau sen ir visai populārs fakts. Viņam tikai labpatīkas domāt, ka visi apkārt ir idiņi. 

 

Komplicētā biznesa loģika blogā... Stulbenis... 

Link to comment
Share on other sites

  • Replies 60
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Komplicētā biznesa loģika blogā... Stulbenis...

Var redzēt, ka tu ikdienā nodarbojies ar vizītkaršu veidošanu, ja tev no tevis nāk šādi izteicieni.

Piemēram, bloga platformā var ieviest sistēmu, kas automātiski flago nepiedienīgus komentārus, balstoties uz lietotāja atstāto balsu statistiskajiem datiem un tas viss var notikt reālā laikā - requestā, kurš apstrādā lietotāja balsojumu par komentāru. Un šeit var tikt izmantotas dažādas stratēģijas, tai skaitā eksponenciāla komentāra reitinga normalizēšana laikā vai citas stratēģijas, kuras ļauj iegūt jaunos statistiskos datus, balstoties tikai uz iepriekšējo datu starprezultātiem, nevis visiem balsojumiem.

 

P.S. Bet izskatās, ka tev nav nekāda matemātikas backgrounda un tavi griezti nevēlāmu komentāru automātiskā moderēšanā butu:

if ($negative_votes>5) $comment->flag_invisible();

P.P.S. Pie tam vēl izskatās, ka tu esi viens no tiem jefiņiem, kurš atbalsta biznesa loģikas rakstīšanu SQL-ā. Novēlu izturību tiem, kam būs jāuztur tavas rakstītās aplikācijas.

Edited by codez
Link to comment
Share on other sites

Žēl, ka man darbā 99% visu datubāžu (neskaitot manis no nulles rakstīto projektu) ir MyISAM (arī pasūtījumu/grāmatvedības sistēmas datubāze). Pārkonvertēju vienā projektā 4 tabulas uz InnoDB (produktu bilžu galerija un saistītās tabulas) un jau bija būtiskas problēmas.

Link to comment
Share on other sites

MyISAM diemžēl neizslēdz šī tipa kļūdas, bet ir viena problēma, ar MyISAM viņas pat nav iespējams saprātīgi atrisināt, jo MyISAMam nav new row lock mehānisma, un pat ne transakcijas. Vispār dīvaini, ka kāds vēl reālās produkcijas sistēmās izmanto MyISAM. Vienīgā cerība ir tāda, ka tādai lokālai uzskaites sistēmai paralēli būs ļoti maz lietotāju un kolīziju iespējamība minimāla.

Link to comment
Share on other sites

Pirmā ideja, kas prātā:

 

Uztaisam tabulu ar nosaukumu "locks" un kolonām: id, table_name, column.

 

Tad pielabojam datubāzes abstrakciju, lai, ja tabulas kolona ir aizslēgta, notiek sleep uz 10ms un tad retry.

 

Craziest thing I said today. :D

Link to comment
Share on other sites

Runājot par CI AR. Kā SQL abstrakcijas slānis manuprāt pilda ok savas funkcijas lielākoties (neliek bakstīt lieku kodu). Kur nu baigi vajag, tur var rakstīt plain SQL. 95% vienkāršam webam arī sastāv no šadiem kverijiem. 

$order['column1']='data1';
$order['column2']='data2';
$order['column3']='data3';
$this->db->insert('order',$order);

$user['column1']='data1';
$user['column2']='data2';
$this->db->where('user_id', $user_id);
$this->db->update('user',$user);
Link to comment
Share on other sites

Koa? Tieši otrādi.

 

Pietam šāda veida abstrakcija ļauj darīt tādas lietas kā:

 

~~~

<?php

 

$qs = Post::select()

$qs->where("x", "=", 1)

if ($foo) {

$qs->where("y", "=", 2)

}

$qs->execute()

~~~

Link to comment
Share on other sites

Tavs piemērs ir intuitīvs, kaut ko ne tā saprati.

Tradicionāls SQL UPDATE ir šāds: "UPDATE table SET x = y WHERE blabla", attiecīgi būtu loģiski, ja abstrakcijā tas izskatītos ~šādi:

$this->db->update('user', $data)
    ->where('user_id', $user_id)
    ->execute();
Tavs piemērs, attiecīgi:

$stmt = Post::select() // kādā sakarā "Post"?
    ->where('x', '=', 1);

if ($foo)
{
    $stmt->where('y', '=', 2);
}

$stmt->execute();
Edited by jurchiks
Link to comment
Share on other sites

> // kādā sakarā "Post"?

 

Post ir datubāzes modelis, kas atbild par postus.

 

Mana doma ir tāda, ka tu vari čeinot funckijas un to darīt random secībā, ja tas konkrētajam piemēram ir loģiskāk.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...